Python 爬虫 根据ID获得UP视频信息

思路:

用selenium库对网页进行获取,然后用bs4进行分析,拿到bv号,标题,封面,时长,播放量,发布时间

先启动webdriver.,进入网页之后,先等几秒,等加载完全了,再获取网页

options = webdriver.FirefoxOptions()

'''

无头模式启动,让selenium不用真的打开网页,节约资源同时加快速度

'''

options.add_argument('--headless')

firefox = webdriver.Firefox(options=options)

firefox.get( "https://space.bilibili.com/id/video?tid=0\&pn=1keyword=\&order=pubdate")

'''

休眠

'''

time.sleep(4)
'''

使用BeautifulSoup的html.parser进行分析

'''

html = BeautifulSoup(firefox.page_source, features="html.parser")

(id就是你要抓的up的id)

当你拿到这些美妙的数据之后就要开始分析了,看看什么是要的,什么是不要的,首先我们先打开一个Up的主页,然后按F12,"让我们来看看,它的内构"

像这样,左边变色了,那么就代表你选中的这个块儿,是左边那个区域的

好,我们展开慢慢翻

翻到这儿,会发现,哦,原来一页上的所有视频,都放在了一个叫li的里面,且这个li的class属性都是small-item new fakeDanmu-item 而我们需要的BV号就在li的data-aid属性里 不急往后看看,里面其他信息在那儿

好好好,li里就只有一个img而这个img里的src属性和alt属性就是我们要的封面和标题

在下面也能找到bv号,但是因为上面我们已经拿到了所以不用再拿了,我们拿class属性为lengthd的span里的时长,class为play的span里的span的播放量,和class为time的span的发布时间

都找齐了,那,开整

'''

找到所有的class是mall-item fakeDanmu-item的li

'''
videoList = html.find_all("li",attrs={"class":"small-item fakeDanmu-item"})

'''

下面就用一个li来演示怎么获得其中我们要的数据,从上到下分别说,bv号,标题,图片,时长,播放量,发布日期

'''

video = videoList0

#bv号

bv = video.get("data-aid")

img = video.find("img")

#标题

title = img.get("alt")

#图片

image = img.get("src")

#时长

duration = video.find("span",attrs={"class":"length"}).text

#播放量

playCount = video.find("span",attrs={"class":"play"}).find("span").text

#发布日期

date = video.find("span",attrs={"class":"time"}).text.strip()

然后发现,嘶,好像不止 一页,而且页数还和

https://space.bilibili.com/id/video?tid=0\&pn=1keyword=\&order=pubdate

中的pn值有关,那好办了,找到最大有几页,然后循环获取网页,并处理就行了,现在来找找页数,有两个办法,第一,获得最多有几个视频,然后(视频数/30)向上取整数 ,就能获得页数,第二,从页面中直接获得

像这样,999+的就麻烦了,那就取获得页码吧

我们在装li的那个div下面找到了页码

然后在这里面按Ctrl+F

发现这个网页里就它class属性用的be-pager-total

'''

因为他是把文字和数字用空格隔开,所有可用split来分割字符串,然后获得第二项,也就是我们要的页码

'''

pn = html.find('span', attrs={'class':'be-pager-total'}).

pn = pn.text.split(' ')1

然后做个循环

for pnnumber in range(pn):

url = "https://space.bilibili.com/id/video?tid=0\&pn=%skeyword=\&order=pubdate"%(str(pnnumber +1))

'''
id那个位置记得换成你要的up的id

然后下面循环进行获取和分析就行了

'''

之后可以把这些数据放到json,execel,redis或者别的什么数据库中,当然,有了图片链接,你也可以去吧封面图下下来了

相关推荐
爱吃苹果的梨叔1 天前
2026年KVM over IP采购指南:BIOS级接管、并发和审计怎么验收
ide·python·tcp/ip·github
Cloud_Shy6181 天前
解读《Effective Python 3rd Edition》:从练气到老魔(第六章 Item 40 - 43)
android·开发语言·人工智能·笔记·python·学习方法
装不满的克莱因瓶1 天前
掌握生成对抗网络(GAN)的优化目标与评估指标——从博弈函数到生成质量衡量体系
人工智能·python·深度学习·算法·机器学习
半只小闲鱼1 天前
配置计划模块通用办公设备家具批复数合计计算
开发语言·python
是阿千呀!1 天前
A股市场风格切换研究:基于 Barra 风险模型的量化框架
python·量化
大蚂蚁2号1 天前
短视频批量生成技术深度解析与实战方案
python·aigc·音视频
努力写A题的小菜鸡1 天前
PyTorch 两种卷积写法彻底对比:F.conv2d 函数式 vs nn.Conv2d 类实战(超详细入门笔记)
python
golfscript1 天前
Playwright Python:微软出的浏览器自动化库
python·其他·microsoft·自动化
qq_422152571 天前
Word 文件太大怎么压缩?2026 年文档瘦身方案对比
开发语言·c#·word
charliedev1 天前
Jedi:Python 自动补全与静态分析的实用工具
开发语言·python·其他