【问题标题】:Download content-disposition from http response header (Python 3)从 http 响应头下载 content-disposition (Python 3)
【发布时间】:2015-02-04 01:04:48
【问题描述】:

我在这里寻求一点帮助。我一直在使用 Python 中的请求来访问网站。我能够访问该网站并获得响应标头,但我不确定如何下载 Content-disposition 中包含的 zip 文件。我猜这不是 Requests 可以处理的功能,或者至少我似乎找不到任何关于它的信息。如何访问文件并保存它?

'Content-disposition': 'attachment;filename=MT0376_DealerPrice.zip'

【问题讨论】:

    标签: python-3.x python-requests


    【解决方案1】:

    使用urllib 而不是requests,因为它是一个更轻量级的库:

    import urllib
    
    req = urllib.request.Request(url, method='HEAD')
    r = urllib.request.urlopen(req)
    print(r.info().get_filename())
    

    例子:

    In[1]: urllib.request.urlopen(urllib.request.Request('https://httpbin.org/response-headers?content-disposition=%20attachment%3Bfilename%3D%22example.csv%22', method='HEAD')).info().get_filename()
    Out[1]: 'example.csv'
    

    【讨论】:

      【解决方案2】:

      您要做的是访问 response.content。如果内容确实包含文件,您可能希望添加更好的检查。

      小例子sn-p

      response = requests.post(url, files={'name': 'filename.bin'}, timeout=60, stream=True)
      if response.status_code == 200:
          if response.headers.get('Content-Disposition'):
              print("Got file in response")
              print("Writing file to filename.bin")
              open("filename.bin", 'wb').write(response.content)
      

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 2020-04-02
        • 2010-11-03
        • 2021-12-01
        • 2017-10-10
        • 2018-10-30
        • 2013-02-10
        • 2019-03-11
        • 2012-10-12
        相关资源
        最近更新 更多