使用urllib2的代理
我用下面的方式打开网址:
site = urllib2.urlopen('http://google.com')
我想用代理以同样的方式连接。有人告诉我可以这样做:
site = urllib2.urlopen('http://google.com', proxies={'http':'127.0.0.1'})
但是这样也不行。
我知道urllib2有类似代理处理的功能,但我想不起来具体的函数是什么了。
7 个回答
13
你可以通过环境变量来设置代理。
import os
os.environ['http_proxy'] = '127.0.0.1'
os.environ['https_proxy'] = '127.0.0.1'
urllib2
会自动添加代理处理器。你需要为不同的协议单独设置代理,否则它们会失败(也就是说不会通过代理),具体情况见下面的内容。
举个例子:
proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')
# next line will fail (will not go through the proxy) (https)
urllib2.urlopen('https://www.google.com')
而不是
proxy = urllib2.ProxyHandler({
'http': '127.0.0.1',
'https': '127.0.0.1'
})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
# this way both http and https requests go through the proxy
urllib2.urlopen('http://www.google.com')
urllib2.urlopen('https://www.google.com')
20
你需要安装一个代理处理器
urllib2.install_opener(
urllib2.build_opener(
urllib2.ProxyHandler({'http': '127.0.0.1'})
)
)
urllib2.urlopen('http://www.google.com')
144
在编程中,有时候我们会遇到一些问题,尤其是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,但其实大部分时候,解决这些问题的方法都很简单。
比如说,当你在写代码的时候,如果出现了错误,首先要做的就是仔细检查你的代码。看看有没有拼写错误,或者是漏掉了某些符号。很多时候,错误就藏在这些小细节里。
另外,了解你使用的工具或库的文档也是非常重要的。文档里通常会有很多示例和说明,可以帮助你更好地理解如何使用这些工具。
如果你还是解决不了问题,可以考虑去网上找一些相关的讨论,比如在StackOverflow上提问或者搜索。很多时候,别人也遇到过类似的问题,他们的解决方案可能会对你有帮助。
总之,遇到问题不要慌,慢慢来,仔细检查,善用文档和社区资源,通常都能找到解决办法。
proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')