如何使用 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
并从网站获取所有文件?
我需要除网页文件以外的所有文件,如 html、php、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/
这将镜像站点,但没有jpg
或pdf
扩展名的文件将被自动删除。
【讨论】:
如果你只是想下载没有整个目录架构的文件,你可以使用 -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)?的主要内容,如果未能解决你的问题,请参考以下文章