【问题标题】:Using wget to download all zip files on an shtml page使用 wget 下载 shtml 页面上的所有 zip 文件
【发布时间】:2016-04-29 18:34:00
【问题描述】:

我一直在尝试将此网站上的所有 zip 文件下载到 EC2 服务器。但是,它无法识别链接,因此无法下载任何内容。我认为这是因为 shtml 文件要求启用 SSI,这在某种程度上导致 wget 出现问题。但我真的不明白那些东西。

这是我一直使用失败的代码。

wget -r -l1 -H -t1 -nd -N -np -A.zip -erobots=off http://www.fec.gov/finance/disclosure/ftpdet.shtml#a2015_2016

感谢您提供的任何帮助!

【问题讨论】:

标签: linux bash download wget


【解决方案1】:

源代码中没有 zip 链接,这就是为什么您无法通过 wget 下载它们,它们是通过 javascript 生成的。文件列表位于节点<fec_file status="Archive"></fec_file> 下的http://fec.gov//finance/disclosure/tables/foia_files_summary.xml

您可以编写脚本来解析xml 文件并将节点转换为实际链接,因为它们具有模式。


更新:

正如@cyrus 提到的,这些文件也在ftp.fec.gov/FEC/ 上,您可以使用wget -m 镜像ftp 和-A zip 将下载限制为zip 文件,即:

wget -A zip -m --user=anonymous --password=test@test.com ftp://ftp.fec.gov/FEC/

wget -r

wget -A zip --ftp-user=anonymous --ftp-password=test@test.com -r ftp://ftp.fec.gov/FEC/*

【讨论】:

  • 感谢您的快速回复!为了只下载我最初寻找的 zip 文件,我需要进入 1980 到 2014 的子文件夹(按 2 计数)。我可以添加一个选项来做到这一点吗?另外,我可以结合 -A zip 选项来只下载 zip 文件吗?
  • @StanO:使用 GNU bash 4:for i in {1980..2014..2}; do echo ${i}; done
  • 是的,您可以使用 -A 来执行此操作(已测试),我将更新我的答案以包含此内容。
  • @PedroLobito:据我了解 Cyrus 的 for 循环,我们将文件夹附加到 ftp.fec.gov/FEC/ 地址上,这样第一个是 ftp.fec.gov/FEC/ 1980 年等。但是,我不知道用 bash 执行此操作的语法:-(
  • @StanO:试试这个:for i in {1980..2014..2}; do echo wget -A zip --ftp-user=anonymous --ftp-password=test@test.com -r "ftp://ftp.fec.gov/FEC/${i}"; done。如果一切正常,请删除 echo
猜你喜欢
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 2023-04-09
  • 2013-11-21
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多