一、requests模块
(一)get请求
步骤:
- 导包
import requests - 确定请求的url
base_url = ‘’ - 发送请求,获取响应
reponse = requests.get(
url = base_url,# 请求的url
headers = {},# 请求头
params = {},# 请求参数字典
) - response这个对象包含的内容都有以下几个:
- 状态码:
response.status_code - 响应头:
response.headers[‘Cookie’] - 响应正文:
- 获取字符串类型的响应正文
response.text - 获取bytes类型的响应正文
response.content - 响应正文字符串编码
response.encoding
- 获取字符串类型的响应正文
- 响应内容的乱码问题:
当我们用response.text获取字符串的响应正文的时候,有时候会出现乱码
原因:response.encding字段默认指定编码有误
解决方法:手动指定
response.encoding = ‘utf-8’
或
response.content.decode(‘utf-8’)
- 状态码:
- get请求的项目类别:
-
没有请求参数的,只需添加请求头,封装‘user-agent’请求头
-
带请求参数的
基础url是?之前包括?的内容
设置请求参数字典:
params = {
字典的内容是Chrome里面query params里的内容
} -
分页
- 方法:
- 先找出分页的规律,一般通过params参数中的其中一个参数来控制
- 找到这个参数每一页的规律
- 用for循环来请求每一页的内容
- 方法:
-
(二)post请求
response = requests.post{
url='',
headers = {},
data = {},#请求数据字典
}
post请求一般得到相应内容是json数据
处理json数据用到的模块就是json模块
json数据本质上就是字符串
json.dumps(python的list或者dict) # 返回值是json字符串
json.loads(json字符串) # 返回值是python的list或者dict
response.json() # 可以直接将获取到的json字符串转化成python的list或者dict
处理post请求的更换请求参数就请求不到的问题。
- 比对data字典,哪些参数不一样
- 找到参数的生成原理
一些参数可以存放:- 页面中,都是固定写死
- js中动态生成参数
- 通过ajax获取一些参数