请求
爬虫就是模拟客户端的操作,向服务端发起请求。如何在程序中发起请求?需要使用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)