python - 如何以 'smarter' 的方式使用 python 下载文件?

标签 python http download

我需要在 Python 中通过 http 下载几个文件。

最明显的方法就是使用 urllib2:

import urllib2
u = urllib2.urlopen('http://server.com/file.html')
localFile = open('file.html', 'w')
localFile.write(u.read())
localFile.close()

但我将不得不以某种方式处理令人讨厌的 URL,例如:http://server.com/!Run.aspx/someoddtext/somemore?id=121&m=pdf。当通过浏览器下载时,该文件有一个人类可读的名称,即。 accounts.pdf

有没有办法在 python 中处理它,所以我不需要知道文件名并将它们硬编码到我的脚本中?

最佳答案

下载这样的脚本往往会推送一个标题,告诉用户代理如何命名文件:

Content-Disposition: attachment; filename="the filename.ext"

如果你能捕获那个标题,你就能得到正确的文件名。

another threadContent-Disposition-grabbing 提供了一些代码。

remotefile = urllib2.urlopen('http://example.com/somefile.zip')
remotefile.info()['Content-Disposition']

关于python - 如何以 'smarter' 的方式使用 python 下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/862173/

相关文章:

Python argparse - 如果没有给出参数,则默认互斥组

python - Py2Neo 没有正确创建日期时间数据类型?

asp.net - ASP.NET(WebForms 或 MVC)应用程序中的哪个代码组件服务于图像等网站资源?

php - 如何在服务器中运行 PHP 代码的同时阻止 PHP 向客户端发送数据?

php - 使用 php 通过 ftp 下载文件

Java + Spring 启动 : Downloading image and pass it to a request

python - Google 通过图像脚本搜索本地镜像

javascript - ECSDA用Python签名,用JS验证

html - Netflix 如何在不刷新页面且不使用 JavaScript 的情况下提交评级?

java - 如何使用 Selenium 读取pdf文件