使用 Wget 下载网页全部资源(含背景图片)

有网友提出了这样的问题:

我想用 Wget 保存网页以供参考。就像 Firefox 的 “Web Page, complete” save as功能一样。

我的第一个问题是:我无法让 Wget 保存 CSS 中指定的背景图片。即使它保存了背景图片文件,我也不认为 –convert-links 会将 CSS 文件中的背景图片 URL 转换为指向本地保存的背景图片。Firefox 也有同样的问题。

我的第二个问题是:如果我想保存的页面上有托管在其他服务器上的图片(如广告),这些图片就不会被包含在内。–使用下面这一行似乎并不能解决这个问题。

我用的是: wget --no-parent ---timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off https://domain.tld/webpage.html

评论1

Wget 更新到 1.12 后,完全相同的一行(wget –no-parent —timestamping –convert-links –page-requisites –no-directories –no-host-directories -erobots=off domain.tld)实际上保存了 CSS 引用的背景图片。手册上说:”对于 http 网址,Wget 会检索并解析给定网址中的 html 或 css,通过 href 或 src 等标记,或使用’url()’功能符号指定的 css uri 值,检索文档中引用的文件”。第二个问题仍需解决

评论2

摘自 Wget man 页面

实际上,要下载单个页面及其所有必要内容(即使它们存在于不同的网站上),并确保这些内容在本地正常显示,除了”-p “之外,作者还喜欢使用一些选项:


wget -E -H -k -K -p https://www.example.com/

如果 robots.txt 不允许,还可以添加 -e robots=off

增强: wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]

也许这样更好: wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows [url]

评论3

wget 命令提供了 --mirror 选项,其作用与此相同:

您还可以使用 -x 为网站创建整个目录层次结构,包括主机名。

不过,如果你使用的不是最新版本的 wget,可能就不行了。

阅读余下内容
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号