请求:使用python 3下载excel文件(对于以16为基数的int()无效)
我是python新手,我正在学习使用它来为我搜集一些数据,但我无法下载excel文件,原因是我不理解。我想下载此excel文件,当我在任何浏览器中打开此链接时,它会尝试保存excel文件: 基于前面的一个问题(请参阅),我在python 3中使用了如下请求:请求:使用python 3下载excel文件(对于以16为基数的int()无效),python,excel,python-3.x,download,python-requests,Python,Excel,Python 3.x,Download,Python Requests,我是python新手,我正在学习使用它来为我搜集一些数据,但我无法下载excel文件,原因是我不理解。我想下载此excel文件,当我在任何浏览器中打开此链接时,它会尝试保存excel文件: 基于前面的一个问题(请参阅),我在python 3中使用了如下请求: import requests, os url="http://www5.registraduria.gov.co/CuentasClarasPublicoCon2014/Consultas/Candidato/Formulario5
import requests, os
url="http://www5.registraduria.gov.co/CuentasClarasPublicoCon2014/Consultas/Candidato/Formulario5xls/2"
print("Downloading...")
requests.get(url)
output = open('test.xls', 'wb')
output.write(resp.content)
output.close()
print("Done!")
我认为问题不在于创建test.xls后写入数据的代码部分,而是作为一个空文件。requests.get给了我以下错误(后面还有几个错误):
我也尝试过使用urllib,但仍然失败。这似乎是一个错误
解决此问题的一种方法是使用HTTP1.0
。要执行此操作,请将httplib
变量\u http\u vsn
和\u http\u vsn\u str
设置为类似
用于Python 2
import requests, os
import httplib
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'
url="http://www5.registraduria.gov.co/CuentasClarasPublicoCon2014/Consultas/Candidato/Formulario5xls/2"
print("Downloading...")
resp = requests.get(url)
with open('test.xls', 'wb') as output:
output.write(resp.content)
print("Done!")
对于Python3httplib
被重命名为http.client
,因此代码变为
import requests, os
import http.client
http.client.HTTPConnection._http_vsn = 10
http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
url="http://www5.registraduria.gov.co/CuentasClarasPublicoCon2014/Consultas/Candidato/Formulario5xls/2"
print("Downloading...")
resp = requests.get(url)
with open('test.xls', 'wb') as output:
output.write(resp.content)
print("Done!")
如果您尝试使用wget或curl,则URL似乎有问题。来自wget:“2015-11-03 22:01:59(52.7 KB/s)-字节21504处读取错误(成功)。正在重试。”。来自curl:“curl:(18)传输已结束,剩余未完成的读取数据”谢谢!这很有效。问题,如果我在几个链接上创建一个循环,我只需要更改http变量一次,对吗?
import requests, os
import http.client
http.client.HTTPConnection._http_vsn = 10
http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
url="http://www5.registraduria.gov.co/CuentasClarasPublicoCon2014/Consultas/Candidato/Formulario5xls/2"
print("Downloading...")
resp = requests.get(url)
with open('test.xls', 'wb') as output:
output.write(resp.content)
print("Done!")