使用Wget递归抓取网站并下载图像


12

您如何指示wget递归爬网网站并仅下载某些类型的图像?

我尝试使用它来爬网站点,并且仅下载Jpeg图像:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

但是,即使page1.html包含数百个子页面的链接,而这些子页面本身都具有直接链接到图像的信息,wget仍会报告诸如“删除subpage13.html,因为它应被拒绝,因为它应该被拒绝”之类的信息,并且从不下载任何图像,因为没有图像直接链接到该页面。从起始页面开始。

我假设这是因为我的--accept既用于引导爬网,也用于过滤要下载的内容,而我希望它仅用于引导内容的下载。如何让wget抓取所有链接,但仅下载具有某些扩展名的文件(例如* .jpeg)?

编辑:此外,某些页面是动态的,并且是通过CGI脚本生成的(例如img.cgi?fo9s0f989wefw90e)。即使我将cgi添加到我的接受列表(例如--accept = jpg,jpeg,html,cgi)中,也始终会被拒绝。有没有解决的办法?

Answers:


3

您为什么不尝试使用wget -A jpg,jpeg -r http://example.com


该问题指出某些图像的格式为/url/path.cgi?query,因此您的建议将不会提取这些图像。
查尔斯·斯图尔特

1

如果不允许wget知道subpage13.html的内容(以及链接到的jpg的jpg),您如何期望它会知道该内容。我建议您允许使用html,获取所需的内容,然后删除不需要的内容。


我不太确定为什么您的CGI被拒绝... wget是否输出任何错误?也许让wget冗长(-v)看看。作为一个单独的问题可能最好。

就是说,如果您不关心带宽和下载大量内容,然后删除不需要的内容,那就没关系了。


还签出 --html-extension

从手册页:

-E

--html扩展

如果下载了类型为application / xhtml + xml或text / html的文件,并且URL不以regexp。[Hh] [Tt] [Mm] [Ll]?结尾,则此选项将导致后缀.html为附加到本地文件名。例如,当您在镜像使用.asp页的远程站点时,但是您希望在库存的Apache服务器上可以看到镜像的页时,这很有用。另一个很好的用途是下载CGI生成的资料。像http://site.com/article.cgi?25这样的URL 将另存为article.cgi?25.html。

请注意,以这种方式更改的文件名将在您每次重新镜像站点时重新下载,因为Wget不能告诉本地X.html文件对应于远程URL X(因为它尚不知道URL产生的输出类型为text / html或application / xhtml + xml。为了防止重新下载,必须使用-k和-K,以便将文件的原始版本保存为X.orig。


--restrict-file-names=unix 由于这些cgi网址,可能也很有用...


我应该停止链接wget选项..即将指出,--no-parent但我会停在那里。
PriceChild 2011年

0

您也可以使用MetaProducts Offline Explorer,而无需进行编程


-1

尝试添加--page-requisites选项


那将下载所有链接的媒体。使用wget下载图像的唯一方法是下载页面上的所有内容?
Cerin
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.