[Python]指定搜索关键字,通过网页获取bilibili的相关视频信息

首先我们导入两个包

from bs4 import BeautifulSoup
import requests

如果你没有第一行的包,那么在PyCharm编译器中的话,只要将鼠标移到那上面去就会弹出个提示框,选择前面有Install的一行蓝字,点击它就能下载回来了。

然后我们准备一个字符串,里面存着我们要借助b站引擎搜索的关键字
我这里准备了一行字符串,用它搜索只会有一个视频出现:

userSeach='【迷你摩托】张本智和(11岁)VS谭瑞午/Jens'

然后我们准备如下字符串:https://search.bilibili.com/all?keyword=
后面需要追加我们的搜索关键字

然后我们用以下代码,让b站的搜索引擎帮助我们搜索我们需要的相关视频,并返回搜索页

mainUrl='https://search.bilibili.com/all?keyword='+userSeach
mainSoup = BeautifulSoup(requests.get(mainUrl).text, "html.parser")

此时,mainSoup 中存储的就是搜索结果页面的整个页面的html代码

由于我们考虑到搜索到的视频可能很多,所以会产生分页,所以我们这里先通过网页中的一段代码来看看我们的搜索结果一共有多少页的结果。

首先点击这里
在这里插入图片描述
随后我们按Ctrl+F打开搜索框,输入下一页进行搜索,可以看见下图的箭头位置有个50,那预示着最大页数是50。
他周围的样式有个最特别且唯一的,那就是一个样式为page-item last的li标签
我们应用以下代码锁定他,从而获得这个对象,并将它暂时赋值给pages
(剩下内容不再阐述如何根据标签锁定数据所在地)

pages=mainSoup.find('li',class_="page-item last")

在这里插入图片描述
值得注意的是,如果搜索结果不存在或者只有一页,你是找不到这个
所以考虑到这种情况,我们在上面的代码的基础上,将代码写成:

pages=mainSoup.find('li',class_="page-item last")
if(pages):
    pages=int(pages.text)
else:
    pages=1

通过判断pages是否为空,可以分开两种情况,并处理。
第一种情况就是有多少页数给多少页数
第二种情况则是设置为只有一页

之后我们设置while来遍历所有的结果页,在此之前,我们先了解下如何换页:
在这里插入图片描述
当我点开了第二页,发现地址栏上多出了一小段字符串,明显的,它就是用来换页的。

那么,这个循环的基础代码就写成:

while page<=pages:
    mainUrl='https://search.bilibili.com/all?keyword='+userSeach+'&page='+page.__str__()
    mainSoup = BeautifulSoup(requests.get(mainUrl).text, "html.parser")
    ...待写...
    page+=1

这里的page是当前页数,初始值为1
这样子,这个循环就能遍历所有结果页了

然后我们正式进入获取视频信息的环节

我们用一个viedoNum变量(初始值为0)来表示这是第几个被获取的视频

val临时变量来存储一个对象,避免重复查找,浪费时间

我们可以从搜索页上直接获取的信息有:

while page<=pages:
    mainUrl='https://search.bilibili.com/all?keyword='+userSeach+'&page='+page.__str__()
    mainSoup = BeautifulSoup(requests.get(mainUrl).text, "html.parser")
    for item in mainSoup.find_all('li',class_="video-item matrix"):
        viedoNum += 1
        print('第'+ viedoNum.__str__() + '个视频:')
        val=item.find('a',class_="img-anchor")
        print('视频标题:'+ val["title"])
        print('视频链接:'+'https:'+val["href"])
        print('视频简介:'+item.find('div',class_="des hide").text.strip())
        print('up主:'+ item.find('a',class_="up-name").text.strip())
        print('视频观看量:'+ item.find('span',title='观看').text.strip())
        print('弹幕量:'+ item.find('span',title='弹幕').text.strip())
        print('上传时间:'+ item.find('span',title='上传时间').text.strip())
    page+=1

由于视频图片是js动态获取的,所以我们没办法在搜索结果页上直接获取

所以我们得进去相关页面内才能获取视频图片

那么,结合上面的代码,继续写下去有:

subUrl=val["href"];
subSoup = BeautifulSoup(requests.get('https:'+subUrl).text.strip(), "html.parser")
print('视频图片:'+subSoup.find(itemprop="image")["content"])

于是,视频图片也到手了。

最终结果图是:
关键字是:【迷你摩托】张本智和(11岁)VS谭瑞午/Jens
在这里插入图片描述
关键字是:java
在这里插入图片描述

PS:你可能注意到了部分中文没有显示,但这只是编译器自己的显示问题,实际上,如果你复制那串疑似消失的字符串到外面再粘贴,那些字都是有且完整的。

