使用 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
,可能就不行了。