【发布时间】:2011-09-01 20:35:52
【问题描述】:
我想创建一个爬虫来跟踪网站的每个链接并检查 URL 以查看它是否有效。现在我的代码使用 url.openStream() 打开 URL。
那么创建爬虫的最佳方法是什么?
【问题讨论】:
-
我不想使用任何程序,我想自己编写代码,我会使用 php html dom 之类的东西,或者自己编写代码
标签: java html web-crawler
我想创建一个爬虫来跟踪网站的每个链接并检查 URL 以查看它是否有效。现在我的代码使用 url.openStream() 打开 URL。
那么创建爬虫的最佳方法是什么?
【问题讨论】:
标签: java html web-crawler
使用像 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 不返回任何内容)。
【讨论】:
javac/java,只需将 JAR 文件的路径添加到 -cp 参数。
使用内部链接分析器工具分析搜索引擎蜘蛛可以在您网站的特定页面上检测到的链接。搜索... 最佳做法内部链接。链接数量:早在 2008 年,Matt Cutts(Google 网络垃圾邮件团队负责人)就建议将链接数量限制为每页最多 100 个链接。
【讨论】: