让 wget 下载不同域名上的页面资源

让 wget 下载不同域名上的页面资源

当网站资源位于另一个域(域 B)时,如何使用 wget 下载整个网站(域 A)?
我试过:
wget -r --level=inf -p -k -E --domains=domainA,domainB http://www.domainA

答案1

wget --recursive --level=inf --page-requisites --convert-links --html-extension \
     --span-hosts=domainA,domainB url-on-domainA

更新:我记得上面的命令在过去对我有用(那是在 2010 年,我当时使用适用于 Windows 的 GNU 工具 );然而,当我最近再次尝试使用它时,我必须对其进行如下修改:

wget --recursive --level=inf --page-requisites --convert-links \
     --adjust-extension --span-hosts --domains=domainA,domainB domainA

它的简写版本为:wget -rEDpkH -l inf domainA,domainB domainA

使用的旗帜的细目
  • -r=--recursive
  • -l <depth>= --level=<depth>(最大递归深度。0inf平均无限递归)
  • -E= --adjust-extension(为已转换为 HTML 或 CSS 的文件添加适当的扩展名)
  • -p= --page-requisites(下载显示页面所需的所有文件(例如图片、样式表))
  • -K= (转换前--backup-converted保存原始文件(扩展名)的备份).orig
  • -k= --convert-links(转换链接以使其适合本地查看)
  • -H= --span-hosts(跨度至任意主机;允许从不同于原始 URL 的主机下载)
  • -D <domain-list>= --domains=<domain-list>(限制跨越指定域)
  • -np= --no-parent(不访问与当前目录不在同一目录下的链接)
  • -U <agent-string>=--user-agent=<agent-string>
参考

答案2

wget --recursive --level=inf --page-requisites --convert-links --html-extension -rH -DdomainA,domainB domainA

答案3

wget --page-requisites --convert-links --adjust-extension --span-hosts --domains domainA,domainB domainA

您可能需要忽略 robots.txt(请注意,这可能违反某些服务条款,您应该下载最低要求)。请参阅https://www.gnu.org/software/wget/manual/wget.html#Robot-Exclusion

答案4

考虑使用HT轨道。它在抓取其他域上的内容时比 wget 有更多选项。使用 wget 和 --span-hosts、--domains 和 --accept 不足以满足我的需求,但 HTTrack 却能胜任。我记得设置其他域上的重定向限制很有帮助。

相关内容