完整代码:

from bs4 import BeautifulSoup
import requests
userSeach='【迷你摩托】张本智和(11岁)VS谭瑞午/Jens'
page=1
viedoNum=0
val=0
mainUrl='https://search.bilibili.com/all?keyword='+userSeach
mainSoup = BeautifulSoup(requests.get(mainUrl).text, "html.parser")
pages=mainSoup.find('li',class_="page-item last")
if(pages):
    pages=int(pages.text)
else:
    pages=1
while page<=pages:
    mainUrl='https://search.bilibili.com/all?keyword='+userSeach+'&page='+page.__str__()
    mainSoup = BeautifulSoup(requests.get(mainUrl).text, "html.parser")
    for item in mainSoup.find_all('li',class_="video-item matrix"):
        viedoNum += 1
        print('第'+ viedoNum.__str__() + '个视频:')
        val=item.find('a',class_="img-anchor")
        print('视频标题:'+ val["title"])
        print('视频链接:'+'https:'+val["href"])
        print('视频简介:'+item.find('div',class_="des hide").text.strip())
        print('up主:'+ item.find('a',class_="up-name").text.strip())
        print('视频观看量:'+ item.find('span',title='观看').text.strip())
        print('弹幕量:'+ item.find('span',title='弹幕').text.strip())
        print('上传时间:'+ item.find('span',title='上传时间').text.strip())
        subUrl=val["href"];
        subSoup = BeautifulSoup(requests.get('https:'+subUrl).text.strip(), "html.parser")
        print('视频图片:'+subSoup.find(itemprop="image")["content"])
    page+=1
