爬虫 - selenium
一、requests模块简介
- 作用:发送http请求,获取响应数据
- 优点:相对于urllib模块,requests模块更简洁易懂
二、requests模块常用方法和属性
1、常用方法(发起请求)
(1)get方法
- 使用方式:
response = requests.get(url)
- 常用参数:headers、params、cookies、timeout、proxy、verify
headers请求头
- 作用:模拟浏览器
- 构造方式:构造headers字典(’请求头字段名’:’字段对应的值’)
- 使用方法:
response = requests.get(url, headers = headers)
- 常用请求头:[User-Agent]、[Referer]、[Cookie]
- 非常用请求头:[Content-Type]、[Host]、[Connection]、[Upgrade-Insecure-Requests]、[Authorization]
*[User-Agent]:浏览器名称
*[Referer]:页面跳转处
*[Cookie]:用户数据
*[Content-Type]:内容类型
*[Host]:主机和端口号
*[Connection]:链接类型
*[Upgrade-Insecure-Requests]:升级为HTTPS请求
*[Authorization]:表示HTTP协议中需要认证资源的认证信息
params携带参数
- 作用:携带url参数字典
- 构造方式:构造params字典(’参数名’:’参数值’)
- 使用方法:
response = requests.get(url, params = params)
- params替代方式:直接对含有参数的url发起请求
cookies参数
- 作用:身份验证
- 构造方式:构造cookies字典(’Cookie名’:’Cookie值’),以
;
、空格
分割每一对键值对 - 使用方法:
response = requests.get(url, cookies)
- 注意:cookie一般是有过期时间的,一旦过期需要重新获取
- 将cookie字符串转换为cookies参数所需的字典:
1 | cookies_dict = {cookie.split('=')[0]:cookie.split('=')[-1] for cookie in cookies_str.split('; ')} |
timeout超时参数
- 作用:对请求进行强制要求,必须在特定的时间内返回结果,否则报错
- 使用方法:
response = requests.get(url, timeout = 3)
,这里timeout=3表示发送请求后,3秒钟内返回响应,否则就抛出异常
proxy代理参数
- 作用:为了防止频繁向一个域名发送请求导致ip被封,所以我们需要使用代理ip
- 构造方式:构造proxy字典(’代理类型’:’代理类型:ip地址:端口号’)
- 使用方法:
response = requests.get(url, proxies=proxies)
verify忽略CA证书参数
- 作用:忽略网站的CA证书页面
- 使用方法:
response = requests.get(url,verify=False)
(2)post方法
- 常用场景:登陆注册(post更安全)、传输大量文本内容(post对数据长度没有要求)
- 使用方式:
response = requests.post(url, data)
- 常用参数:data、headers、params、cookies、timeout、proxy、verify
data参数
- 作用:传递请求的数据
- 构造方式:构造data字典(’data名’:’data值’)
- 使用方法:
response = requests.post(url, data)
其他参数
与get请求一致
2、常用属性(响应对象)
response.text
str类型的响应文本(解码类型: requests模块自动根据HTTP 头部对响应的编码推测的文本编码)response.content
bytes类型的响应文本(解码类型: 没有指定)response.content.decode()
解决中文乱码问题(默认utf-8)response.status_code
响应状态码response.headers
响应头response.url
响应url(有时候响应的url和请求的url并不一致)response.cookies
响应cookie(经过了set-cookie动作,返回cookieJar类型)
1 | # cookieJar类型转换为cookies字典 |
response.json()
自动将json字符串类型的响应内容转换为python对象(dict or list)response.request.headers
响应对应的请求头response.request._cookies
响应对应的请求cookie(返回cookieJar类型)
三、requests模块常用对象
1、session对象
- 作用:自动处理cookie,下一次请求会带上前一次的cookie
- 常用场景:自动处理连续多次请求过程中产生的cookie
- 使用方式:
session = requests.session()
,session对象发送get或post请求的参数,与requests模块发送请求的参数完全一致
四、实战演练
POST请求——有道翻译
1 | import requests |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 妙妙屋!