【问题标题】:What is the best way to check each link of a website?检查网站每个链接的最佳方法是什么?
【发布时间】:2011-09-01 20:35:52
【问题描述】:

我想创建一个爬虫来跟踪网站的每个链接并检查 URL 以查看它是否有效。现在我的代码使用 url.openStream() 打开 URL。

那么创建爬虫的最佳方法是什么?

【问题讨论】:

标签: java html web-crawler


【解决方案1】:

使用像 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 个问题:如何包含或导入 jsoup?
  • 呃,把JAR文件放到classpath里就好了。它与其他 JAR 没有什么不同。如果您使用 Eclipse 之类的 IDE,只需将其放在项目的根文件夹中,然后右键单击并选择 添加到构建路径。如果你正在做普通的javac/java,只需将 JAR 文件的路径添加到 -cp 参数。
【解决方案2】:

使用内部链接分析器工具分析搜索引擎蜘蛛可以在您网站的特定页面上检测到的链接。搜索... 最佳做法内部链接。链接数量:早在 2008 年,Matt Cutts(Google 网络垃圾邮件团队负责人)就建议将链接数量限制为每页最多 100 个链接。

【讨论】:

  • 应该是评论
猜你喜欢
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多