【问题标题】:'requests' in python is not downloading file completelypython中的“请求”没有完全下载文件
【发布时间】:2018-05-28 09:52:46
【问题描述】:

我正在使用 Python 的 requests 库来下载一个大小约为 1 的文件。 40mb。但是使用我的代码,我只能获得 14mb 大小的文件。它没有显示任何错误(尽管在下载文件之前很少出现警告)。

这是我的代码:

import requests
file_url = "https://file_url.tar"

user='username'
passw='password'
r = requests.get(file_url,auth=(user,passw),verify=False, stream = True)
with open("c.tar","wb") as code:
   for chunk in r.iter_content(chunk_size=1024):
       if chunk:
         code.write(chunk)

我也尝试过不使用“stream=True”。但这也行不通。

当我将此 URL 放入浏览器时,我得到了 40 mb 的完整文件。

我在其他机器上尝试了这个脚本,它在那里运行良好(我也在这里收到了这些警告)。

这些是我收到的警告:

SNIMissingWarning:已发出 HTTPS 请求,但 TLS 的 SNI(主题名称指示)扩展在此平台上不可用。这可能会导致服务器提供不正确的 TLS 证书,从而导致验证失败。有关详细信息,请参阅https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning。 SNIMissingWarning

InsecurePlatformWarning:真正的 SSLContext 对象不可用。这会阻止 urllib3 正确配置 SSL,并可能导致某些 SSL 连接失败。有关详细信息,请参阅https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning。 不安全平台警告

InsecureRequestWarning:正在发出未经验证的 HTTPS 请求。强烈建议添加证书验证。见:https://urllib3.readthedocs.org/en/latest/security.html 不安全请求警告)

但我认为这没有问题,因为如果我在其他系统上运行此脚本,我会收到这些警告,但脚本运行正常。

【问题讨论】:

标签: python python-requests


【解决方案1】:

我使用的是 urllib 而不是请求

import urllib
url = "http://62.138.7.10/downloads/Bh2g2m.Bh2g.06.DR.M0viesC0unter.mp4?st=6MVZyTUL7X22v7ILOtB2XA&e=1502823147"
file_name = 'trial_video.mp4'
response = urllib.urlopen(url)
with open(file_name,'wb') as f:
    f.write(response.read())

希望对您有所帮助

【讨论】:

  • 请注意,在 python3 中它是urllib.request.urlopen(url)
  • 是的,对于 Python3 中的所有网络调用,我几乎都使用 requests 模块
【解决方案2】:

我在使用 Requests 时遇到过类似的问题。 Requests 非常适合做花哨的 JSON api POST 请求等,但对于普通文件下载,pycurl 是一个更好的工具。对 libcurl 的复杂依赖意味着你不应该尝试使用 pip 安装 pycurl;相反,您需要从您的发行版下载副本,或使用他们网站上的预构建 win32 模块之一。

值得一提的是,当我使用请求文件下载时,我还设置了日志记录,但出现了一些“管道损坏”错误。也许 Requests 出于性能原因或其他原因提前断开连接?当我知道有一个可靠的替代解决方案时,我没有耐心去弄清楚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2019-06-01
    • 2020-07-11
    相关资源
    最近更新 更多