Web使用JSOUP抓取网页上的链接

时间:2018-03-29 11:49:47

标签: java api web-scraping jsoup

我正在使用JSoup来抓取网页。任何人都可以帮助我或指出我如何解析此链接中包含的文本的正确方向。目前我正在为每个循环运行一个,它将迭代元素,但不会找到链接并在1次迭代后停止。

HTML ..

<div>
  <div style = a bunch of different inline styles here>
    <div class = "_6d3hm _mnav9">
      <div class = "_mck9w _gvoze _tn0ps">
        <a href= "the link i want">_</a>
      </div>
      <div class = "_mck9w _gvoze _tn0ps">
        <a href= "another link i want">_</a>
      </div>
      <div class = "_mck9w _gvoze _tn0ps">
        <a href= "another link i want">_</a>
      </div>
    </div>
    <div class = "_6d3hm _mnav9">
      <div class = "_mck9w _gvoze _tn0ps">
        <a href= "the link i want">_</a>
      </div>
      <div class = "_mck9w _gvoze _tn0ps">
        <a href= "another link i want">_</a>
      </div>
      <div class = "_mck9w _gvoze _tn0ps">
        <a href= "another link i want">_</a>
      </div>

这是我使用Soup的java。我已经尝试了一堆不同的标签......

for (Element row : doc.select("div")) {
            System.out.println("iterating");
            final String link = row.getElementsByTag("._mck9w _gvoze _tn0ps").text();
            System.out.println(link);
        }

有没有人知道如何抓取我在HTML ???中提到的每个链接

1 个答案:

答案 0 :(得分:2)

错误在这一行:row.getElementsByTag("._mck9w _gvoze _tn0ps")。 您正在寻找标记a及其属性href,因此您的代码应如下所示:

for (Element row : doc.select("div")) {
    System.out.println("iterating");
    final String link = row.getElementsByTag("a").attr("href");
    System.out.println(link);
}

如果你想使用这个事实,那个div有给定值的class属性你可以尝试这样的事情:

for(Element e: doc.select("div._mck9w._gvoze._tn0ps > a")) {
    System.out.println(e.attr("href"));
};

jsop documentation

more about css selectors