爬虫请求与响应

97 阅读2分钟

请求

爬虫就是模拟客户端的操作,向服务端发起请求。如何在程序中发起请求?需要使用requests模块

安装模块

请求库:requests

安装:pip install 模块名 pip install requests

爬虫步骤

1- 指定url

2- 发起请求

3- 获取响应数据

4- 数据的解析

5- 持久化的存储(文件、mysql)

代码实现

import requests
# 指定url
# 通过一个变量保存字符串(网址)的数据
url = 'https://www.baidu.com/'
# 请求:request
# 响应:response
response = requests.get(url=url)
# 或者
response = requests.get(url)
print(response.text)

响应对象

# 获取响应状态码 200代表成功
print(response.status_code)
# 如果发现响应文本数据是乱码的情况下,检查网页源代码的charset=utf-8
# 设置数据的编码
response.encoding = 'utf-8' # 注意获取数据之前设置
# 获取响应的内容,返回的数据为字符串类型
res = response.text
print(res) # 字符串类型的文本数据

伪装

当发起请求时,服务端会根据客户端的版本来返回对应的数据,如果我们通过requests去发起请求,可以发现请求头 中的版本信息是python

import requests
url = 'https://www.baidu.com/'
response = requests.get(url=url)
# 获取服务端返回的响应数据中的请求头信息
# 服务端会根据请求的客户端版本来返回对应的数据
print(response.request.headers)

返回的数据并不是完整的数据,此时可以加入伪装

# 在发请求之前,需要更改当前爬虫的身份信息
# 定义一个字典,保存User-Agent 对应一个身份值 Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/120.0.0.0 Safari/537.36'
}
url = 'https://www.baidu.com/'
import requests
# 响应对象 发请求的时候,携带请求头headers
response = requests.get(url=url,headers=headers)
# 获取服务端返回的响应数据中的请求头信息
# 服务端会根据请求的客户端版本来返回对应的数据
# print(response.request.headers)
print(response.text)