Python 无法在urllib2中打开某些仍可以在浏览器中打开的url?
我可以在firefox或chrome中打开它,但我不能用urllib2打开它Python 无法在urllib2中打开某些仍可以在浏览器中打开的url?,python,urllib2,Python,Urllib2,我可以在firefox或chrome中打开它,但我不能用urllib2打开它 >>> req = urllib2.Request(r"http://ratedata.gaincapital.com/2014/.\01 January", headers={'User-Agent' : "Mozilla/5.1"}) >>> urllib2.urlopen(req) Traceback (most recent call last): File "<
>>> req = urllib2.Request(r"http://ratedata.gaincapital.com/2014/.\01 January", headers={'User-Agent' : "Mozilla/5.1"})
>>> urllib2.urlopen(req)
Traceback (most recent call last):
File "<pyshell#134>", line 1, in <module>
urllib2.urlopen(req)
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 448, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 400: Bad Request
请求(r)http://ratedata.gaincapital.com/2014/.\1月1日”,标题={'User-Agent':“Mozilla/5.1})
>>>urllib2.urlopen(请求)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
urllib2.urlopen(请求)
文件“/usr/lib/python2.7/urllib2.py”,urlopen中的第127行
return\u opener.open(url、数据、超时)
文件“/usr/lib/python2.7/urllib2.py”,第410行,打开
响应=方法(请求,响应)
http_响应中的文件“/usr/lib/python2.7/urllib2.py”,第523行
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python2.7/urllib2.py”,第448行出错
返回自我。调用链(*args)
文件“/usr/lib/python2.7/urllib2.py”,第382行,在调用链中
结果=func(*args)
文件“/usr/lib/python2.7/urllib2.py”,第531行,默认为http\u error\u
raise HTTPError(请求获取完整url(),代码,消息,hdrs,fp)
HTTPError:HTTP错误400:请求错误
非常奇怪的url,但如何修复此问题?将空白替换为
%20
>>> req = urllib2.Request(r"http://ratedata.gaincapital.com/2014/.\01%20January", headers={'User-Agent' : "Mozilla/5.1"})
>>> urllib2.urlopen(req)
<addinfourl at 139708797193896 whose fp = <socket._fileobject object at 0x7f10820eb2d0>>
请求(r)http://ratedata.gaincapital.com/2014/.\01%20January”,标题={'User-Agent':“Mozilla/5.1})
>>>urllib2.urlopen(请求)
可能是因为“1月1日”中有空格。我用%20替换了空白,它起作用了Hanks@yeputons!它和cookies无关,但请求肯定比urllib2好得多。它只是直接解决了这个问题,即使没有标头。如果您能进一步解释为什么请求可以像这样与url一起工作,我应该接受您的回答。只需使用请求来解决所有这些问题。它需要重新排序(
requests.utils.requote\u uri
),但请求只会自动执行。