首页 > Python资料 博客日记
Python爬虫爬取B站up主所有动态内容
2024-05-08 15:00:05Python资料围观183次
本篇文章分享Python爬虫爬取B站up主所有动态内容,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识
请注意,爬虫的使用应遵守网站的爬虫政策和法律法规,不要对网站造成不必要的负担或违反服务条款。
通过浏览器审查元素查看网络日志,发现每次获取动态信息的请求地址都相同,首次加载时offset为空:
https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?host_mid=25470223&offset=
随着网页的不断下拉,offset参数无规律变换,第二次及以后的offset就在上一次次请求返回的json里的"offset"中,将"offset"的值带入下一次请求的参数中即可循环爬取。动态下拉到头时,json中"has_more"会由true变为false,可以以此判断是否结尾。此时的代码如下:
def fetch_data(offset):
# 请求的URL
url = "https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space"
# 请求参数
params = {
"offset": offset,
"host_mid": 25470223
}
# 发送请求
response = requests.get(url, params=params, headers=headers)
print(response.text)
# 检查是否还有更多数据
if data['data']['has_more']:
# 如果有更多数据,使用新的offset发起新的请求
fetch_data(data['data']['offset'])
# 从offset为空开始
fetch_data("")
直接爬取时,无法直接获取到数据,经网上查询为鉴权错误
{"code":-352,"message":"-352","ttl":1}
这时需要添加请求头及必要的cookie,添加后可以正常爬取,"response.text"即为响应json字符串,可自行存储后单独处理。并添加延时参数防止以后都逛不了B站:
import json
import time
import requests
# 添加请求头
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Language': 'zh-CN,zh;q=0.9',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
'Cookie':'buvid3=...; b_nut=...; _uuid=...; buvid4=...;' # up主动态页审查元素自行获取,必传
}
def fetch_data(offset):
# 每次请求时延时0.1秒
time.sleep(0.1)
# 请求的URL
url = "https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space"
# 请求参数
params = {
"offset": offset,
"host_mid": 25470223 # up主id,up主动态页审查元素自行获取
}
# 发送请求
response = requests.get(url, params=params, headers=headers)
print(response.text) #自行处理json
# 检查是否还有更多数据
if data['data']['has_more']:
# 如果有更多数据,使用新的offset发起新的请求
fetch_data(data['data']['offset'])
# 从offset为空开始
fetch_data("")
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- Anaconda版本和Python版本对应关系(持续更新...)
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程