爬虫-urllib模块的使用
2009 年 11 月 29 日
from urllib.request import build_opener,urlopen(),install_opener,Request,ProxyHandler构建了两个代理Handler,一个有代理IP,一个没有代理IP
httpproxy_handler = urllib2.ProxyHandler({'http': '218.18.232.26:80', 'https': '218.18.232.26:80'}) nullproxy_handler = urllib2.ProxyHandler({}) proxySwitch = True #定义一个代理开关通过build_opener()方法使用这些代理Handler对象,创建自定义opener对象
根据代理开关是否打开,使用不同的代理模式
if proxySwitch:
opener = build_opener(httpproxy_handler) else: opener = build_opener(nullproxy_handler) request = Request("http://www.baidu.com/")1. 如果这么写,只有使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。
resp = opener.open(request)2. 如果这么写,就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。
install_opener(opener)
resp = urlopen(request)
print (resp.read().decode())
如果代理需要授权验证,简单的方式是只需要在ProxyHandler传入的参数字典中,将值改为’用户名:密码@ip:端口号’这种形式,比如{“http”:”myname:mypasswd@124.88.67.81:80″},复杂一点的需要创建一个密码管理对象,下面会有介绍。