如何使用wget进行爬网以仅下载HTML文件(忽略图片,css,js)


14

本质上,我想使用Wget爬网整个站点,但是我绝不需要下载其他资源(例如图像,CSS,JS等)。我只想要HTML文件。

Google搜索完全没有用。

这是我尝试过的命令:

wget --limit-rate=200k --no-clobber --convert-links --random-wait -r -E -e robots=off -U "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36" -A html --domain=www.example.com http://www.example.com

我们的站点是PHP和CMS的混合平台。所以,HTML “文件”可能是/path/to/page/path/to/page//path/to/page.php,或/path/to/page.html

我什至包括了-R js,css它,但是它仍然下载文件,然后拒绝它们(浪费带宽,CPU和服务器负载!)。


2
您到目前为止尝试过的命令是什么?如果文件命名一致,则应该可以使用-R标志。另外,您可以使用--ignore-tags标志并忽略脚本和img标签。
ernie 2014年


我尝试使用--accept = html,但它会下载CSS文件,然后将其删除。我想阻止他们下载。头请求很好,但是-例如,我注意到Length: 558 [text/css]不需要的文件。如果在标头不返回的情况下我可以停止请求text/html,那我会很高兴。
弥敦道JB 2014年

Answers:


13

@ernie的评论--ignore-tags将我带入正确的道路!当我抬起头来--ignore-tagsman,我注意到了--follow-tags

设置--follow-tags=a让我跳过imglinkscript,等。

对于某些寻求相同答案的人来说,它可能太有限了,但实际上对我来说效果很好(如果我错过了几页就可以了)。

如果有人找到了允许扫描所有标记的方法,但是阻止wget仅在下载文件后才拒绝文件(他们应在下载前根据文件名或标题Content-type拒绝文件),我将很高兴接受他们的回答!


5

如何添加选项:

--reject '*.js,*.css,*.ico,*.txt,*.gif,*.jpg,*.jpeg,*.png,*.mp3,*.pdf,*.tgz,*.flv,*.avi,*.mpeg,*.iso'
--ignore-tags=img,link,script 
--header="Accept: text/html"
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.