为什么可以';我不能得到Python';在Windows上运行的urlopen()方法?

为什么可以';我不能得到Python';在Windows上运行的urlopen()方法?,python,urllib,Python,Urllib,为什么这个简单的Python代码不起作用 import urllib file = urllib.urlopen('http://www.google.com') print file.read() 这是我得到的错误: Traceback (most recent call last): File "C:\workspace\GarchUpdate\src\Practice.py", line 26, in <module> file = urllib.urlopen(

为什么这个简单的Python代码不起作用

import urllib
file = urllib.urlopen('http://www.google.com')
print file.read()
这是我得到的错误:

Traceback (most recent call last):
  File "C:\workspace\GarchUpdate\src\Practice.py", line 26, in <module>
    file = urllib.urlopen('http://www.google.com')
  File "C:\Python26\lib\urllib.py", line 87, in urlopen
    return opener.open(url)
  File "C:\Python26\lib\urllib.py", line 206, in open
    return getattr(self, name)(url)
  File "C:\Python26\lib\urllib.py", line 345, in open_http
    h.endheaders()
  File "C:\Python26\lib\httplib.py", line 892, in endheaders
    self._send_output()
  File "C:\Python26\lib\httplib.py", line 764, in _send_output
    self.send(msg)
  File "C:\Python26\lib\httplib.py", line 723, in send
    self.connect()
  File "C:\Python26\lib\httplib.py", line 704, in connect
    self.timeout)
  File "C:\Python26\lib\socket.py", line 514, in create_connection
    raise error, msg
IOError: [Errno socket error] [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
回溯(最近一次呼叫最后一次):
文件“C:\workspace\GarchUpdate\src\Practice.py”,第26行,在
file=urllib.urlopen('http://www.google.com')
文件“C:\Python26\lib\urllib.py”,第87行,在urlopen中
返回opener.open(url)
文件“C:\Python26\lib\urllib.py”,第206行,打开
返回getattr(self,name)(url)
文件“C:\Python26\lib\urllib.py”,第345行,在OpenHTTP中
h、 endheaders()
文件“C:\Python26\lib\httplib.py”,第892行,在endheaders中
self.\u发送\u输出()
文件“C:\Python26\lib\httplib.py”,第764行,在发送输出中
self.send(msg)
文件“C:\Python26\lib\httplib.py”,第723行,在send中
self.connect()
文件“C:\Python26\lib\httplib.py”,第704行,在connect中
自我保护(超时)
文件“C:\Python26\lib\socket.py”,第514行,在create\u connection中
引发错误,msg
IOError:[Errno socket error][Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应

我已经在几个不同的页面上尝试过了,但我始终无法正确执行
urlopen
方法。

您的代码不是问题所在

你的IE中有代理设置吗

这说明urllib.urlopen的python文档:

在Windows环境中,如果未设置代理环境变量,
代理设置从注册表的Internet设置中获取


如果您有wireshark,请检查发送的内容以及是否有任何内容返回。如果可以看到发送的GET请求,它将帮助您调试问题

我还记得有一次遇到类似的问题,我所做的就是刷新我的dns缓存


(ipconfig/flushdns)并重新启动。它解决了我的问题。我想试试也无妨。

如果可以更改某些代码行,请尝试使用urllib2。以秒为单位设置超时参数

例如:

urllib2.urlopen(http://www.abc.com/api, timeout=20)
在这里,连接持续时间更长。因此,如果您正在读取一个太大的XML文件,它可以避免不完整的读取

如果网络连接缓慢或突然中断,上述代码将永远无法工作。

对于python 3:

import urllib.request

proxies=urllib.request.ProxyHandler({'http':None})

opener=urllib.request.build_opener(proxies)

urllib.request.install_opener(opener)

j=urllib.request.urlopen(url="https://google.com")

k=j.read()

print(k)

对我来说很好。可能要检查防火墙设置。@语法-正在考虑。。。我的办公室有一个非常强大的防火墙。但是我可以在浏览器中导航到该页面而不会出现任何问题。请检查您的python是否可以访问防火墙。抱歉,我不记得确切的设置,但是您的环境中有一些变量决定python如何进入web(防火墙/代理/等等)。是否涉及代理?文档说明,如果您使用的是需要身份验证的代理,则此方法肯定不起作用。我不确定如果你尝试的话会出现什么样的错误。有关更多信息,请参阅。欢迎使用堆栈溢出!花点时间阅读帮助中心中的。堆栈溢出上的格式与其他站点不同。@Reza OP使用的是Python 2.6,您的答案对该版本适用吗?