【问题标题】:How to download a file using python that is sent after some delay by server?如何使用 python 下载在服务器延迟一段时间后发送的文件?
【发布时间】:2016-02-11 09:43:44
【问题描述】:

我必须从本地服务器下载大量文件。在浏览器 [Firefox] 中打开 URL 时,页面打开内容为“正在生成文件.. 等待..”,然后弹出窗口会出现保存所需 .xlsx 文件的选项。

我尝试使用 urllib 保存页面对象,但它保存的 .html 文件的内容为“正在生成的文件..等待..”。我使用了此处描述的代码(使用 urllib2): How do I download a file over HTTP using Python?

我不知道如何下载服务器稍后发送的文件。它在浏览器中运行良好。如何用python模拟它?

【问题讨论】:

    标签: python file download urllib2 urllib


    【解决方案1】:

    首先,您必须知道生成文档的确切 URL。您可以使用 firefox 和插件 Http Live Headers。

    然后用python“模拟”同样的请求。

    希望对你有所帮助。

    PD:或者分享网站的网址,然后我可以更好地帮助你。

    【讨论】:

    • 谢谢。 HTTP Live Headers 插件帮助我找出了下载实际文件的链接。在我的情况下,服务器正在动态更改服务器端公共文件的内容,并将我重定向到下载该文件的公共链接。
    【解决方案2】:
    import requests 
    url = 'https://readthedocs.org/projects/python-guide/downloads/pdf/latest/'
    myfile = requests.get(url, allow_redirects=True)
    open('c:/example.pdf', 'wb').write(myfile.content)
    

    有点老,但面临同样的问题。 解决的关键在allow_redirects=True。

    【讨论】:

      【解决方案3】:

      就这么简单

      import urllib2
      import time
      
      response = urllib2.urlopen('http://www.example.com/')
      time.sleep(10)  # Or however long you need.
      html = response.read()
      

      【讨论】:

      • 不起作用。结果与以前相同。 time.sleep(10) 不会停止响应以具有 html 内容而不是 .xlsx 内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2020-03-04
      相关资源
      最近更新 更多