无法使用python从URL下载文件

Posted

技术标签:

【中文标题】无法使用python从URL下载文件【英文标题】:Unable to download file from URL using python 【发布时间】:2022-01-18 12:18:43 【问题描述】:

我正在尝试从 URL 下载文件:

https://www.cmegroup.com/content/dam/cmegroup/notices/clearing/2020/08/Chadv20-239.pdf

我尝试使用 python 请求库,但请求刚刚超时。我尝试将浏览器中的“用户代理”指定为标题,但它仍然只是超时,包括当我将浏览器中的每个标题复制到我的 python 脚本中时。我尝试设置allow_redirects = True,这没有帮助。我也尝试过 wget 和 curl,除了实际打开浏览器、访问 URL 和下载文件之外,一切都失败了。

我想知道我的浏览器中的请求与我将标头设置为与浏览器中的标头匹配的 python 请求之间的实际区别是什么 - 有什么方法可以使用 python 下载此文件?

代码sn-p:

import requests
requests.get("https://www.cmegroup.com/content/dam/cmegroup/notices/clearing/2020/08/Chadv20-239.pdf") # hangs

【问题讨论】:

把你的代码sn-p。 【参考方案1】:

检查一下,它对我有用。

import requests
headers = 
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
response = requests.get(
    "https://www.cmegroup.com/content/dam/cmegroup/notices/clearing/2020/08/Chadv20-239.pdf", headers=headers)
pdf = open("Chadv20-239.pdf", 'wb')
pdf.write(response.content)
pdf.close()

【讨论】:

谢谢 - 这行得通 - 我认为 User-Agent 标头一定已经过时了【参考方案2】:

如果没有一些代码 sn-p,很难理解可能出现的问题。文件是如何下载的?您是否正在获取原始响应内容并将其保存为 pdf?官方文档(https://docs.python-requests.org/en/latest/user/quickstart/#raw-response-content)建议使用基于块的方法来保存流/原始内容。您尝试过这种方法吗?

【讨论】:

谢谢,试过了,但请求仍然挂起

以上是关于无法使用python从URL下载文件的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用Ajax从远程服务器下载文件,而Codeigniter无法正常工作

Excel使用VBS和批处理下载文件,无法从VBS下载文件

Python async/await 下载 url 列表

Python - 从 Internet 下载 .exe 文件

无法使用从 getDownloadUrl 下载的 Firestore 存储 URL 作为图像 src

无法使用 python 请求下载 pdf