一、什么是request模块
requests 模块是基于代码实现发送网络请求。该模块的作用是模拟浏览器发请求。Python 中默认不带有 requests 模块,我们可以通过 pip 来安装。
pip install requests
二、request模块的基本使用
2.1、什么是UA伪装
UA 检测 是指门户网站的服务器会检测请求对应请求的身份标识,如果检测到请求的载体标识为某一款浏览器,说明该请求是一个正常的请求(用户通过浏览器发起的请求)。但是,如果检测到请求的载体身份标识不是基于某一款浏览器的,则表示该请求为不正常的请求(爬虫程序发起的请求),则服务器很有很能拒绝该次请求。
因此,我们需要将爬虫程序对应的请求载体伪装成某一款浏览器,这就是 UA 伪装。
2.2、requests模块发送GET请求
import requests
if __name__ == "__main__":
# 1.指定URL
url = "https://www.sogou.com/web"
# 处理URL携带的参数:封装到字典中
kw = input("enter a key word:")
param = {
'query': kw
}
# UA:User-Ageng(请求载体的身份标识)
# UA伪装:将对应的User-Agent封装到一个字典中
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43",
}
# 2.发起请求,get()方法会返回一个响应对象
# 对指定的URL发起的请求对应的URL是携带参数的,并且请求过程中处理了参数
response = requests.get(url=url, params=param, headers=headers)
# 3.获取响应数据,text返回的是字符串形式的响应数据
page_text = response.text
print(type(page_text))
# 4.持久化存储
file_name = f"{kw}.html"
with open(file_name, "w", encoding="utf-8") as f:
f.write(page_text)
print(f"{file_name}保存成功")
2.2、requests模块发送POST请求
import requests
import json
if __name__ == "__main__":
# 1.指定URL
url = "https://fanyi.baidu.com/sug"
# 处理URL携带的参数:封装到字典中
word = input("enter a key word:")
data = {
'kw': word
}
# UA:User-Ageng(请求载体的身份标识)
# UA伪装:将对应的User-Agent封装到一个字典中
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43",
}
# 2.发起请求,post()方法会返回一个响应对象
# 对指定的URL发起的请求对应的URL是携带参数的,并且请求过程中处理了参数
response = requests.post(url=url, data=data, headers=headers)
# 3.获取响应数据,json()返回的是对象
# 如果确认响应数据是json类型的,才可以使用json()方法返回
dict_obj = response.json()
print(type(dict_obj))
# 4.持久化存储
file_name = f"{word}.json"
with open(file_name, mode="w", encoding="utf-8") as f:
json.dump(dict_obj, fp=f, ensure_ascii=False)
print(f"{file_name}保存成功")