爬取b站视频的全站板块的排行榜单
提取出标题,地址,评论数量等等
并且写入到mysql
需要用到这四个库
import requests
import json
from sqlalchemy import create_engine
import pandas
最后效果
点赞分享视频
公众号回复 b站全站榜单 获取源代码
打开网站
https://www.bilibili.com/v/popular/rank/all/
打开开发者模式
找到这个文件,里面存放的就是榜单视频信息
请求方法地址
接下来用python爬取下来这个文件
然后处理数据
获取数据
# 获取数据
url ='https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57'
}
response = requests.get(url=url,headers=headers).text
处理数据
获取到里面的每一个列表
每个列表就是一个视频的信息
排名是降序
每获取一条数据,就整合成一个列表
然后添加到另一个列表里面,方便为了转成DataFrame对象
response = requests.get(url=url,headers=headers).text
data = json.loads(response)
lis = data['data']['list']
li = []
for i in lis:
spbt = i['title'] # 标题
spdz = 'https://www.bilibili.com/video/' + i['bvid'] # 视频地址
zz = i['owner']['name'] # 作者
bfl = i['stat']['view'] # 播放量
pls = i['stat']['reply'] # 评论数
dm = i['stat']['danmaku'] # 弹幕数量
fx = i['stat']['share'] # 分享
dz = i['stat']['like'] # 点赞
sc = i['stat']['favorite'] # 收藏
tb = i['stat']['coin'] # 投币
li.append([spbt,spdz,zz,bfl,pls,dm,fx,dz,sc,tb])
转成DataFrame对象,索引+1 ,当作排名
最后保存到mysql
首先打开你的mysql服务
然后在python里连接mysql
HOSTNAME = '127.0.0.1'
USERNAME = 'root' # 用户
PORT = 3306 # 端口
PASSWORD = '填写自己的密码'
DATABASE = '连接到的数据库(一定要先创建好这个库)'
CHARSET='utf8mb4' # 编码格式
# 使用sqlalchemy连接数据库
engine = create_engine(f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset={CHARSET}')
然后是把DataFrame对象保存到mysql里
# 保存到sql
df.to_sql(name='b站视频榜单',con=engine,if_exists='replace',index=True,index_label='排名')
# name 是要保存的表的名称
# con 是连接数据库的一个对象
# if_exists是如果有这个表里面有信息的时候它的操作 replace 是替换
# index 表示 是否把df里的索引列保存进去
# index_label 表示 保存的这列索引的名字叫什么
最后看效果
感谢观看
欢迎分享
公众号回复 b站全站榜单 获取源代码