一、urllib库
urllib库,它是Python内置的HTTP请求库。它包含4个模块:
-
request
:它是最基本的HTTP请求模块,可以用来模拟发送请求。 -
error
:异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作以保证程序不会意外终止。 -
parse
:一个工具模块,提供了许多URL处理方法,比如拆分、解析、合并等。 -
robotparser
:主要是用来识别网站的robots.txt文件,然后判断哪些网站可以爬,哪些网站不可以爬,它其实用得比较少。
1.urllib.request模块
request模块主要功能:构造HTTP请求,利用它可以模拟浏览器的一个请求发起过程,
request模块同时还有:处理授权验证(authenticaton)、重定向(redirection)、浏览器Cookies以及其他内容。
- urlopen方法
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
urlopen参数介绍:
-
url用于请求URL
-
data不传:GET请求,传:POST请求
-
timeout设置超时时间,单位为秒,意思就是如果请求超出了设置的这个时间,还没有得到响应,就会抛出异常。如果不指定该参数,就会使用全局默认时间。它支持HTTP、HTTPS、FTP请求。
-
context必须是ssl.SSLContext类型,用来指定SSL设置。
-
cafile指定CA证书
-
capath指定CA证书的路径,这个在请求HTTPS链接时会有用。
- Request方法
class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
Request参数介绍:
-
url用于请求URL,这是必传参数,其他都是可选参数。
-
data如果要传,必须传bytes(字节流)类型的。如果它是字典,可以先用urllib.parse模块里的urlencode()编码。
-
headers是一个字典,它就是请求头,我们可以在构造请求时通过headers参数直接构造,也可以通过调用请求实例的add_header()方法添加。添加请求头最常用的用法就是通过修改User-Agent来伪装浏览器
-
origin_req_host指的是请求方的host名称或者IP地址。
-
unverifiable表示这个请求是否是无法验证的,默认是False,意思就是说用户没有足够权限来选择接收这个请求的结果。例如,我们请求一个HTML文档中的图片,但是我们没有自动抓取图像的权限,这时unverifiable的值就是True`。
-
method是一个字符串,用来指示请求使用的方法,比如GET、POST和PUT等。