Python 无法在urllib2中打开某些仍可以在浏览器中打开的url?

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 "<

我可以在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 "<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
),但请求只会自动执行。