如何使用 wget 抓取仅下载 HTML 文件(忽略图像、css、js)

如何使用 wget 抓取仅下载 HTML 文件(忽略图像、css、js)

本质上,我想用 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 和服务器负载!)。

答案1

@ernie 的评论让--ignore-tags我走上正确的道路!当我抬头看--ignore-tagsman,我注意到了--follow-tags

设置--follow-tags=a允许我跳过img、、等linkscript

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

如果有人找到一种方法来允许扫描所有标签,但wget仅在下载文件后才阻止拒绝文件(他们应该在下载之前根据文件名或标题内容类型拒绝),我会非常乐意接受他们的回答!

答案2

那么添加选项怎么样:

--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"

相关内容