代码之家  ›  专栏  ›  技术社区  ›  mandroid

乌里布。乌洛彭不工作。有解决办法吗?

  •  2
  • mandroid  · 技术社区  · 15 年前

    我得到了一个getaddress错误,在做了一些调查之后,它看起来像是我的公司内部网不允许连接(我假设是出于安全考虑,尽管IE工作起来很奇怪,但不允许python打开一个URL)。有没有安全的方法来避开这个?

    具体错误如下:

    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        b = 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 203, in open
        return getattr(self, name)(url)
      File "C:\Python26\lib\urllib.py", line 342, in open_http
        h.endheaders()
      File "C:\Python26\lib\httplib.py", line 868, in endheaders
        self._send_output()
      File "C:\Python26\lib\httplib.py", line 740, in _send_output
        self.send(msg)
      File "C:\Python26\lib\httplib.py", line 699, in send
        self.connect()
      File "C:\Python26\lib\httplib.py", line 683, in connect
        self.timeout)
      File "C:\Python26\lib\socket.py", line 498, in create_connection
        for res in getaddrinfo(host, port, 0, SOCK_STREAM):
    IOError: [Errno socket error] [Errno 11001] getaddrinfo failed
    

    更多信息:我还通过urllib2.urlopen获得此错误

    5 回复  |  直到 9 年前
        1
  •  7
  •   Jaay    9 年前

    您可能需要填写代理信息。

    import urllib2
    proxy_handler = urllib2.ProxyHandler({'http': 'http://yourcorporateproxy:12345/'})
    proxy_auth_handler = urllib2.HTTPBasicAuthHandler()
    proxy_auth_handler.add_password('realm', 'host', 'username', 'password')
    
    opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)
    opener.open('http://www.stackoverflow.com')
    
        2
  •  4
  •   rob    15 年前

    检查您使用的代理是否正确。
    您可以使用urllib.getproxys获取代理信息(注意:getproxys可以 使用动态代理配置,如使用pac时)。

    更新 根据关于空代理列表的信息,我建议使用带有代理名称和信息的urloner。
    有关如何使用代理程序的一些好信息:

    1. Urllib manual
    2. Michael Foord's introduction to urllib
        3
  •  2
  •   mhawke    15 年前

    这可能是一个DNS问题,请使用您正在访问的Web服务器的IP地址尝试urlopen,即。

    import urllib
    URL="http://66.102.11.99"   # www.google.com
    f = urllib.urlopen(URL)
    f.read()
    

    如果成功,那么可能是DNS问题,而不是代理问题(但您还应该检查代理设置)。

        4
  •  2
  •   Anthony Kong    15 年前

    看起来像是DNS问题。

    由于您使用的是Windows,因此可以尝试运行此命令

    nslookup www.google.com
    

    检查网址是否可以成功解析。

    如果不是,则是网络设置问题

    如果可以,那么我们必须寻找可能的其他原因

        5
  •  2
  •   Aman Aggarwal Charlie    15 年前

    我也面临同样的问题。 在我的系统中,代理配置是通过.pac文件进行的。 所以我打开了那个文件,取出了默认的代理URL,对我来说 http://168.219.61.250:8080/

    以下测试代码对我有效:

    import urllib2
    
    proxy_support = urllib2.ProxyHandler({'http': 'http://168.219.61.250:8080/'})
    opener = urllib2.build_opener(proxy_support)
    urllib2.install_opener(opener)
    response = urllib2.urlopen('http://python.org/')
    html = response.read()
    print html
    

    如果代理需要身份验证,您可能需要添加更多的代码。

    希望这有帮助!!