主页 分类 关于

爬虫 requests模块(吃牢饭集合)

每天一个入狱小技巧

response.text和response.content的区别

# 导入requests库
import requests

# 目标url
url = "https:www.baidu.com"

# 向目标url发送get请求
response = requetst.get(url)

# 手动设定编码格式
response.encoding = 'utf8' #等于response.content.decode()

# 打印响应内容
print(response.text) #等于response.content.decode("推测出的编码字符集")

response.text

  • 类型: str
  • 解码类型: requests模块自动根据HTTP 头部对响应的编码作出有根据的推测, 推测的文本编码

response.content

  • 类型: bytes
  • 解码类型: 没有指定

response.content进行decode解决中文乱码

  • response.content.decode() 默认utf-8
  • response.content.decode("GBK")
    • utf-8
    • gbk
    • gb2312
    • ascli (阿斯克码)
    • iso-8859-1

response响应对象的其它常用属性或方法

response = requests.get(url) 中response是发送请求获取的响应对象; response响应对象中·除了text, cintent获取响应内容以外还有其它常用的属性或方法

  • response.url 响应的url; 有时候响应utl和请求utl并不一致
  • response.status_code 响应状态码
  • response.requests.headers 响应对应的请求头
  • response.headers 响应头
  • response.headers._cookies 响应对应请求的cookie; 返回cookieJar类型
  • response.cookies 响应的cookie (经过set-ccookie动作; 返回cookie类型)
  • response.json() 自动将json字符串类型的响应内容转换python对象 (dict or list)

# 导入requests库
import requests

# 目标url
url = "https:www.baidu.com"

# 向目标url发送get请求
response = requetst.get(url)

# 手动设定编码格式
response.encoding = 'utf8' #等于response.content.decode()

# 打印响应内容
print(response.url) #打印响应的url
print(response.status_code) #打印响应的状态码
print(response.request.headers) #打印响应对象的请求头
print(response.headers) #打印响应头
print(response.request._cookies) #打印响应的url
print(response.cookies) #打印响应中携带的cookies

post方法

实现方法

# data通常是一个字典
requests.post(uel,data)

post数据来源
固定值 抓包比较不变值
输入值 抓包比较根据自身变化值
预设值-静态文件 需要提前从惊天html中获取
预设值-发请求 需要对指定地址发送请求获取数据
在客户端生成的 发现js模拟生成数据

requests.session

requests.session的作用

  • 自动保存或者处理cookie, 下一次请求会带上前一次的cookie

场景

  • 连续的多次请求, 自动处理过程中产生的cookie

使用方法 注意: sesson对象发送get或post请求参数, 与reques模块发送请求的参数完全一致

session = requests.session() #实例化session对象

response = session.get(url, headers, ...)

response = session.post(url, data, ...)









作者: 我叫史迪奇
本文来自于: https://sdq3.link/reptile-header-requests.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议