【爬虫学习笔记03】使用handler和opener代理
由于反爬机制中,可以针对频繁访问站点的ip进行封口,也可以从cookie检测是否是真人访问【一般浏览器在我们访问网站时会帮我们在包里加入cookie】,而urlopen没有办法解决代理ip以及添加cookie访问的操作,于是乎,我们需要重新定义一种open的方式
build_opener是一种定义open的方式,通过官方文档可见,它需要传入一个handler参数
如果我们要使用代理服务器,就传入一个ProxyHandler实例
而这个的参数是一个字典即dict
故实现通过代理访问网站可以这么写:
1 2 3 4 5 6 |
from urllib import request as r handler = r.ProxyHandler({'http':'ip:port'}) opener = r.build_opener(handler) test = opener.open('url') print(test.read()) |
而这个open函数在官方文档里是这样的
仍然是可以接受一个Request对象,且文档直接指出open和urlopen的用法是一致的