请求模块—requests

发布于:2025-07-08 ⋅ 阅读:(19) ⋅ 点赞:(0)

1、作用:发送http请求,获取响应数据

官方文档: https://requests.readthedocs.io/zh_CN/lat est/index.html

requests模块是一个第三方模块,需要在你的python(虚 拟)环境中额外安装 win+r 输入cmd pip/pip3 install requests 源安装:pip install requests -i https://mirrors.aliyun.com/pypi/simple

2、requests模块发送get请求, 获取响应

需求:通过requests向百度首页发送请求,获取该页 面的源码,观察输出结果

# 简单的代码实现
import requests
# 目标url
url = 'https://www.baidu.com'
# 向目标url发送get请求
response = requests.get(url)
 # 打印响应内容
print(response.text)

3、response响应对象

观察上边代码运行结果发现,有好多乱码;这是因为 编解码使用的字符集不同早造成的;我们尝试使用下 边的办法来解决中文乱码问题

# response.content
 import requests 
# 目标url
 url = 'https://www.baidu.com' 
# 向目标url发送get请求
response = requests.get(url)
 # 打印响应内容
# print(response.text)
 print(response.content.decode()) # 注意这里!

(1)response.text是requests模块按照chardet模块推 测出的编码字符集进行解码的结果

(2)网络传输的字符串都是bytes类型的,所以 response.text = response.content.decode('推测出 的编码字符集')

(3) 我们可以在网页源码中搜索 码字符集,注意存在不准确的情况 charset,尝试参考该编码字符集,注意存在不准确的情况

4、response.text 和 response.content的区别

(1)response.text

类型:str

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

(2)response.content

类型:bytes

解码类型: 没有指定

5、通过对response.content进行 decode(解码),来解决中文乱码

response.content.decode() 默认utf-8

response.content.decode("GBK")

常见的编码字符集

utf-8

gbk

gb2312

ascii (读音:阿斯克码)

iso-8859-1

6、response响应对象

response = requests.get(url)中response是发送请求获取的响应对象

7、发送带header的请求

headers是一个字典

import requests
url = 'https://www.baidu.com'
response = requests.get(url)
print(response.content.decode())  # 源码内容获取不完整
# 打印响应对应请求的请求头信息
print(response.request.headers)
 # -------------------------------------------分割线------------------------------------------------------------
headers = {
    "User-Agent": "Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/54.0.2840.99 Safari/537.36"
}
 # 在请求头中带上User-Agent,模拟浏览器发送请求
response1 = requests.get(url,headers=headers)
print(response1.content.decode())  # 源码获取完整
# 打印请求头信息
print(response1.request.headers)

结论:headers的作用:模拟浏览器,欺骗服务器, 获取和浏览器一致的内容

8、发送带参数的请求

我们在使用百度搜索的时候经常发现url地址中会有 一个 ?,那么该问号后边的就是请求参数,又叫做查询字符串

8.1在url携带参数

直接对含有参数的url发起请求
import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36'
}
url = 'https://www.baidu.com/s?wd=python'
response = requests.get(url,headers=headers)
print(response.content.decode())

8.2通过params携带参数字典

1.构建请求参数字典

2.向接口发送请求的时候带上参数字典,参数字典设 置给params

import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36'
}

# 这是目标url
 # url = 'https://www.baidu.com/s?wd=python'
 # 最后有没有问号结果都一样
url = 'https://www.baidu.com/s?'
# 请求参数是一个字典 即wd=python
kw = {
    'wd': 'python'
}
 # 带上请求参数发起请求,获取响应
response = requests.get(url, headers=headers, params=kw)
print(response.content.decode())

8.3关于参数的注意点

在url地址中,很多参数是没有用的,比如百度搜索的 url地址,其中参数只有一个有用,其他的都可以删除,对应的,在后续的爬虫中,遇到很多参数的url地址,都可以尝试删除参数


网站公告

今日签到

点亮在社区的每一天
去签到