Python2.X/Python3.X中中urllib库区别讲解库区别讲解
本文介绍urllib库在不同版本的Python中的变动,并以Python3.X讲解urllib库的相关用法。
urllib库对照速查表
Python2.X Python3.X
urllib urllib.request, urllib.error, urllib.parse
urllib2 urllib.request, urllib.error
urllib2.urlopen urllib.request.urlopen
urllib.urlencode urllib.parse.urlencode
urllib.quote urllib.request.quote
urllib2.Request urllib.request.Request
urlparse urllib.parse
urllib.urlretrieve urllib.request.urlretrieve
urllib2.URLError urllib.error.URLError
cookielib.CookieJar http.CookieJar
urllib库是用于操作URL,爬取页面的python第三方库,同样的库还有requests、httplib2。
在Python2.X中,分urllib和urllib2,但在Python3.X中,都统一合并到urllib中。通过上表可以看到其中常见的变动,依据该变
动可快速写出相应版本的python程序。
相对来说,Python3.X对中文的支持比Python2.X友好,所以该博客接下来通过Python3.X来介绍urllib库的一些常见用法。
发送请求发送请求
import urllib.request
r = urllib.request.urlopen(http://www.python.org/)
首先导入urllib.request模块,使用urlopen()对参数中的URL发送请求,返回一个http.client.HTTPResponse对象。
在urlopen()中,使用timeout字段,可设定相应的秒数时间之后停止等待响应。除此之外,还可使用r.info()、r.getcode()、
r.geturl()获取相应的当前环境信息、状态码、当前网页URL。
读取响应内容读取响应内容
import urllib.request
url = "http://www.python.org/"
with urllib.request.urlopen(url) as r:
r.read()
使用r.read()读取响应内容到内存,该内容为网页的源代码(可用相应的浏览器“查看网页源代码”功能看到),并可对返回的字
符串进行相应解码decode()。
传递传递URL参数参数
import urllib.request
import urllib.parse
params = urllib.parse.urlencode({'q': 'urllib', 'check_keywords': 'yes', 'area': 'default'})
url = "https://docs.python.org/3/search.html?{}".format(params)
r = urllib.request.urlopen(url)
以字符串字典的形式,通过urlencode()编码,为URL的查询字符串传递数据,