python urllib/requests无法下载文件,但浏览器无法下载
我正在下载这个。 zip文件通过chrome正确下载,但使用requests或urllib时出现400错误请求失败python urllib/requests无法下载文件,但浏览器无法下载,python,python-requests,urllib,Python,Python Requests,Urllib,我正在下载这个。 zip文件通过chrome正确下载,但使用requests或urllib时出现400错误请求失败 >> import requests >> import urllib >> url = 'http://prd-enforce-xfr-02.dol.gov/../data_catalog/EBSA/ebsa_ocats_20150703.csv.zip' >> r = requests.get(url) >> r.o
>> import requests
>> import urllib
>> url = 'http://prd-enforce-xfr-02.dol.gov/../data_catalog/EBSA/ebsa_ocats_20150703.csv.zip'
>> r = requests.get(url)
>> r.ok
False
>> r.headers
{'content-length': '254', 'content-encoding': 'gzip', 'vary': 'Accept-Encoding', 'server': 'Apache/2.2.14 (Ubuntu)', 'connection': 'close', 'date': 'Tue, 07 Jul 2015 20:39:55 GMT', 'content-type': 'text/html; charset=iso-8859-1'}
>> r
<Response [400]>
>> r.text
u'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>400 Bad Request</title>\n</head><body>\n<h1>Bad Request</h1>\n<p>Your browser sent a request that this server could not understand.<br />\n</p>\n<hr>\n<address>Apache/2.2.14 (Ubuntu) Server at prd-enforce-xfr-02.dol.gov Port 80</address>\n</body></html>\n'
>> z = urllib.urlopen(url)
>> z.read()
'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>400 Bad Request</title>\n</head><body>\n<h1>Bad Request</h1>\n<p>Your browser sent a request that this server could not understand.<br />\n</p>\n<hr>\n<address>Apache/2.2.14 (Ubuntu) Server at prd-enforce-xfr-02.dol.gov Port 80</address>\n</body></html>\n'
导入请求
>>导入URL库
>>url='1〕http://prd-enforce-xfr-02.dol.gov/../data_catalog/EBSA/ebsa_ocats_20150703.csv.zip'
>>r=请求。获取(url)
>>好的
假的
>>r.headers
{'content-length':'254','content-encoding':'gzip','vary':'Accept-encoding','server':'Apache/2.2.14(Ubuntu','connection':'close','date':'Tue,Jul 2015 20:39:55 GMT','content-type':'text/html;charset=iso-8859-1'}
>>r
>>r.text
u'\n\n400错误请求\n\n错误请求\n您的浏览器发送了一个此服务器无法理解的请求。\n\n
\nApache/2.2.14(Ubuntu)服务器位于prd-enforce-xfr-02.dol.gov端口80\n\n >>z=urllib.urlopen(url) >>z.读() “\n\n400错误请求\n\n错误请求\n您的浏览器发送了一个此服务器无法理解的请求。
\n\n
\nApache/2.2.14(Ubuntu)服务器位于prd-enforce-xfr-02.dol.gov端口80\n\n” 我尝试过(但失败了)的事情:
- 欺骗用户代理标头
- 通过使用请求会话持久化cookie
.移除多余的/。。从url。它在浏览器中工作,因为浏览器为您标准化URL。没有/。。这可以很好地处理urllib或请求 Chrome和Firefox删除“.”,因此请求的有效URL是
http://prd-enforce-xfr-02.dol.gov/data_catalog/EBSA/ebsa_ocats_20150703.csv.zip
移除。。在你的要求和它应该工作