我能否使用WGET根据网站的URL生成站点地图?

19

我需要一段能够爬取网站并以纯文本或类似格式返回所有爬取页面列表的脚本;我将把它作为网站地图提交给搜索引擎。我可以使用WGET生成网站地图吗?还是有一个可以完成同样工作的PHP脚本?

2个回答

43
wget --spider --recursive --no-verbose --output-file=wgetlog.txt http://somewebsite.com
sed -n "s@.\+ URL:\([^ ]\+\) .\+@\1@p" wgetlog.txt | sed "s@&@\&@" > sedlog.txt

这将创建一个名为sedlog.txt的文件,其中包含指定网站上找到的所有链接。您可以使用PHP或shell脚本将文本文件网站地图转换为XML网站地图。调整wget命令的参数(accept/reject/include/exclude)以获取您需要的链接。


1
+1 我不能直接使用它,因为它会给我一堆错误(可能是由于不同的wget/sed版本导致的)。但是经过一些调整之后,它完美地工作了。谢谢! - Julian
2
你应该在请求之间添加一个小延迟,使用 --wait=1,否则可能会影响网站的性能。 - Liam
结合 tee https://unix.stackexchange.com/a/128476/312058,你也可以在 stdout 中查看输出,或者使用 tail -f 更好。 - Phani Rithvij
@Julian 是的,我也遇到了同样的问题。在 macOS 上,我不得不使用 gsed 而不是内置的 sed。感谢您的提示! - GDP2

2

1
它将通过扫描文件系统生成,但不会“爬行”。我想要爬取的网站是动态的。 - Salman A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接