2.1.urllib的使用
包含有4个模块
requests:这是一个最基本的HTTP请求模块,可以模拟请求的发送
error:异常处理模块,可以捕获异常,然后进行重试或者其他的操作来保证程序的运行不会进行停止
parse:一个工具模块
roborparser:主要用来识别网站的robors,txt文件,判断哪些文件可以爬
1.发送请求
使用库当中的request模块,可以方便的发送请求并回应
- urlopen
完成了python官网页面的抓取
返回的结果为
其中返回的状态码的结果,可以观看爬虫基础
- data
data参数是可以进行选择的,在添加该参数的时候,需要使用bytes方法将参数转换为字节流编码格式的内容,也就是bytes类型,此外,如果传递了该参数,需要使用的则为Post
这里我们传递了一个参数word,值是hello,需要将其转码为bytes类型,转码的时候采取了bytes方法,该方法传递的第一个参数为str,因此需要使用urllib.parse里面的urlencode方法将字典参数转换为字符串,第二个参数是指定编码格式
- timeout
timeout参数设置超时时间,单位为秒,意思是如果超出了设置的这个时间,还没有得到响应,就会抛出异常
- 其他参数
1,context参数,参数类型必须为ssl.SSLContext类,用于指定SSL的设置
2.cafile参数,用来指定CA证书
3.capath参数,指定其路径
- Request
class.urllib.request. Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)
- url:用于请求URL,为必须传的参数
- data:如果要传输数据,必须为bytes类型
- headers:请求头
- origin_req_host:请求方的host名称或者IP地址
- univerifiable:表示请求是否是无法进行验证的,默认取值为False
- method:字符串,表示请求使用的方法
完整的使用
ps.其中的User-Agent代理获取方式
4.高级用法
- HTTPDefaultErrorHandler
: 处理 HTTP 请求中的默认错误,例如服务器返回的 404(页面未找到)或 500(服务器内部错误)等。
- HTTPRedirectHandler
: 处理 HTTP 重定向,例如当服务器返回 3xx 状态码时,该处理程序将根据重定向规则自动处理重定向。
- URLError
: 表示由于 URL 相关的错误而引发的异常,如无法解析主机名、连接超时等。
- HTTPError
: 表示 HTTP 请求过程中的错误,例如服务器返回了一个不在 200-299 范围内的状态码。
- ContentTooShortError
: 表示在进行 HTTP 请求时,返回的内容长度小于预期长度,可能意味着连接被中断或服务器未完全发送数据。
当访问某一个网页的时候,需要进行验证,那么应该怎么办呢?
- 代理
2.异常处理
- URLError
会输出URLError的错误
- HTTPError
- code:返回状态码
- reason:返回错误的原因
- headers:返回请求头
//使用方法与上述相同,只是返回的值比上述多
//可以设置顺序,来捕获子类和父类错误的顺序
3.解析链接
- urlparse
进行字段的解析
同时还具有三个参数
- urlsting:待解析的URL
- scheme:默认的协议
- allow_fragments:是否忽略fragment
返回的结果可以使用属性名获取内容,也可以使用索引进行获取(返回的值实际上为一个元组)
- urlunparse
- urlsplit
- urlunsplit
- urljoin
进行链接的解析,拼合与生成
- urlencode
将字典类型的转换为链接参数
- parse_qs
将一串get请求参数转回字典
- parse_qsl
将参数转换为由元组组成的列表
- quote
将内容转换为URL编码的格式,当URL带有中文的参数时,有可能导致乱码问题,此时使用quote方法可以将中文字符转换为URL编码
- unquote
可以进行URL的解码