首页 > 数据库 >爬取b站全站视频榜单保存到mysql

爬取b站全站视频榜单保存到mysql

时间:2023-10-26 12:00:37浏览次数:47  
标签:视频 stat 全站 url 爬取 headers mysql

爬取b站视频的全站板块的排行榜单

提取出标题,地址,评论数量等等

并且写入到mysql

需要用到这四个库

import requests
import json
from sqlalchemy import create_engine
import pandas

最后效果

爬取b站全站视频榜单保存到mysql_获取数据

点赞分享视频

公众号回复 b站全站榜单 获取源代码


打开网站

https://www.bilibili.com/v/popular/rank/all/

打开开发者模式

找到这个文件,里面存放的就是榜单视频信息

爬取b站全站视频榜单保存到mysql_获取数据_02

请求方法地址

爬取b站全站视频榜单保存到mysql_mysql_03


接下来用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 ,当作排名

爬取b站全站视频榜单保存到mysql_数据_04

最后保存到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站全站视频榜单保存到mysql_mysql_05

最后看效果

爬取b站全站视频榜单保存到mysql_mysql_06

爬取b站全站视频榜单保存到mysql_获取数据

感谢观看

欢迎分享

公众号回复 b站全站榜单 获取源代码



标签:视频,stat,全站,url,爬取,headers,mysql
From: https://blog.51cto.com/SpiderBy/8032135

相关文章

  • mysql-关联查询 内连接 外连接(左外,右外,全连接) 交叉连接(迪卡积尔)
    mysql-关联查询关联查询:数据查询是Mysql数据库管理最重要的一个功能,关联查询是关系型数据库最主要的查询。包括内连接([inner]join…on),外连接(left/right[outer]join…on),全外连接,通过关联查询可实现多个表连接的条件关系查询得到预期结果。基本定义:[inner]join…on......
  • mysql数据库笔记
    若要使用mysql,要先在项目/管理NuGet程序包中下载mysql.data才可以使用。server=127.0.0.1/localhost代表本机,端口号port默认是3306可以不写ExecuteReader——用于查询数据库。查询结果是返回MySqlDataReader对象MySqlDataReader包含sql语句执行的结果,并提供一个方法从结果中阅......
  • MySQL-- NULL值的判断
    MySQL--NULL值的判断 前置知识空值即NULL,该值不同于0,也不同于空字符串 字段值是否为空值(NULL)的判断IS[NOT]NULL,其中NOT为可选参数,表示字段值不为空值注意:ISNULL是一个整体,不能将IS换成=。同理ISNOTNULL中的ISNOT不能换成!=或<>MySQL使......
  • maven创建普通java项目访问mysql-仅jdbc
    已知:1、maven对普通Java项目的创建,参考 https://www.cnblogs.com/wanjinliu/p/17706089.html 。2、java常规访问mysql数据库,需要用到jdbc驱动。调用的jar包,最新为“mysql-connector-j”--这个名字可以不记得,看见能认识它就行。包、类入门用法,参考 https://www.cnblogs.com/......
  • mysql的regex匹配多个字符串且不包含子串
     mysql的regex匹配多个字符串且不包含子串,regex使用、mysqlregex使用、mysqlregex详解、regex的高级使用 camera_label字段是以逗号分割的字符串 1.查询包含 camera_2标签的数据select*fromdevice_info_datawherescope_type=2andcamera_labelREGEXP('came......
  • KubeSphere v3.4.0 创建Mysql 8.1.0 数据库主从记录
    主要讲下KubeSphere中创建【有状态】的【工作负载】需要注意的配置问题。这里的创建过程也不详细描述,网上简单找一找也有。重点在使用存储里面的配置字典:1、先创建一个配置字典,参考名:mysql-config2、创建一主一从的配置项,键(主库):master-1.cnf值(主库):[mysqld]port......
  • windows安装MySQL8.0.20
    一、下载地址(zip版):https://downloads.mysql.com/archives/community/二、安装mysql8.0.201、解压缩至目录D:\software\mysql-8.0.20-winx642、新建my.ini文件在D:\software\mysql-8.0.20-winx64目录下新建my.ini文件注意:需要将配置文件中的basedir和datadir的值改成自己......
  • 多款国产操作系统安装数据库干货文档汇总(含Oracle/MySQL/国产数据库等)
    随着国产化的逐步推进,越来越多的企业选择将数据库安装在国产操作系统上。为帮助大家了解国产操作系统上的数据库成功搭建案例与搭建方式,本文整理了墨天轮数据技术社区上用户分享的实操文档,涵盖银河麒麟、中标麒麟、统信UOS、openEuler等常见的国产操作系统,数据库以Oracle为主,此外......
  • MySQL
    MySQL概述MySQL连接语法mysql -u用户名 -p密码[-h数据库服务器IP地址 -p端口号]关系型数据库:(RDBMS)建立在关系模型基础上,由多张相互连接的二维表组成的数据库特点:使用表存储数据,格式统一,便于维护使用SQL语言操作,标准统一,使用方便,可以用于复杂......
  • MySQL
    数据库的基础数据库新系统 数据与信息联系数据和信息之间是相互联系的。数据是反映客观事物属性的记录,是信息的具体表现形式。数据经过加工处理之后,就成为信息;而信息需要经过数字化转变成数据才能存储和传输。数据库存储单元--服务器数据库系统的构成存......