![如何使用 wget 抓取仅下载 HTML 文件(忽略图像、css、js)](https://linux22.com/image/1396031/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20wget%20%E6%8A%93%E5%8F%96%E4%BB%85%E4%B8%8B%E8%BD%BD%20HTML%20%E6%96%87%E4%BB%B6%EF%BC%88%E5%BF%BD%E7%95%A5%E5%9B%BE%E5%83%8F%E3%80%81css%E3%80%81js%EF%BC%89.png)
本质上,我想用 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-tags
时man
,我注意到了--follow-tags
。
设置--follow-tags=a
允许我跳过img
、、等link
。script
对于一些寻求相同答案的人来说,它可能太有限了,但对我来说它实际上效果很好(如果我错过几页也没关系)。
如果有人找到一种方法来允许扫描所有标签,但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"