urllib2.ProxyHandler - 查询

时间:2013-08-20 01:03:31

标签: python url proxy python-2.6

定义:

urllib2.ProxyHandler([proxies])

导致请求通过代理。如果给出了代理,则它必须是将协议名称映射到代理URL的字典。默认设置是从环境变量_proxy中读取代理列表。如果未设置代理环境变量,则在Windows环境中,从注册表的“Internet设置”部分获取代理设置,在Mac OS X环境中,从OS X系统配置框架中检索代理信息。

我的理解是,如果代理未设置明确,它会从注册表设置中检测代理。

当我运行以下代码时Buet:

import urllib2
proxy_support = urllib2.ProxyHandler({})
print "1"
opener = urllib2.build_opener(proxy_support)
print "2"
urllib2.install_opener(opener)
print "3"
response = urllib2.urlopen('http://google.com')
print "4"
html = response.read()

我收到错误:

1
2
3
urllib2.URLError: <urlopen 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>

这意味着该段代码无法打开网站。我不确定我哪里出错了,不应该按照定义urllib2.ProxyHandler,从注册表中取出代理,因为我没有明确设置代理?

1 个答案:

答案 0 :(得分:1)

  

不应该按照定义urllib2.ProxyHandler,从注册表中获取代理,因为我没有明确设置代理?

明确将代理设置为{}。正如文档所说:

  

要禁用自动检测的代理,请传递一个空字典。

而不是:

proxy_support = urllib2.ProxyHandler({})

你需要这样做:

proxy_support = urllib2.ProxyHandler()