如何使用 wget 从网站下载所有文件(但不是 HTML)?

Posted

技术标签:

【中文标题】如何使用 wget 从网站下载所有文件(但不是 HTML)?【英文标题】:How to download all files (but not HTML) from a website using wget? 【发布时间】:2012-02-04 00:41:16 【问题描述】:

如何使用wget并从网站获取所有文件?

我需要除网页文件以外的所有文件,如 htmlphp、ASP 等。

【问题讨论】:

即使你想下载php,使用wget也是不可能的。我们只能使用 wget 获取原始 HTML。我想你知道原因 注意: 始终先检查wget --spider,然后始终添加-w 1(或更多-w 5),以免淹没其他人的服务器。 我如何下载此页面中的所有 pdf 文件? pualib.com/collection/pua-titles-a.html Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops? 【参考方案1】:

我知道这个话题很老了,但我在 2021 年来到这里,正在寻找一种从镜像 (http://ftp.slackware-brasil.com.br/slackware64-current/) 下载所有 Slackware 文件的方法。

阅读所有答案后,对我来说最好的选择是:

wget -m -p -k -np -R '*html*,*htm*,*asp*,*php*,*css*' -X 'www' http://ftp.slackware-brasil.com.br/slackware64-current/

我不得不使用*html* 而不仅仅是html 来避免像index.html.tmp 这样的下载。

请原谅我复活这个话题,我认为它可能对我以外的人有用,我的疑问与@Aniruddhsinh的问题非常相似。

【讨论】:

【参考方案2】:

过滤特定文件扩展名:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

或者,如果您更喜欢长选项名称:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

这将镜像站点,但没有jpgpdf 扩展名的文件将被自动删除。

【讨论】:

如果你只是想下载没有整个目录架构的文件,你可以使用 -nd 选项。 每个标志的含义是什么? 我认为--accept 是区分大小写的,所以你必须这样做--accept pdf,jpg,PDF,JPG 不确定这是否与wget 的新版本一起使用,但您必须指定--progress 类型,例如--progress=dot @Flimm 你也可以使用--ignore-case 标志使--accept 不区分大小写。【参考方案3】:

这为我下载了整个网站:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/

【讨论】:

-e robots=off+1!这终于解决了我的问题! :) 谢谢 --random-wait 选项是天才 ;) @izilotti 站长能查出你是不是用这种方法WGET他们的网站文件吗? @whatIsperfect 绝对有可能。 @JackNicholsonn 网站所有者如何知道?使用的代理是 Mozilla,这意味着所有标头都将作为 Mozilla 浏览器进入,因此无法检测 wget 是否已使用?如果我错了,请纠正。谢谢【参考方案4】:
wget -m -p -E -k -K -np http://site/path/

手册页会告诉你这些选项的作用。

wget 只会跟随链接,如果没有从索引页面指向文件的链接,那么wget 将不知道它的存在,因此不会下载它。 IE。如果所有文件都链接到网页或目录索引中,它会有所帮助。

【讨论】:

感谢您的回复 :) 它复制了整个网站,我只需要网站中的文件(即 txt、pdf、图像等)【参考方案5】:
wget -m -A * -pk -e robots=off www.mysite.com/

这将在本地下载所有类型的文件并从 html 文件中指向它们 它会忽略机器人文件

【讨论】:

【参考方案6】:

我试图下载从Omeka's themes page 链接的 zip 文件 - 非常相似的任务。这对我有用:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
-A: 只接受 zip 文件 -r: 递归 -l 1: 一级深度(即仅从该页面直接链接的文件) -nd:不用创建目录结构,把所有文件下载到这个目录下即可。

-k-K-E 等选项的所有答案可能还没有真正理解这个问题,比如重写 HTML 页面以创建本地结构、重命名 .php 文件等等.不相关。

从字面上获取所有文件除了.html等:

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com

【讨论】:

-A 是区分大小写的,我认为,所以你必须这样做 -A zip,ZIP 你能看看这里吗? ***.com/questions/68287730/…@Flimm【参考方案7】:

试试这个。它总是对我有用

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL

【讨论】:

【参考方案8】:

你可以试试:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

你也可以添加:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

接受特定的扩展,或仅拒绝特定的扩展:

-R html,htm,asp,php

或排除特定区域:

-X "search*,forum*"

如果机器人(例如搜索引擎)忽略文件,您还必须添加:-e robots=off

【讨论】:

以上是关于如何使用 wget 从网站下载所有文件(但不是 HTML)?的主要内容,如果未能解决你的问题,请参考以下文章

wget 下载整个网站,或者特定目录

wget 下载整个网站,或者特定目录

wget 如何用于计算网站上的页面数?

wget 下载一个网站所有文件

将 wget 连接到 ***

wget命令行本地克隆一个网站