7

我正在实现一个网络机器人,它必须从页面中获取所有链接并选择所需的链接。除了遇到链接位于“表”或“跨度”标签内的问题外,我一切正常。这是我的代码片段:

Document doc = Jsoup.connect(url)
    .timeout(TIMEOUT * 1000)
    .get();
Elements elts = doc.getElementsByTag("a");

这是示例 HTML:

<table>
  <tr><td><a href="www.example.com"></a></td></tr>
</table>

我的代码不会获取此类链接。使用 doc.select 也无济于事。我的问题是,如何从页面中获取所有链接?

编辑:我想我知道问题出在哪里。我遇到问题的页面写得很糟糕,HTML 验证器会抛出大量错误。这会导致问题吗?

4

2 回答 2

5

一般来说,Jsoup 可以处理大多数糟糕的 HTML。在 JSoup 使用它时转储 HTML(您可以简单的输出doc.toString())。

提示:使用select()代替getElementsByX(),它更快更灵活。

Elements elts = doc.select("a"); (编辑)

以下是关于 Selector-API 的概述:http: //jsoup.org/cookbook/extracting-data/selector-syntax

于 2012-09-21T10:16:00.583 回答
0

试试这个代码

 String url =  "http://test.com";
 Document doc = null;
        try {
            doc = Jsoup.connect(url).get();
            Elements links = doc.select(<i>"a[href]"<i>);
            Element link;

                for(int j=0;j<150;j++){
                    link=links.get(j);
                    System.out.println("a= " link.attr("abs:href").toString() ); 
            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
于 2017-11-26T15:18:25.717 回答