推荐哪些技术或工具来查找网站上的损坏链接?
我可以访问日志文件,因此可以想象分析这些以查找 404 错误,但希望自动跟踪(或尝试跟踪)站点上的所有链接。
对于 Chrome 扩展,有hexometer
请参阅Firefox 的LinkChecker。
对于 Mac OS,有一个工具Integrity可以检查 URL 是否有损坏的链接。
对于 Windows,有Xenu 的 Link Sleuth。
刚刚找到了一个 wget 脚本,可以满足您的要求。
wget --spider -o wget.log -e robots=off --wait 1 -r -p http://www.example.com
这归功于此页面。
我喜欢W3C 链接检查器。
请参阅链接检查器工具:
LinkChecker 是一个免费的、GPL 许可的网站验证器。LinkChecker 检查 Web 文档或完整网站中的链接。
要么使用解析您的日志文件并为您提供“断开链接”报告的工具(例如Analog或 Google Webmaster Tools),要么运行一个工具来爬取您的网站并报告断开的链接(例如W3C Link Checker)。
在 .NET 应用程序中,您可以设置 IIS 以将所有请求传递给 ASP.NET,然后在全局错误处理程序中,您可以捕获并记录 404 错误。这是您除了爬取您的网站以检查内部缺失链接之外还要做的事情。这样做可以帮助从其他站点找到损坏的链接,然后您可以通过 301 重定向将它们修复到正确的页面。
为了帮助您在内部测试您的网站,还有 Microsoft SEO 工具包。
当然最好的技术是在编译时避免问题!在 ASP.NET 中,您可以通过要求从每个页面上的静态方法生成所有链接来接近这一点,因此只有一个位置可以生成任何给定的 URL。例如http://www.codeproject.com/KB/aspnet/StronglyTypedPages.aspx
如果你想要一个完整的 C# 爬虫,这里有一个:- http://blog.abodit.com/2010/03/a-simple-web-crawler-in-c-using-htmlagilitypack/
我们的商业产品DeepTrawl可以做到这一点,并且可以在 Windows / Mac 上使用。
披露:我是 DeepTrawl 背后的首席开发人员。
您最好的选择是用您选择的脚本语言将您自己的蜘蛛组合在一起,它可以按照以下方式递归地完成:
// Pseudo-code to recursively check for broken links
// logging all errors centrally
function check_links($page)
{
$html = fetch_page($page);
if(!$html)
{
// Log page to failures log
...
}
else
{
// Find all html, img, etc links on page
$links = find_links_on_page($html);
foreach($links as $link)
{
check_links($link);
}
}
}
一旦您的网站从 Google 获得了一定程度的关注,他们的网站管理员工具在显示用户可能遇到的断开链接方面非常宝贵,但这是相当反动的 - 死链接可能会在谷歌索引它们并记录之前存在几周404 在您的网站管理员面板中。
像上面这样编写自己的脚本将向您显示所有可能损坏的链接,而无需等待 google(网站管理员工具)或您的用户(访问日志中的 404)偶然发现它们。
有一个名为 CheckWeb 的 Windows 应用程序。它不再开发,但运行良好,并且代码是开放的(我相信是 C++)。
您只需给它一个 url,它就会爬取您的网站(以及您选择的外部链接),报告任何错误、图像/页面“权重”等。
LinkTiger似乎是一个非常完善的(虽然不是免费的)服务来做到这一点。我没有使用它,只是想添加它,因为它尚未提及。