17.3.12--urllib2模块
1---urllib2是非常强大的Python网络资源访问模块,它的功能和urllib模块相似
python标准库中的urllib2模块可以说是urlib模块的一个升级的复杂版,不需要另外下载,
比如访问的网络资源需要http验证,
需要cookie信息,
模仿普通浏览器一样去访问网络,网页资源
这个时候用urllib2
2---urllib2模块介绍
1)设置timeout超时设置:
import urllib2
test=urllib2.urlopen('http://www.iplaypy.com/',timeout=15)
#2个参数,一个是url地址,一个是超时的时候,这次的测试设定值是15
2)在访问的时候加入Header头部信息
header={“User-Agent”:“Mozilla-firefox24.0”} #字典类型
urllib2.urlopen(url,header)
像上面这样的操作,就可以加上Header头部信息,用来模仿浏览器行为,应对一些禁止爬虫的网络资 源,非常实用
3)用urllib2得到http网页状态码
import urllib2
test=urllib2.urlopen("http://baidu.com/”)
test.code
这样就可以访问百度的网页状态码,200证明能访问,得到网页内容
4)使用urllib2对Cookie进行处理
import urllib2
import cookielib
cookie=cookielib.CookieJar() #后面函数方法要注意C和J是大写的
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response=opener.open('http://www.baidu.com')
for item in cookie:
if item.name=="some——cookie_item_name"
print item.value
5)urlopen()----是处理的入口函数,获取OpenerDiretor对象,调用Opener.open()
默认的OpenDiretor对象保存在变量_open中,采用Singleton模式
build_opener()----
install_opener()---将OpenerDirector对象保存在变量_opener中,作为默认opener使用
class Openerdirector
class Resquest---作为一个信息对象,保存和url相关的参数,包括headers,data,proxy等,用于url参数传递
class HTTPHandler---类继承者关系:BaseHandler-->AbstracHTTPHandler-->HTTPHandler
调用httplib.HTTPConnection完成HTTp的处理