晚晶
关注 关注
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
深度学习实践大作业基于Python实现的查询视频网站 bilibili视频或 up 主相关信息的小软件源码+报告
03-06
深度学习实践大作业基于Python实现的查询视频网站 bilibili视频或 up 主相关信息的小软件源码+报告 通过视频的 bv 号,查询视频网站 Bilibili 中的某个视频的数据,如视频标题、简介、当前播放量、点赞量等,并直接在当前可视化的软件页面中显示。 通过 up 主的 uid 查询该 up 主的所有上传过的视频的数据,如视频的 bv 号、评论数、发布时间、时长等等,并导出一个记录这些数据的 csv 文件。其中 csv 文件中,表项 bvid 为视频的 bv 号,title 为视频标题,comment 为视频评论数,length 为视频时长,pic 为视频封面的网址,play 为视频播放量,created 为视频发布时间。
B站关键词视频信息爬虫(可直接运行)
Drzeal的博客
01-04 1043
基于B站关键词搜索视频信息爬虫
python爬取 B 站全站视频信息
人生苦短, 还不用Python?
06-12 2168
B 站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆。不过纸上得来终觉浅,绝知此事要躬行,我码故我在。最终爬取到数据总量为1300 万条。 开发环境为:Windows10 + python3 准备工作 首先打开 B 站,随便在首页找一个视频点击进去。常规操作,打开开发者工具。这次是目标是通过爬取 B 站提供的 api 来获取视频信息,不去解析网页,解析网页的速度太慢了而且容易被封 ...
python爬虫专项(19)】blibli弹幕数据爬取(以全站搜索蔡徐坤的视频为例)
lys_828的博客
02-11 3787
blibli任意搜索关键字相关视频的弹幕数据采集 参考网址:B站蔡徐坤 爬虫逻辑:【分页url采集】-【视频页面url采集】-【视频页面数据采集 / cid信息 / 弹幕xml数据采集】 弹幕xml网址示例:https://comment.bilibili.com/84682646.xml(通过cid获取弹幕的网址,后面会详细介绍) 要求 1)函数式编程 函数1:get_outer_urls...
MOOC·嵩天老师团队·北京理工大学:《Python语言程序设计》自学笔记
杰之行的博客
09-14 7884
小编想使用python帮助自己在网上快速筛选文献、股票信息提取、写批处理脚本等,最近学习了股票信息提取,发现半年前学的基础知识已经忘完了,而且还没有笔记查询。本文就用MOOC北京理工大学:《Python语言程序设计》的课件,整理一下。 课程导学 学习python的基本要求: 会使用计算机和Office软件 阅读简单英文内容、3级及以上水平 熟练使用Web浏览器 每周至少1-2个小时,连续9周 第1章 Python基本语法元素 1.1 程序设计基本方法 1.2 Python开发环境配置 1.3 实例1:
python爬取b站数据_使用Python爬取B站全站视频信息
weixin_39797264的博客
11-21 1312
B站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆。不过纸上得来终觉浅,绝知此事要躬行,我码故我在。最终爬取到数据总量为 760万条。准备工作首先打开 B 站,随便在首页找一个视频点击进去。常规操作,打开开发者工具。这次是目标是通过爬取 B 站提供的 api 来获取视频信息,不去解析网页,解析网页的速度太慢了而且容易被封 ip。勾选 JS 选项,F5 刷新找到了 api 的地址复制下来,去除没...
python爬取b站搜索结果播放地址_python爬取下载b站视频
weixin_39879665的博客
11-23 404
Usage下载仓库git@github.com:inspurer/PythonSpider.git替换随便打开一个b站的界面,比如13236872-f0d2ec6b87301c05.png将url复制到代码中去,运行代码,稍等一会儿,上述图中的视频就被下载下来了。How to Code分析网页源码按f12浏览器开发者工具 ,通过一番审查,我们定位到视频的url在网页源代码的位置如下:window....
哔哩哔哩视频信息爬虫(实时爬取)
weixin_44245778的博客
12-19 4175
结合哔哩哔哩小助手程序 爬取思路: 自定义模块构建及框架设计: 文件目录: __init__.py: #__init__ """ 浏览json数据 videoinfo = [ data['aid'], # av号 data['view'], # 播放...
Python爬取bilibili视频(期末设计)
XT-LL的博客
06-16 3434
Python爬取bilibili视频(期末设计) 摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序。采用整个视频下载与分片拼接视频两种思路实现程序,比较两种方式的下载效率,最终采用分片下载视频再拼接成为一个视频的方式实现了bilibili视频(不包括会员视频)的下载。实现bilibili视频下载,可以用于离线观看或者收集成为视频素材或者用于剪辑,具有一定实际的用途。 引言 由于bilibili只能通过手机a
哔哩哔哩分区视频详细信息爬取(三连、播放量、标签)等
南岛鹋
09-04 6506
因为上手练习一个自己的数据分析项目,因此需要爬取数据。经历过两个版本的更新后,终于写出了第三版。期间也学会了selenium库的运用,API接口的调用,IP池等。 确定目标 因为想要一个量大的数据集,因此没有考虑热榜排名,因为所有区加起来也才一千左右。全部视频信息的话技术不行,然后就盯上了分区榜。 从这个榜单可以选择时间段,可以根据每个月的视频热度排名等信息,来分析月度热点,哪些视频更加容易火,以及各种因素对视频播放量的影响。虽然只是一个小分区月度热度排名,并不包含全部视频,但是数据量也是极大的。下图.
B站视频python爬虫下载
03-29
B站视频python爬虫下载,注意修改video_bvid,通过视频链接可以查看。B站视频python爬虫下载,注意修改video_bvid,通过视频链接可以查看。B站视频python爬虫下载,注意修改video_bvid,通过视频链接可以查看。B站...
Python项目开发实战_数据挖掘与分析-Bilibili视频爬虫_编程案例解析实例课程教程.pdf
04-10
随着互联网的发展和日益普及,如今已进入一个信息爆炸的时代,每个人都在产生数 据和使用数据,人人都是数据的制造者。在海量数据的背后,是线上与线下数字经济的真实脉动。孤立的数据往往意义不大,但是大数据背后...
人工智能-项目实践-Python-基于python/django的视频网站
06-22
一个视频点播网站,因为笔者非常喜欢观看视频,尤其是YouTube、bilibili都是笔者非常喜欢的视频网站,所以想自己实现一个简单的视频点播网站,学以致用。 项目功能 本项目分为前台和后台 前台功能 视频列表展示 ...
bilibili-user-master-python
01-30
bilibili-user-master-python 该资源仅供学习!!! 该资源仅供学习!!! 该资源仅供学习!!! 该资源仅供学习!!! 该资源仅供学习!!!
【编译程序介绍】
武帝为此的博客
04-22 1311
简单来说,编译程序是一个软件,它读取用某种编程语言编写的源代码,分析并转换成等效的、可执行的机器语言代码。这个过程涉及多个复杂的步骤,包括语法分析、语义分析、代码优化和代码生成等。
[python3] 读取一个正在更新的日志文件
言之。
04-24 527
等同于–follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪。这两种方法都会持续监听日志文件的变化,并实时读取新增的日志内容。你可以根据实际需求选择其中一种方法。要读取一个正在更新的日志文件(即实时写入的日志文件),你可以使用 Python 的。的技巧来实现实时读取。函数打开文件,并使用。
实现自定义注解、实现自定义幂等性注解
qq_44721738的博客
04-23 825
添加 Spring AOP 依赖。创建自定义注解。创建一个新的 Java 注解类,通过@interface关键字来定义,并可以添加元注解以及属性。@Target(ElementType.METHOD) //表示作用于方法上@Retention(RetentionPolicy.RUNTIME) // 表示这个注解在运行时是可见的,这样 AOP 代理才能在运行时读取到这个注解编写 AOP 拦截(自定义注解)的逻辑代码。@Aspect@Component// 方法执行前的处理。
Pandas 2.2 中文官方教程和指南(二十二)
龙哥盟
04-24 1082
原文:pandas.pydata.org/docs/ 时间增量 原文:pandas.pydata.org/docs/user_guide/timedeltas.html 时间增量是时间之间的差异,以不同的单位表示,例如天、小时、分钟、秒。它们可以是正数也可以是负数。 Timedelta是datetime.timedelta的子类,并且行为类似,但也允许与np.timedelta64类型兼容,以及一系列自定义表示、解析和属性。 解析 您可以通过各种参数构造一个Timedelta标量,包括ISO 860
Lambda表达式特点
最新发布
weixin_57763462的博客
04-24 675
**API 设计**:Lambda 表达式鼓励使用函数式接口的设计模式,这改变了 Java 库的设计,例如 `java.util.function` 包下的一系列函数式接口。- **函数式编程**:Lambda 表达式引入了函数式编程的理念,使得 Java 更接近于函数式编程语言,如 Scala 和 Clojure。- **并发编程**:Lambda 表达式与 Java 8 新增的 Stream API 结合使用,可以简化并发编程,特别是与集合的操作相关
python 通过关键字搜索B站视频
03-28
要通过关键字搜索B站视频,可以使用以下Python代码: ```python import requests keyword = "Python" # 搜索关键字 url = f"https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword={keyword}&page=1" response = requests.get(url) if response.status_code == 200: data = response.json()["data"] for item in data["result"]: print(f'Title: {item["title"]}, URL: https://www.bilibili.com/video/{item["bvid"]}') else: print("搜索失败") ``` 这个代码将搜索B站视频中标题包含关键字Python”的视频,并输出视频的标题和链接。如果搜索失败,则会输出“搜索失败”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • [Easyx\C++]一个简单的QQ聊天机器人的实现 4299
  • [C]生成指定范围内不重复元素的随机数数列的四种方法 3855
  • [Python]指定搜索关键字,通过网页获取bilibili的相关视频信息 3494
  • [C++]一个拥有音乐播放器所有基本功能的音乐库 3106
  • [Easyx]一个以图像模式输出数字的函数 3083

