我一直在使用请求包与网络进行交互,过去没有任何问题。最近在使用我大约一周未使用的脚本时,我在进行例行requests.get()
调用时遇到以下错误:
LocationValueError: No host specified.
经过大量google搜索python requests LocationValueError
,python requests no host error
和python urllib3 LocationValueError
的各种排列后(根据堆栈跟踪,urllib3
引发错误,请求使用下方)I只设法找到隐藏在urllib3
文档中的这些信息:
例外urllib3.exceptions.LocationValueError
当给定的URL输入有问题时引发。
我的版本的请求包可能有问题,因为这可以说是请求包中使用的最基本的调用之一,我做了以下操作:
在所有实例中,我使用以下代码来查看请求是否仍然抛出LocationValueError:
import requests
address = 'http://www.google.com/'
requests.get(address)
过去一直有效。我检查了另一台计算机(一台ubuntu笔记本电脑)并在那里工作,这让我觉得这个问题是我计算机特有的。
这是我在使用virtualenv和python3.4中安装的请求时获得的堆栈跟踪。
In [5]: import requests In [6]: requests.get('http://www.google.com/') --------------------------------------------------------------------------- LocationValueError Traceback (most recent call last) in () ----> 1 requests.get('http://www.google.com/') /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/api.py in get(url, params, **kwargs) 67 68 kwargs.setdefault('allow_redirects', True) ---> 69 return request('get', url, params=params, **kwargs) 70 71 /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/api.py in request(method, url, **kwargs) 48 49 session = sessions.Session() ---> 50 response = session.request(method=method, url=url, **kwargs) 51 # By explicitly closing the session, we avoid leaving sockets open which 52 # can trigger a ResourceWarning in some cases, and look like a memory leak /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 466 } 467 send_kwargs.update(settings) --> 468 resp = self.send(prep, **send_kwargs) 469 470 return resp /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/sessions.py in send(self, request, **kwargs) 574 575 # Send the request --> 576 r = adapter.send(request, **kwargs) 577 578 # Total elapsed time of the request (approximately) /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/adapters.py in send(self, request, stream, timeout, verify, cert, proxies) 335 """ 336 --> 337 conn = self.get_connection(request.url, proxies) 338 339 self.cert_verify(conn, request.url, verify, cert) /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/adapters.py in get_connection(self, url, proxies) 247 proxy = prepend_scheme_if_needed(proxy, 'http') 248 proxy_manager = self.proxy_manager_for(proxy) --> 249 conn = proxy_manager.connection_from_url(url) 250 else: 251 # Only scheme should be lower case /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/packages/urllib3/poolmanager.py in connection_from_url(self, url) 137 """ 138 u = parse_url(url) --> 139 return self.connection_from_host(u.host, port=u.port, scheme=u.scheme) 140 141 def urlopen(self, method, url, redirect=True, **kw): /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/packages/urllib3/poolmanager.py in connection_from_host(self, host, port, scheme) 246 247 return super(ProxyManager, self).connection_from_host( --> 248 self.proxy.host, self.proxy.port, self.proxy.scheme) 249 250 def _set_proxy_headers(self, url, headers=None): /home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/packages/urllib3/poolmanager.py in connection_from_host(self, host, port, scheme) 108 109 if not host: --> 110 raise LocationValueError("No host specified.") 111 112 scheme = scheme or 'http' LocationValueError: No host specified.
如果有人可以帮助解释错误的原因或指出我正确的方向,那将是最受欢迎的。当我使用request.Session对象获取扩展会话的页面时,也会发生此问题。
答案 0 :(得分:2)
对我来说,问题是我被请求的网址是否重定向到位置:https // ,这可能无效,但urllib3无法处理。