Python3中将python2.7的urllib和urllib2两个包合并成了一个urllib库
Python3中,urllib库包含有四个模块:
- urllib.request for opening and reading URLs
- urllib.error containing the exceptions raised by urllib.request
- urllib.parse for parsing URLs
- urllib.robotparser for parsing robots.txt files
urllib.request这个模块用得比较多, 尤其是urlopen函数,会返回一个二进制的对象,对这个对象进行read()操作可以得到一个包含网页的二进制字符串,然后用decode()解码成一段html代码:
语法结构:urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None, capath=None, cadefault=False, context=None)
参数:其中url既可以是一个URL字符串,又可以是一个Request对象,一般使用后者添加其他参数。
当request的方式是post时,使用参数data,用于填写传递的表单信息,将data填好表单信息,准备传入urlopen 前,还需要利用urllib.parse里的urlencode()函数转换格式,写成data = urllib.parse.urlencode(data).encode(‘’),然后将data传入函数。
而urllib.request的Request函数,也可以用于打开url字符串,同时可以传入更多的参数,例如:headers,Request函数可以返回一个request对象作为urlopen函数的url参数使用。
语法结构:urllib.request. Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
参数:其中url是一个URL字符串。
data用法与urlopen一致。
headers参数是一个字典,服务器对于用户发出的request,会通过其中的headers信息来判断用户发信息,我们可以通过自己编写headers传入urllib.request. Request中用于伪装自己的身份。Header中User-agent参数是判断用户身份。另外通过设置代理可以改变用户提交时的IP地址。
使用代理:
步骤:
1.参数是一个字典{‘类型’:‘代理IP:端口号’}
proxy_support=urllib.request.ProxyHandler({‘类型’:‘代理IP:端口号’})
2.定制、创建一个opener
opener = urllib.request.build_opener(Proxy_support)
创建opener以后,也可以在opener里添加一个User-agent,代码如下:
opener.addheaders = [(‘’User_agent,’’)]
3a.安装opener(这种方法将opener一劳永逸地安装到系统中,每次访问自动使用这个代理访问)
urllib.request.install_opener(opener)
3b.调用opener(这种方法暂时使用代理进行一次访问)
opener.open(url)
网友评论