urllib

来源:互联网 发布:千牛与淘宝什么区别 编辑:程序博客网 时间:2024/06/08 15:53

urllib模块的应用:
python2里分为urllib,urllib2等模块,在3中合成了一个,另外还有urlib3等其他模块。其实他是个一个包,包括了request,error,parse,robotparser四个模块。最常用的就是request模块。
在应用是需要先导入urllib.request模块。
import urllib.request
常用的函数:
urllib.request.urlopen(url)
urlopen用来打开参数url。url既可以是字符串也可以是request对象。
所以这句话相当于:
req = urllib.request.Request(url)
urllib.request.urlopen(req)

urllib.request.urlopen(url, data, [timeout], cafile,capath,cadefault,context)
这是urlopen的默认所有参数。其中data项,如果为空,说明HTTP的请求是GET,如果不为空,说明请求是POST;并且data必须符合x-www-form-urlencoded格式,可以用urllib.parse.urlencode()将字符串转换成这个格式。
所以如果需要有所选择的获取数据,应当在urlopen中添加data参数。

例:
data = {}
data[‘doctype’] = ‘json’
data[‘i’] = ‘I love you.’
url = ‘http://www.xxxxx.com’
data = urllib.parse.urlencode(data).encode(‘utf-8’)
response = urllib.request.urlopen(url, data)
html = response. read().decode(‘utf-8’)
print(html)

Request有个headers参数,可以修改user-agent来达到修改python user-agent的目的,可以用request.add_header()来修改它。

urllib.request.OpenDirector)
OpenDirector包括很多子处理类,BaseHandler,ProxyHandler等。

修改代理用ProxyHandler
ex:
处理代理为182……这个IP,端口号为8118
proxy_support = url.request.ProxyHandler( {‘http’:’182.134.48.59:8118’})
然后创建一个包含代理IP的opener
opener = urllib.request.build_opener(proxy_support)
安装进默认环境,这样调用urlopen时会使用新的opener.不过一般不建议修改,除非方便。不修改时可以用opener.open方法。
urllib.request.install_open(opener)

0 0