JSoup同时提取href的绝对url和div标签数据

时间:2014-12-25 16:27:06

标签: java jsoup

我想从网站旁边(相邻)提取两个标签,第一个标签是href,它应该被提取为绝对网址。第二个标签是div标签,我应该提取 里面的数据。

我希望输出如下

100 USD http:\ www.somesite ..............

200 usd http:\ www.thesite .............

为什么呢?因为稍后我会将它们插入到数据库的表中。

我尝试使用以下代码,但我无法获得绝对网址,此外我无法删除标记,而我只想提取数据(没有标记)。

    Document doc = Jsoup.connect("http://www.bezaat.com/ksa/jeddah/cars/all/1?so=77").get();
    for (Element link : doc.select("div.rightFloat.price,a[abs:href].more-details"))
    {

    String absHref = url.attr("abs:href");
    String attr = link.absUrl("href");
    System.out.println(link);

   }  

如果我尝试使用        的System.out.println(link.text())  在我的代码中,我将完全错过超链接!

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

我不认为Jsoup css选择器组合器(即选择器中的逗号)保证输出中的排序。至少我不会指望它,即使你发现你期望的顺序中的两个元素。我不会使用逗号选择器,而是首先遍历容纳您感兴趣的相邻div的外部容器。然后,您可以在每个div中访问价格和链接。

像这样的事情。请注意,这不在我的脑海中且未经测试!

Document doc = Jsoup.connect("http://www.bezaat.com/ksa/jeddah/cars/all/1?so=77").get();
for (Element adDiv : doc.select("div.category-listing-normal-ad")){

  Element priceDiv = adDiv.select("div.rightFloat.price").first();
  Element linkA = adDiv.select("a.more-details").first();

  System.out.println(priceDiv.text() + " " + linkA.absUrl("href"));

}