JSoup解析问题
我正在解析一个网站的Android应用程序,但我似乎无法让Jsoup工作。JSoup解析问题
我试图解析这个网站:刚才
我的代码是:
Document doc = null;
try{
doc = Jsoup.connect("URL").get();
Elements tds = doc.select("table.tr>td");
for (Element td : tds) {
String tdText = td.text();
System.out.println(tdText);
}
}
目前,它不返回任何东西,但如果我打印“DOC”它返回整个网站。
我想提取以下信息: Drower,E. S. (Ethel Stefana), Lady, b。 1879,带或不带& nbsp。
但我无法缝合才能使其工作。
感谢您的帮助!
你有选择错误的:它选择与tr
类table
元素的td
孩子,而你可能想td
细胞tr
排在table
。我相信你可以通过使用"td"
作为选择。
但是,这有点过于通用,因为它会选取表格中的每个单元格。如果您需要的单元格始终是该表格行中的第三个单元格,则可以细化选择器以仅挑选那些:"td:eq(2)"
。你应该真的得到JSoup selectors的诀窍,并试验一下,看看你能够将从文档中提取的数据限制到你真正需要的元素。
为了获得第四单元的<script>
元素,你可以使用沿着下面的代码片段的东西后的文字:
Element td = doc.select("td:eq(3)").first();
System.out.println(td.text());
,因为从我的一个小实验,似乎里面<script>
标签的JavaScript代码当询问包含其中一个元素的文本时跳过。
但是,您将使用for
循环而不是first
,因为第四个单元格与文档中的行数相同,并且您拥有很多这样的单元格。
感谢您的帮助,我设法通过这一位代码提取了我需要的信息: String td = doc.select(“tr:has(td)”)。text(); \t \t System.out.println(td); – Tbuermann 2012-03-12 16:21:51
@ tbone24欢迎您。如果答案有帮助,请考虑加注或接受。 – 2012-03-12 18:14:11
是不是'.'类?孩子们是'foo> bar> baz'。 – 2012-03-11 21:32:55
我的印象是你可以混合他们。应该是什么,而不是混合的例子。我真的很茫然。 – Tbuermann 2012-03-11 22:25:58
当然,你可以混合它们,但你的选择器仍然是错误的。你正在选择'tr'类的'table'元素的'td'子元素。相反,你可能需要在'table'的'tr'行中放入'td'单元格。我相信你可以通过使用''td''作为选择器来获得它们。然而,很难提取所需的信息,因为包含它的'td'没有'id'或任何其他独特的特性,可能会将它与页面中的其他'td'元素隔离开 - 也许它总是该特定表中第二行的第三个单元格? – 2012-03-11 23:07:43