1. Python 的 urllib2 设置带有密码验证的代理服务器,简洁写法如下:
proxy_handler = urllib2.ProxyHandler({'http': 'username:psw@IP:port'}) opener = urllib2.build_opener(proxy_handler) urllib2.install_opener(opener) response = urllib2.urlopen('http://google.com') html = response.read()
此种写法中,代理部分
urllib2.ProxyHandler({'http': 'username:psw@IP:port'})的
'username:psw@IP:port' 没有添加“http://”, 但是效果相同!
2. urllib2的opener中的 handler 默认值当中,已经有
HTTPHandler 所以 如下的写法中
import urllib2 proxy_support = urllib2.ProxyHandler({'http':'http://usename:psw@IP:port'}) auth = urllib2.HTTPBasicAuthHandler() opener = urllib2.build_opener(proxy_support, auth, urllib2.HTTPHandler) urllib2.install_opener(opener) response = urllib2.urlopen('http://google.com') html = response.read()
后面添加的 HTTPBasicAuthHandler, urllib2.HTTPHandler 实际上并没有额外的作用! 第一种的简洁写法已经可以使用!