首页 > 解决方案 > 尝试从网站获取文件,但延迟正在毁掉一切

问题描述

我试图获取一个 excel 文件,urllib如下所示

import urllib.request as url

request = url.urlopen("url").geturl()
url.urlretrieve(request,"excelfile.xls")

但是,该 url 不是指向文件的直接链接,而是指向一个 html 页面,该页面会在一小段延迟后触发下载(没有任何重定向)。这会导致上述代码取而代之的是检索 html 文件。

我已经为此制定了一个临时解决方案,但它非常不可靠。见下文。

req1 = url.urlopen("url").geturl()
url.urlretrieve(req1,"excelfile.xls")

time.sleep(5)

req2 = url.urlopen("url").geturl()
url.urlretrieve(req2,"excelfile.xls")

time.sleep(5)有时会弥补延迟并下载正确的文件。

有没有更可靠的方法来确保获得正确的文件?

我尝试过使用.info()可能会尝试重试代码,直到我获得正确的文件,但是在尝试下面的代码时,打印的信息与来自urlretrieve. 我可能用错了。

req1 = url.urlopen("url")
url.urlretrieve(req1.geturl(),"excelfile.xls")

info = req1.info()
print(info.get_content_type()) 

time.sleep(5)

req2 = url.urlopen("url")
url.urlretrieve(req2.geturl(),"excelfile.xls")

info = req2.info()
print(info.get_content_type())

有什么建议么?

可以在此处找到 Excel 文件的 url 。

标签: pythonurllib

解决方案


推荐阅读