建议使用哪些技术或工具在网站上查找损坏的链接?
我可以访问日志文件,因此可以想象解析这些查找404错误,但希望自动跟踪(或尝试关注)网站上的所有链接。
答案 0 :(得分:35)
答案 1 :(得分:22)
刚刚找到了一个符合你要求的wget脚本。
wget --spider -o wget.log -e robots=off --wait 1 -r -p http://www.example.com
归功于this page。
答案 2 :(得分:10)
我喜欢W3C Link Checker。
答案 3 :(得分:7)
请参阅linkchecker工具:
LinkChecker是一个免费的GPL许可网站验证器。 LinkChecker检查网络文档或完整网站中的链接。
答案 4 :(得分:2)
使用分析日志文件的工具并为您提供“损坏的链接”报告(例如Analog或Google Webmaster Tools),或运行一个工具来抓取您的网站并报告损坏的链接(例如W3C Link Checker)。
答案 5 :(得分:1)
在.NET应用程序中,您可以将IIS设置为将所有请求传递给ASP.NET,然后在全局错误处理程序中捕获并记录404错误。除了抓住您的网站以检查内部缺失的链接之外,您还可以这样做。这样做可以帮助从OTHER站点找到损坏的链接,然后您可以使用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/
答案 6 :(得分:1)
我们的商业产品DeepTrawl执行此操作,可以在Windows / Mac上使用。
披露:我是DeepTrawl背后的首席开发人员。
答案 7 :(得分:0)
你最好的选择是用您选择的脚本语言将自己的蜘蛛拼凑在一起,它可以按照以下方式递归完成:
// 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的一定程度的关注,他们的webmaster tools在显示用户可能遇到的断开链接方面非常有价值,但这是非常反动的 - 死链接可能会持续数周之前谷歌索引它们并在您的网站管理员面板中记录404。
如上所述编写自己的脚本会向您显示所有可能的断开链接,而无需等待谷歌(网站管理员工具)或您的用户(访问日志中的404)偶然发现它们。
答案 8 :(得分:0)
LinkTiger似乎是一个非常优秀的(虽然是非免费的)服务。我没有使用它,只是想添加因为它还没有被提及。
答案 9 :(得分:-1)
有一个名为CheckWeb的Windows应用程序。它不再开发,但它运行良好,代码是开放的(我相信C ++)。
您只需给它一个网址,它会抓取您的网站(如果您选择外部链接),报告任何错误,图片/页面“重量”等。