我正在尝试从网页中获取多个元素。为此,我决定使用Jsoup。下图显示了我想要提取的部分html部分:
我需要获得标有红色的元素。我可以得到的第一个名字:
String url = "";
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("td.DifFlSb");
for(Element x:links){
System.out.println(x.getElementsByTag("a").first().text());
}
我的问题是我不知道如何在第二个td
中提取数据。我尝试使用正则表达式,但没有。 td
没有类或ID,所以我不知道如何制作它。
答案 0 :(得分:0)
您可能想要使用Elements secondTds = doc.select("tr td+td");
这将定位第二个td
。这是有效的,因为select
方法接受cssQuery
格式。
示例:强>
tr td+td {color: red;}
<table>
<tr>
<td>Content td 1</td>
<td>Content td 2</td>
</tr>
<tr>
<td>Content td 1</td>
<td>Content td 2</td>
</tr>
</table>
答案 1 :(得分:0)
您可以使用Jsoup和一些Java轻松解决这个问题。
Elements trs = doc.select("tr");
for (Element tr : trs){
Elements tds = tr.select("td");
if (tds && tds.size() > 0){
Element secondTd = tds.get(1);
//do whatever you need to do with td
}
}
请注意,我的上述代码未经测试。我没有Java环境,因此只需在Stackoverflow的答案框中输入。
BTW:您应该始终将代码和HTML直接放在您的问题中。还要进入CSS,这是熟悉使用JSoup进行抓取时的工具。
答案 2 :(得分:0)
您可以使用以下代码选择a
标记的父元素的第一个兄弟:
for(Element x:links){
System.out.println(x.getElementsByTag("a").first().text());
System.out.println(x.getElementsByTag("a").first().parent().siblingElements().first().text());
}