使用curl从网页获取所有文件


Answers:


124

使用wget代替。brew install wget如果已安装Homebrew或sudo port install wgetMacPorts ,则可以与它一起安装。

要从目录列表下载文件,请使用-r(递归),-np(不要跟随父目录的链接),-k并使下载的HTML或CSS中的链接指向本地文件(信誉@xaccrocheur)。

wget -r -np -k http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

其他有用的选项:

  • -nd (无目录):将所有文件下载到当前目录
  • -e robots.off:忽略robots.txt文件,请勿下载robots.txt文件
  • -A png,jpg:仅接受扩展名为png或的文件jpg
  • -m (镜子): -r --timestamping --level inf --no-remove-listing
  • -nc--no-clobber:如果文件存在,请跳过下载

3
wget -r -np -k http://your.website.com/specific/directory。诀窍是使用-k转换链接(图像等)进行本地查看。
yPhil 2014年

brewport没有为我工作,安装了wget。我该怎么办?
Hoseyn Heydari '16

@HoseynHeydari:您可以使用rudix.org来编译osx的二进制文件。所以你需要安装rudix然后使用:sudo rudix install wget
Mamonu '16

该选项-k并非始终有效。例如,如果您有两个链接指向要递归捕获的网页上的同一文件,则wget似乎只能转换第一个实例的链接,而不能转换第二个实例的链接。

22

curl只能读取单个网页文件,实际上,您得到的一串行是目录索引(如果转到该URL,您也可以在浏览器中看到该目录)。要使用curl和一些Unix工具魔术来获取文件,您可以使用类似

for file in $(curl -s http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ |
                  grep href |
                  sed 's/.*href="//' |
                  sed 's/".*//' |
                  grep '^[a-zA-Z].*'); do
    curl -s -O http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/$file
done

它将所有文件放入当前目录。

对于更详尽的需求(包括从具有文件夹/目录的站点获取一堆文件),wget(如已经在另一个答案中建议的那样)是更好的选择。


谢谢。这是一个不错的解决方案,并且提供了很好的示例!
egelev

1
xmllint --html --xpath '//a/@href'比起可能是更好的解析器grep
ceving

7

参考:http : //blog.incognitech.in/download-files-from-apache-server-listing-directory/

您可以使用以下命令:

wget --execute="robots = off" --mirror --convert-links --no-parent --wait=5 <website-url>

每个选项的说明

  • wget:用于发出CURL请求并将远程文件下载到我们本地计算机的简单命令。
  • --execute="robots = off":在浏览网页时,这会忽略robots.txt文件。如果您没有获取所有文件,这将很有帮助。
  • --mirror:此选项将基本上反映给定URL的目录结构。这是一个快捷方式,-N -r -l inf --no-remove-listing它意味着:
    • -N:除非本地更新,否则不要重新获取文件
    • -r:指定递归下载
    • -l inf:最大递归深度(inf或0表示无穷大)
    • --no-remove-listing:不要删除“ .listing”文件
  • --convert-links:使下载的HTML或CSS中的链接指向本地文件
  • --no-parent:不要升至父目录
  • --wait=5:两次检索之间要等待5秒钟。这样我们就不会破坏服务器。
  • <website-url>:这是从中下载文件的网站网址。

下载愉快:笑脸:


3

您可以使用适用于Windows / MacOS并可以通过Homebrew安装的httrack


对我来说有些新意,谢谢。最好的是它又快又快:一线。只是减少脂肪,避免所有垃圾。
Peter Teoh

0

对于那些希望将应用程序与GUI一起使用的人,有便宜的Mac OS X共享软件DeepVacuum程序,该程序wget以用户友好的方式实现,并带有可以处理常用任务的预设列表。您还可以将自己的自定义配置另存为预设。

在此处输入图片说明

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.