我可以使用 WGET 生成给定 URL 的网站的站点地图吗?
Posted
技术标签:
【中文标题】我可以使用 WGET 生成给定 URL 的网站的站点地图吗?【英文标题】:Can I use WGET to generate a sitemap of a website given its URL? 【发布时间】:2011-04-26 07:47:18 【问题描述】:我需要一个可以抓取网站并以纯文本或类似格式返回所有抓取页面列表的脚本;我将作为站点地图提交给搜索引擎。我可以使用 WGET 生成网站的站点地图吗?或者是否有一个 php 脚本可以做到这一点?
【问题讨论】:
【参考方案1】:你可以使用这个 perl 脚本来解决这个问题:http://code.google.com/p/perlsitemapgenerator/
【讨论】:
它会通过扫描文件系统生成,但不会“爬取”。我要抓取的网站是动态的。【参考方案2】: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 命令的参数(接受/拒绝/包含/排除)以仅获取您需要的链接。
【讨论】:
+1 不能完全使用它,因为它给了我一堆错误(可能是因为不同的 wget/sed 版本)。但是一旦我做了一些调整,它就像一个魅力。谢谢! 您应该使用--wait=1
在请求之间添加一个小的延迟,否则可能会影响站点的性能。
结合tee
unix.stackexchange.com/a/128476/312058你也可以在stdout中看到输出或者tail -f
更好
@Julian 是的,我遇到了同样的问题。在 macOS 上,我必须使用 gsed
而不是内置的 sed
。感谢您的提示!以上是关于我可以使用 WGET 生成给定 URL 的网站的站点地图吗?的主要内容,如果未能解决你的问题,请参考以下文章