我刚刚写了一个简单的python演示,遇到了一个令人困惑的问题。
import requests
print(requests.get('http://www.sina.com.cn/'))
我知道正确的结果是返回Response [200]。但在我的WIN10 x64中,它会返回以下错误,我想我的计算机可能会出现一些问题。
Traceback (most recent call last):
File "C:\Users\CJY\Desktop\Python_Demo\web.py", line 2, in <module>
print(requests.get('http://www.sina.com.cn/'))
File "D:\python3.6.1\lib\site-packages\requests\api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "D:\python3.6.1\lib\site-packages\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "D:\python3.6.1\lib\site-packages\requests\sessions.py", line 518, in request
resp = self.send(prep, **send_kwargs)
File "D:\python3.6.1\lib\site-packages\requests\sessions.py", line 639, in send
r = adapter.send(request, **kwargs)
File "D:\python3.6.1\lib\site-packages\requests\adapters.py", line 403, in send
conn = self.get_connection(request.url, proxies)
File "D:\python3.6.1\lib\site-packages\requests\adapters.py", line 302, in get_connection
conn = proxy_manager.connection_from_url(url)
File "D:\python3.6.1\lib\site-packages\requests\packages\urllib3\poolmanager.py", line 279, in connection_from_url
pool_kwargs=pool_kwargs)
File "D:\python3.6.1\lib\site-packages\requests\packages\urllib3\poolmanager.py", line 408, in connection_from_host
self.proxy.host, self.proxy.port, self.proxy.scheme, pool_kwargs=pool_kwargs)
File "D:\python3.6.1\lib\site-packages\requests\packages\urllib3\poolmanager.py", line 218, in connection_from_host
raise LocationValueError("No host specified.")
requests.packages.urllib3.exceptions.LocationValueError: No host specified.
[Finished in 0.2s]
请帮助我!
答案 0 :(得分:0)
这对我有用。请确保您具有互联网连接,您可以ping www.sina.com.cn
答案 1 :(得分:0)
在Windows 10 64-Bit上使用相同的python版本测试了它,它对我有用。
当在Windows中使用请求时,当本地dns缓存指向不正确的值时,我遇到了相同的错误。 如果您还没有运气,请尝试在该计算机上刷新本地dns缓存,然后在命令提示符下输入以下命令。
ipconfig /flushdns
答案 2 :(得分:0)
错误位置:
Lib\urllib\request.py:
proxyEnable = winreg.QueryValueEx(internetSettings, 'ProxyEnable')[0]
如果 proxyEnable 是字符串,您将看到错误。原因是在您的注册表中,ProxyEnable设置为REG_SZ而不是REG_DWORD,因此更改它,一切正常。 打开注册表:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ProxyEnable
(您也可以直接搜索ProxyEnable)
删除ProxyEnable 创建一个新的ProxyEnable表单(REG_SZ 0)到(REG_DWORD 0x00000000(0))
参见下面的图片,我的电脑语言是中文,但ProxyEnable的位置是相同的。