如何使用带有mk选项的wget来镜像一个网站及其外部链接的图片?

3
我知道使用wget -mkp http://example.com可以镜像一个网站及其内部链接的所有文件。

但是,我需要备份一个将所有图片存储在另一个域中的网站。如何使用wget下载这些图片,并相应地更新src标签?

谢谢!

3个回答

1
稍作修改的版本来自@PatrickHorn的答案:
首先使用cd命令进入包含已下载文件的顶层目录。
"第一个wget用于递归查找页面,但只限于该域名" wget --recursive --timestamping -l inf --no-remove-listing --page-requisites http://site.com "第二个wget可跨越主机,但不会递归检索页面" find site.com -name '*.htm*' -exec wget --no-clobber --span-hosts --timestamping --page-requisites http://{} \; 我已经尝试过这个方法,它似乎大部分都可以工作——我可以获得所有来自我想要的站点的.html页面,然后是外部文件。我还没有能够将链接更改为相对于外部文件的本地副本。

0

使用带有-r和-H的wget非常危险,因为它可以很容易地通过广告或搜索框进入大型网站并跨越整个互联网。下载单个页面的所有依赖项的技巧在于您不一定需要递归,但是您确实希望下载页面先决条件并允许wget跨主机,如下所示:

wget -H -N -kp http://<site>/<document>

然而,使用此命令时,您现在不会获得递归行为。

因此,为了将两者结合起来,我们可以使用第一个wget递归查找页面,尽管仅限于该域;以及第二个wget跨主机但不递归检索页面:

wget -mkp http://example.com
find example.com/ -name '*.html*' -exec wget -nc -HNkp http://{} \;

-nc 是重要的一点 -- 它告诉 wget 要像从服务器下载一样操作,但使用本地磁盘上的副本,这意味着引用应该已经被转换了。接下来,它将获取所有资源;最后,它应该覆盖原始文件(需要查询字符串),并正确命名第二个文件。请注意,这个方法会双倍下载文件以便修复 -- 然而,我卡住的地方是 -k,它会将没有下载的相对 URL 转换为绝对 URL。因此,在第二步之后,所有链接现在都是远程 URL。
幸运的是,这个问题手动解决起来应该会更容易,因为所有绝对链接都应该以 "http://example.com/" 开头,所以可能可以运行一个简单的 "sed" 脚本来修复链接引用。
如果您知道您期望 example.com 包含的域名,我建议使用 -D 选项指定仅从那些您期望下载的域名中下载,而不包括其他任何内容。例如,从 google.com 中,您还可以包括 gstatic.com。

这里还有另一个人有类似的问题,但下载远程图片似乎没有得到解决。

这个帖子建议只需咬紧牙关并执行“-r -l 1 -H”,但也要使用-A来限制实际保存为图像或CSS类型的文件:


find.. 行存在问题:当使用 Wget 带有 -N 参数运行时,无论是否带有 -r-p 参数,决定是否下载文件的新版本取决于本地和远程时间戳以及文件大小(请参阅时间戳)。不能同时指定 -nc-N - cofiem

0
假设您知道存储图像的单独域,使用最新的wget版本(即版本> = 1.20),事情比您预期的要简单得多。例如,假设图像托管在http://www.images.domain上,请尝试以下操作:
wget -mkp -E -np -H -Dexample.com,images.domain http://example.com

在上面的例子中,我添加了一些起始参数-mkp以及其他一些参数,其中一些 [-E(-adjust-extension)-np(-no-parent)]只是因为我认为它们可能很方便使用,另外还有以下这些你肯定需要用到的参数:
-H (--span-hosts) => enables spanning across hosts when doing recursive retrieving

-D<comma separated domain list> (--domain-list=<comma separated domain list>) => used to set the domains to be followed for file retrieving

就这样了,可以参考wget手册以获取更多信息。


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