爬虫——requests库的使用
requests的请求方法
方法 | 说明 |
---|---|
request() | 构造一个请求对象 |
get() | 获取静态网页的常用方法 |
head() | 获取网页的头信息的方法, |
post() | 获取动态网页 |
put() | 获取网页提交put请求方法 |
patch() | 获取网页提交局部修改请求 |
delete() | 获取网页提交删除请求 |
request方法的使用
格式:requests.request(method,url,**kwarfs)
- method:请求方法
- url:网址
- **kwarfs:可选参数
**kwarfs
-
params:字典或字节序列,requests模块发送请求时,有两种携带参数的方法:1、params 2、data
其中,params在get请求中使用,如果我们想请求这个网址:https://fanqienovel.com/library/audience1/page_1?sort=hottes params={"sort":"hottes"} url="https://fanqienovel.com/library/audience1/page_1"
-
data:字典,字节序列或文件对象,作为requests的内容,data在post请求中使用
-
json:json格式数据
-
headers:字典,如果ua不合法,可能会获取不到响应。所以加请求头的目的就是模拟浏览器,欺骗服务器,获取和浏览器一致的内容。
-
files:字典类型,传输文件
-
timeout:设置超时时间,单位为秒
-
proxies:字典类型,用于增加代理,隐藏真实ip,防止服务器封禁本机ip
-
cookies:字典或cookiejar,request中的cookie
-
auth:元组,支持HTTP认证功能
-
allow_redirects:True/False,默认为True,重定向开关
-
stream:True/False,默认为True,获取内容立即下载开关
-
verify:True/False,默认为True,认证SSL证书开关
-
cert:本地SSL证书路径
get请求
json(**kwarfs)
用于解析响应内容为JSON格式的方法。
参数:encoding,cls,object_hook,parse_float,parse_int,parse_constant
如果响应内容不包含json格式内容将引发ValueError错误
close()
关闭与响应相关的资源,requests库会自动调用close方法,也可以手动调用
content属性
返回解码后的二进制内容,用于爬取图片,音频,视频
raw属性
返回未解码的二进制内容
text
返回字符串类型的内容
apparent_encoding
返回Response对象内容的字符编码。不能保证一定准确
encoding
用于指定和获取响应内容的字符编码方式。
status_code
返回网页的状态码,2xx为成功访问
url
用于获取实际获取响应的URL。这个属性是一个字符串,表示最终响应所在的URL,可能会有重定向导致实际的URL与最初请求的URL不同。
headers
用于访问HTTP响应的头部信息。返回的headers是一个字典对象。
head方法
获取网络资源的概要信息
使用headers属性获取头部信息
post方法
与get请求相同的参数就不在此一一解释
参数:
-
data:data 参数用来传递 post 请求需要提交的数据,这个参数可以是字典、元组列表、bytes 或文件类字典等类型数据。当我们在 post 请求中提交的数据量非常大时,可以使用字典或元组列表来传递。
-
json
如果我们需要向服务器提交 json 类型的数据,那么就需要使用 json 参数
-
auth
如果访问的 url 需要用户名和密码等验证信息,那么我们可以使用 auth 参数来传递这些信息
常用场景:
- 数据提交
- 数据更新
- 文件上传
- web API请求
put方法
对于put 请求,通常是上传文件操作。 我们需要知道上传文件的地址:url 和 上传的文件 data
格式:requests.put(url=url,data=file)
patch方法
与put的区别:采用patch,仅向url提交了你需要修改的内容进行局部更新。采用put,需要向url提交所有的内容,不管是需要修改的还是不用改的,都需要提交,未提交的会被删除
delete方法
使用与get方法类似
格式:requests.delete(url=url,**kwarfs)