千家信息网

怎么使用python爬取B站排行榜Top100的视频数据

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章将为大家详细讲解有关怎么使用python爬取B站排行榜Top100的视频数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、第三方库导入from bs4
千家信息网最后更新 2025年11月09日怎么使用python爬取B站排行榜Top100的视频数据

这篇文章将为大家详细讲解有关怎么使用python爬取B站排行榜Top100的视频数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1、第三方库导入

from bs4 import BeautifulSoup # 解析网页import re   # 正则表达式,进行文字匹配import urllib.request,urllib.error  # 通过浏览器请求数据import sqlite3  # 轻型数据库import time  # 获取当前时间

2、程序运行主函数

爬取过程主要包括声明爬取网页 -> 爬取网页数据并解析 -> 保存数据

def main():        #声明爬取网站    baseurl = "https://www.bilibili.com/v/popular/rank/all"    #爬取网页    datalist = getData(baseurl)    # print(datalist)    #保存数据    dbname = time.strftime("%Y-%m-%d", time.localtime())    dbpath = "BiliBiliTop100  " + dbname    saveData(datalist,dbpath)

(1)在爬取的过程中采用的技术为:伪装成浏览器对数据进行请求;
(2)解析爬取到的网页源码时:采用Beautifulsoup解析出需要的数据,使用re正则表达式对数据进行匹配;
(3)保存数据时,考虑到B站排行榜是每日进行刷新,故可以用当前日期进行保存数据库命名。

3、程序运行结果

数据库中包含的数据有:排名、视频链接、标题、播放量、评论量、作者、综合分数这7个数据。

4、程序源代码

from bs4 import BeautifulSoup #解析网页import re # 正则表达式,进行文字匹配import urllib.request,urllib.errorimport sqlite3import timedef main():    #声明爬取网站    baseurl = "https://www.bilibili.com/v/popular/rank/all"    #爬取网页    datalist = getData(baseurl)    # print(datalist)    #保存数据    dbname = time.strftime("%Y-%m-%d", time.localtime())    dbpath = "BiliBiliTop100  " + dbname    saveData(datalist,dbpath)#re正则表达式findLink =re.compile(r'(.*?)
') #榜单次序findTitle = re.compile(r'(.*?)') #视频标题findPlay = re.compile(r'([\s\S]*)(.*?) ') #视频播放量findView = re.compile(r'([\s\S]*)(.*?) ') # 视频评价数findName = re.compile(r'(.*?)',re.S) #视频作者findScore = re.compile(r'
(.*?)
综合得分',re.S) #视频得分def getData(baseurl): datalist = [] html = askURL(baseurl) #print(html) soup = BeautifulSoup(html,'html.parser') #解释器 for item in soup.find_all('li',class_="rank-item"): # print(item) data = [] item = str(item) Order = re.findall(findOrder,item)[0] data.append(Order) # print(Order) Link = re.findall(findLink,item)[0] Link = 'https:' + Link data.append(Link) # print(Link) Title = re.findall(findTitle,item)[0] data.append(Title) # print(Title) Play = re.findall(findPlay,item)[0][0] Play = Play.replace(" ","") Play = Play.replace("\n","") Play = Play.replace(".","") Play = Play.replace("万","0000") data.append(Play) # print(Play) View = re.findall(findView,item)[0][0] View = View.replace(" ","") View = View.replace("\n","") View = View.replace(".","") View = View.replace("万","0000") data.append(View) # print(View) Name = re.findall(findName,item)[0] Name = Name.replace(" ","") Name = Name.replace("\n","") data.append(Name) # print(Name) Score = re.findall(findScore,item)[0] data.append(Score) # print(Score) datalist.append(data) return datalistdef askURL(url): #设置请求头 head = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36(KHTML, likeGecko) Chrome/80.0.3987.163Safari/537.36" } request = urllib.request.Request(url, headers = head) html = "" try: response = urllib.request.urlopen(request) html = response.read().decode("utf-8") #print(html) except urllib.error.URLError as e: if hasattr(e,"code"): print(e.code) if hasattr(e,"reason"): print(e.reason) return htmldef saveData(datalist,dbpath): init_db(dbpath) conn = sqlite3.connect(dbpath) cur = conn.cursor() for data in datalist: sql = ''' insert into Top100( id,info_link,title,play,view,name,score) values("%s","%s","%s","%s","%s","%s","%s")'''%(data[0],data[1],data[2],data[3],data[4],data[5],data[6]) print(sql) cur.execute(sql) conn.commit() cur.close() conn.close()def init_db(dbpath): sql = ''' create table Top100 ( id integer primary key autoincrement, info_link text, title text, play numeric, view numeric, name text, score numeric ) ''' conn = sqlite3.connect(dbpath) cursor = conn.cursor() cursor.execute(sql) conn.commit() conn.close()if __name__ =="__main__": main()

关于"怎么使用python爬取B站排行榜Top100的视频数据"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

数据 视频 网页 正则 表达式 排行榜 数据库 程序 篇文章 作者 得分 文字 更多 标题 浏览器 网站 过程 链接 浏览 综合 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器和工作站组成什么 ac990软件数据库类型 平安集团网络技术 做软件开发一般去哪找公司 服务器加工内存条 数据库的数据模型三个要素是什么 化州哪里有回收华为服务器的 神通数据库查看大小写命令 安徽大学生网络安全学院官网 数据库关联关系 数据库主数据文件的创建 嘉赢网络技术有限公司主营 如何将路由器改为nas服务器 社交app 服务器成本 软件开发培训要求 网络安全主要面临的威胁 数据库触发器的种类 比兔网络技术有限公司 贵州有网络安全的岗位吗 短信报警网络隔离服务器价格 服务器数据库统计表 网络安全相关支出包括哪些 加强校园网络安全的资料 数据访问层必须是数据库服务器吗 网络安全对学生的意义 数据库中refid是什么意思 如何查询网页数据库 软件开发各城市排行 小程序 体验版 数据库 一台服务器几个2404端口
0