【问题标题】:Python3 download multiple files from one urlPython3从一个url下载多个文件
【发布时间】:2014-10-16 18:04:03
【问题描述】:

我想从一个 URL 下载所有 .mp4 文件。我已经看到了如何使用 urllib 下载文件的示例,但示例看起来像:

urllib.request.urlretrieve('http://example.com/big.zip', 'file/on/disk.zip')

在这些示例中,他们指定了要下载的确切文件,big.zip,但我不知道站点目录中每个文件的名称,我只知道文件扩展名。

我希望能够为网站添加这样的内容:

urllib.request.urlretrieve('http://example.com/videos/', 'file/on/disk')

然后下载所有 .mp4 文件。我相信我可以使用.endswith 对特定的文件扩展名进行排序。

我对使用 urllib 还是很陌生,而且我从未使用过 BeautifulSoup,但我已经在几个示例中看到过它,所以我什至不知道是否这是可以做到的。

Downloading files from multiple websites.

urllib.request for python 3.3 not working to download file

How do I download a file over HTTP using Python?

【问题讨论】:

  • 没有标准的方法来检查站点将提供的所有文件(故意的,这种事情对于站点所有者来说通常是非常糟糕的,因为您正在消耗大量的带宽)。查看您的网站是否有此类事情的 API 或存档系统 - 如果没有,您可能需要联系网站所有者以检查这是对其内容的合法使用。一些站点可能会列出所有文件,但出于安全原因,这种情况并不常见,因为许多站点并非简单地由文件系统支持。
  • 你可以找到beautifulsoup的所有链接
  • @PadraicCunningham 我得研究一下 BeautifulSoup。我希望使用 Python 中包含的模块,但使用 BeautifulSoup 看起来更容易。
  • 用beautifulsoup很容易找到链接,使用requests和bsoup,四五行代码大概就能搞定

标签: python python-3.x urllib


【解决方案1】:

如果您能够列出目录内容(由 Apache 列出),您应该解析此输出,构建文件列表,并循环调用单个文件下载例程。

如果你做不到,你就做不到,应用程序通常对用户隐藏文件结构是有原因的。

【讨论】:

  • 我想我可能必须解析 HTML 输出并将匹配的文件名从代码中提取出来并循环遍历它们。如果有更简单的方法,我只是不想做所有这些工作。
猜你喜欢
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多