我想创建一个跟踪网站每个链接的抓取工具,并检查网址以查看它是否有效。现在,我的代码使用url.openStream()
打开了网址。
那么创建抓取工具的最佳方法是什么?
答案 0 :(得分:4)
使用像Jsoup这样的HTML解析器。
Set<String> validLinks = new HashSet<String>();
Set<String> invalidLinks = new HashSet<String>();
Document document = Jsoup.connect("http://example.com").get();
Elements links = document.select("a");
for (Element link : links) {
String url = link.absUrl("href");
if (!validLinks.contains(url) && !invalidLinks.contains(url)) {
try {
int statusCode = Jsoup.connect(url).execute().statusCode();
if (200 <= statusCode && statusCode < 400) {
validLinks.add(url);
} else {
invalidLinks.add(url);
}
} catch (Exception e) {
invalidLinks.add(url);
}
}
}
您可能希望在该循环中发送HEAD以使其更有效,但是您必须使用URLConnection
而不是因为设计的Jsoup不支持它(HEAD不返回任何内容)
答案 1 :(得分:0)
使用内部链接分析工具分析搜索引擎蜘蛛可以在您网站的特定页面上检测到的链接。搜索...最佳实践内部链接。链接数量:早在2008年,Matt Cutts(谷歌网络垃圾邮件团队负责人)建议将链接数限制为每页最多100个链接。