使用Wget保存单个网页(带有背景图片)


73

我想使用Wget保存单个网页(不是递归的,不是整个站点)以供参考。类似于Firefox的“完整网页”。

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

我的第二个问题是:如果页面上有我要保存的图像,这些图像托管在另一台服务器上(例如广告),这些图像将不包括在内。--span-hosts似乎无法通过下面的代码来解决该问题。

我正在使用: wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html


1
完全相同的行(wget --no-parent --timestamping --convert-links --page-conditions --no-directories --no-host-directories -erobots = off domain.tld)实际上保存了从中引用的背景图像更新到1.12后的CSS。手册说:“使用http url,Wget从给定的url中检索并解析html或css,通过href或src之类的标记或使用'url()'函数指定的css uri值来检索文档引用的文件。符号。” 第二个问题仍然需要解决
user14124

Answers:


106

Wget手册页中

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

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

另外以防万一robots.txt您不允许添加-e robots=off


看来这只是将js和css重写为绝对URL
Greg Dean

1
没关系,这是robots.txt不允许我使用变通办法来更新答案
Greg Dean

19
展开:wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
SAM

4
还是更好wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows[url]
Petah 2014年

@ {etah:我用您的参数尝试了您的命令,它会下载除指定的页面之外的其他网页。
蒂姆(Tim)

7

wget命令提供了option --mirror,它的作用与以下命令相同:

$ wget -r -N -l inf --no-remove-listing

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

如果您未使用最新版本,wget则可能找不到。


1
这很可能会用其子网址抓取整个网站
4253wyerg4e

2

听起来好像是wgetFirefox没有解析CSS的链接以将这些文件包括在下载中。您可以通过以下方法解决这些限制,并为下载的文件中的任何CSS或Javascript提取链接编写脚本,以生成丢失的文件列表。然后,wget在该链接列表上进行第二次转换,可以捕获所有丢失的内容(使用该-i标志来指定列出URL的文件)。

如果您喜欢Perl,则CPAN上有一个CSS :: Parser模块,可以为您提供一种以这种方式提取链接的简便方法。

请注意,wget仅解析某些html标记(href/ src)和css uris(url())以确定要获取哪些页面要求。您可能会尝试使用DOM Inspector或Firebug之类的Firefox插件来确定是否通过Javascript添加了未获取的第三方图像-如果是这样,则需要借助脚本或Firefox插件来获取它们太。


就像我在第一篇评论中所说的那样,它似乎已在v1.12中修复。我仍然不知道如何包括其他服务器上的图像。
user14124

是的,解析CSS是wget v1.12中的新增功能,它位于更改日志的顶部:freshmeat.net/urls/376000c9c7a02f7a3592180c2390ff04
quack quixote 09年

尝试将选项-H添加到列表中。它代表--span-hosts,并允许从外部主机下载内容。
迈克尔

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.