wget
的--spider
选项可以直接识别损坏的内部链接:
wget --spider --recursive --level=0 mywebsite.com
我试图扩展它来寻找损坏的出站链接,-H
但因为(据我所知)你无法在外部域上指定额外的递归级别,留下来--level=0
让蜘蛛在整个万维网上松散。
我能想到的一种解决方法是使用网站sitemap.xml
(如果可用)获取该域的整套 URL 并将它们反馈给wget
,这样我就可以限制爬行深度:
wget -O - https://mywebsite.com/sitemap.xml \
| hred -xcr [email protected] \
| wget -i - -H --spider --recursive --level 1
此设置使用单独的工具hred
从 XML 中提取 URL。
有没有更有效的方法来查找损坏的外部链接wget
?通过使其与站点地图本地配合使用,或者理想情况下,不依赖于该 XML 的存在。
答案1
关于sitemap.xml
直接读取,这似乎是一个新功能wget2
:
- 支持从本地 Sitemap XML 文件扫描 URL (
--force-sitemap -i <filename>
)
wget
要在没有站点地图的情况下生成网站中所有 URL 的平面列表,我们可以抓取网站并使用类似 grep 的工具从wget
输出中提取 URL:
wget --spider -r mywebsite.com 2>&1 \
| rg '^--.+-- (.+)$' --replace '$1' \
| sort -u
Wget 可能不是完成这项工作的最佳工具,但它是可行的。