在Android中解析HTML,可以使用Jsoup
库,它是一个用于解析和操作HTML的便捷API。以下是一个简单的例子,展示了如何使用Jsoup来提取HTML中的内容。
1.首先,在build.gradle
文件中添加Jsoup的依赖:
dependencies {
implementation 'org.jsoup:jsoup:1.13.1'
}
2.使用Jsoup解析HTML中的表格,效果图如下:
3.代码如下:
String htmlRead = "<table style=\"width:736px;\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#E4E4E4\"><tr bgcolor=\"#F2F2F2\"><th width=\"21%\">文章名称</th><th width=\"43%\">最新章节</th><th width=\"13%\">作者</th><th width=\"8%\">字数</th><th width=\"9%\">更新</th><th width=\"6%\">状态</th></tr><tr bgcolor=\"#FFFFFF\"><td class=\"L\"><a href=\"/quanwen/71215/\" title=\"斗破苍穹简介\">[简介]</a><a href=\"/xs71215/\" target=\"_blank\">斗破苍穹</a></td><td class=\"L\"><a href=\"/xs71215/\" target=\"_blank\"> 《:斗帝之路》手游·角色传记(下)</a></td><td class=\"C\">天蚕土豆</td><td class=\"R\">1520040</td><td class=\"C\">05-28</td><td class=\"C\">完结</td></tr><tr bgcolor=\"#FFFFFF\"><td class=\"L\"><a href=\"/quanwen/87112/\" title=\"末世:从加点开始无限进化简介\">[简介]</a><a href=\"/xs87112/\" target=\"_blank\">末世:从加点开始无限进化</a></td><td class=\"L\"><a href=\"/xs87112/\" target=\"_blank\"> 第一千二百六十三章 一切,靠实力说话!</a></td><td class=\"C\">猪小小</td><td class=\"R\">5260110</td><td class=\"C\">07-16</td><td class=\"C\">连载</td></tr><tr bgcolor=\"#FFFFFF\"><td class=\"L\"><a href=\"/quanwen/85927/\" title=\"人道大圣简介\">[简介]</a><a href=\"/xs85927/\" target=\"_blank\">人道大圣</a></td><td class=\"L\"><a href=\"/xs85927/\" target=\"_blank\"> 第两千三百七十五章 逆子</a></td><td class=\"C\">莫默</td><td class=\"R\">18475040</td><td class=\"C\">07-16</td><td class=\"C\">连载</td></tr></table>";
Document doc = Jsoup.parse(htmlRead);
Element tableElement = doc.select("table").first();
Table table = new Table();
boolean hasTd = false;
for (Element rowElement : tableElement.select("tr")) {
TableRow row = new TableRow();
hasTd = false;
for (Element cellElement : rowElement.select("td")) {
hasTd = true;
row.addCell(cellElement.text());
}
if (hasTd)
table.addRow(row);
}
public class TableRow {
private List<String> cells = new ArrayList<>();
public void addCell(String cell) {
cells.add(cell);
}
}
public class Table {
private List<TableRow> rows = new ArrayList<>();
public void addRow(TableRow row) {
rows.add(row);
}
}
4.获取属性方法(比如获取上面td中的a的href值):
for (Element aElement : cellElement.select("a")) {
Log.e("html", aElement.attr("href"));
}