分类专栏

  • Linux 1篇
  • 教程 3篇
  • 算法 17篇
  • 网络 1篇
  • 图形处理 7篇
  • 阅读笔记 1篇
  • 练题 4篇
  • 函数 12篇
  • 转载

最新评论

  • [C#]vs2017-使用继承选择器创建继承窗体[图]

    2401_82774402: +1我在里面也找不到这个继承的窗体,只有空白窗体创建。如果刷到解决办法望告知,谢谢小哥了

  • [Easyx]一个使图像根据alpha透明程度输出的函数

    return_0397: 终于找到了绘制半透明贴图的方法,万分感谢

  • [Python]指定搜索关键字,通过网页获取bilibili的相关视频信息

    weixin_53900901: 请问如何解决可运行,但是没显示爬取的数据呀

  • [C++/easyx]矩形内水平垂直居中字符串

    m0_75087395: 没有相应函数吗?EGE这中是有的。

  • [Easyx]一个使图像根据alpha透明程度输出的函数

    命令方块好方: 车万人是人上人,THANK

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 【C++】如何令内存数值以最合适的单位显示
  • [Linux/UOS]同一解决方案下的控制台程序依赖SO库的方法
  • [C++]带动画鼠标指针的多屏采集和窗口采集,基于BitBlt和DXGI
2024年1篇
2023年7篇
2022年3篇
2021年10篇
2020年35篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源起名鬼才2018年宝宝起名测试结果室内装潢设计软件守卫剑阁变态版3月23清高祖明星的宝宝起名销售团队起名招魂3戒杠中国足球对叙利亚直播cctv5如何起名品牌鬼泣5修改器余姓女孩起名给新生儿起乳名男孩给孩子起名大师下载开综合商店起名字姓杨女孩起名字大全重工业公司起名鹡鸰女神第一季李氏男孩起人名我在镇夜司打开地狱之门诗经起名女孩起公司名字大全免费取名目不转睛的意思大地兽皇名声鹊起读音许愿树cinemagic四群教育淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化