Android 使用jsoup搜索表
如何使用jsoup将整张桌子打包到Android中 让输入:Android 使用jsoup搜索表,android,html-table,jsoup,Android,Html Table,Jsoup,如何使用jsoup将整张桌子打包到Android中 让输入: <table> <tr> <th>name</th> <th>age</th> </tr> <tr> <td>john doe</td> <td>25</td> </tr> <tr> <td>xxx yyy </td> <td>28&
<table>
<tr>
<th>name</th>
<th>age</th>
</tr>
<tr>
<td>john doe</td>
<td>25</td>
</tr>
<tr>
<td>xxx yyy </td>
<td>28</td>
</tr>
名称
年龄
无名氏
25
xxx yyy
28
输出:
姓名年龄
约翰·杜25
xxx yyy 28
.Btw,您不必手动进行输入。我需要从我的网站上获取表格。现在我无法尝试,但您可以使用以下内容:
Elements ths = document.select("table tr th");
ths.html()
Elements tds = document.select("table tr td");
tds.html()
我不知道返回字符串的格式,它们是否用空格分隔,但您可以试试
如果要单独管理tds输出,您可以迭代元素并获取单个html值,您可以使用元素
的text()
方法:
final String html = "<table>\n"
+ "<tr>\n"
+ "<th>name</th>\n"
+ "<th>age</th>\n"
+ "</tr>\n"
+ "<tr>\n"
+ "<td>john doe</td>\n"
+ "<td>25</td>\n"
+ "</tr>\n"
+ "<tr>\n"
+ "<td>xxx yyy </td>\n"
+ "<td>28</td>\n"
+ "</tr>";
Document doc = Jsoup.parse(html);
Element table = doc.select("table").first(); // Take first 'table' found
System.out.println(table.text()); // Print result
如果您有多个表:
for( Element e : doc.select("table") )
{
System.out.println(e.text());
}
或者从JDK8开始:
doc.select("table").forEach((e) ->
{
System.out.println(e.text());
});
获取JS内容(参见注释)
Jsoup.parse(…)
替换为Jsoup.connect(“此处的url”).get()
。这将连接到网站,解析其内容,您可以像往常一样继续–超时、用户代理、登录数据、cookies等也可以设置。我看到您提到的页面存在一个问题:它严重依赖Javascript,例如,表中没有纯html–Jsoup无法处理JS。但是也有解决办法,我会在我的答案中编辑一些方法。如果你的问题解决了,请接受解决你问题的答案。
doc.select("table").forEach((e) ->
{
System.out.println(e.text());
});