检查网站每个链接的最佳方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查网站每个链接的最佳方法是什么?相关的知识,希望对你有一定的参考价值。

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

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

答案

使用像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不返回任何内容)。

另一答案

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

以上是关于检查网站每个链接的最佳方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

使用CMake检查列表是否包含特定条目的最佳方法

Android中每个片段的不同操作栏 - 最佳方法?

通过两个 Web 域传输私钥的最佳解决方案

在 Markdown 中,链接到页面片段的最佳方式是啥,即#some_id?

在一些片段之间填充对象变量的最佳方法

找出当前显示的片段是啥的最佳方法是啥?