Hyperlink Jsoup从页面获取所有链接
我正在实现一个网络机器人,它必须从一个页面获取所有链接并选择所需的链接。除了遇到链接位于“表”或“span”标记内的问题外,我的所有功能都正常工作。 以下是我的代码片段:Hyperlink Jsoup从页面获取所有链接,hyperlink,jsoup,Hyperlink,Jsoup,我正在实现一个网络机器人,它必须从一个页面获取所有链接并选择所需的链接。除了遇到链接位于“表”或“span”标记内的问题外,我的所有功能都正常工作。 以下是我的代码片段: Document doc = Jsoup.connect(url) .timeout(TIMEOUT * 1000) .get(); Elements elts = doc.getElementsByTag("a"); 下面是示例HTML: <table> <tr><td&g
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验证程序抛出了大量错误。这会导致问题吗?一般来说,Jsoup可以处理大多数糟糕的HTML。在JSoup使用HTML时转储它(您可以简单地输出
doc.toString()
)
提示:使用select()
代替getElementsByX()
,它更快更灵活
Elements elts=doc.select(“a”)代码>(编辑)
下面是关于选择器API的概述:试试这段代码
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();
}
stringurl=”http://test.com";
单据单据=空;
试一试{
doc=Jsoup.connect(url.get();
Elements links=doc.select(“a[href]”);
元素链接;
对于(int j=0;jSorry,我不明白这句话:“在JSoup使用HTML时转储它(您可以简单地输出doc.toString())”。您能写得更清楚吗?打印文档(其中包含解析的HTML,因为JSoup将使用它来选择元素),例如通过System.out.println(doc)
或将其写入文件。现在,您可以检查所需的元素。顺便说一句,请参阅我的答案编辑(用选择器替换getElements时遗漏)。