一 urllib库介绍
urllib库是Python内置的HTTP请求库,不需要外安装即可使用,它包含如下常用模块:
(1)urllib.request:最基本的HTTP请求模块,可以用来模拟发送请求,功能等同于在浏览器里输入网址然后回车。
(2)urllib.parse:一个工具模块,提供URL处理方法,比如拆分、解析、合并等。
(3)urllib.error:包含从 urllib.request发生的错误或异常
(4)urllib.robotparser :用于解析robots.txt文件
二 urllib.request请求
1. urllib.request 基本用法
urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理 authenticaton (授权验证), redirections (重定向), cookies (浏览器Cookies)以及其它内容。
三 urllib.request.urlopen()函数
urlopen() 函数可以完成最基本的简单网页的 GET 请求抓取,利用以上最基本的 urlopen() 方法,我们可以完成最基本的简单网页的 GET 请求抓取。
1 import urllib.request 2 response = urllib.request.urlopen('http://www.baidu.com') 3 print(response.read().decode())
如果我们想给链接传递一些参数该怎么实现呢?我们首先看一下 urlopen() 函数的API。
返回的是HTTPResposne类型的对象,该对象主要包含read()、readinto()、getheader(name)、getheaders()、fileno()等方法,以及msg、version、status、reason、debuglevel、closed等属性。
得到这个对象之后,我们把它赋值为response变量,然后就可以调用这些方法和属性,得到返回结果的一系列信息了。例如,调用read()方法可以得到返回的网页内容,调用status属性可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到等。
用法:response = urllib.request.urlopen('https://www.python.org')
1 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
四 其他常用函数
urllib.parse.quote()函数,用来对字符串编码,比如把原来不符合URL的字符转换为符合URL的ASCII码。
urllib.parse.urlencode()函数,用来对字典编码,比如把key-value这样的键值对转换成 a=1&b=2这样的字符串。