scrapy爬取某视频网站的部分视频信息

news/2024/5/9 4:31:06/文章来源:https://blog.csdn.net/qq_43544005/article/details/104209895

此次爬取的信息有:
1、视频名称
2、在线观看人数
3、弹幕内容
4、弹幕发送时间
5、弹幕在视频中的位置
6、点赞
7、收藏
8、投币数
在这里插入图片描述
在这里插入图片描述
由于b站的很多信息是动态加载的。所以部分信息,需要自己抓包,进入对应的网址抽取信息。例如在线观看视频人数,投币数,收藏数等等。
我的思路
首先拿到这个小项目时,分析出 要获取的数据如上。观察,不同信息对应的url。首先,我们应先在B站首页,获取出 要爬取视频的 名字,url地址。但此时存在一个问题:
在这里插入图片描述
若直接发送请求获取响应,只能的到8个视频的url和名字,其实这一栏共有24个视频信息,但这个是轮播图,不能一次性得到。起先,我试图通过抓包,希望能够得到接口地址,得到所有信息。但事与愿违,经过使用开发者工具及分析页面源码,我发现这个网页 用的vue的响应式,就是监听左右翻,然后把对应页数里的数据改到html上的href的里面 不是xhr请求。翻页更新是通过js改的html的数据。与是乎,我想到了用selenium来进行 翻页操作。并用
webdriver.Chrome().page_source来获取当前网页源码,来获得翻页后的视频信息。
上代码:

#通过selenium 间隔0.1秒点击3次 右翻页 获取 视频的名称 地址video_names = []video_urls = []chrome = webdriver.Chrome()url = 'https://www.bilibili.com/'chrome.get(url)for i in range(3):response = chrome.page_sourcee = etree.HTML(response)video_names += e.xpath('//div[@class="info"]/p[@class="title"]/text()')video_urls += e.xpath('//div[@class="recommend-box"]//a/@href')chrome.find_element_by_xpath('//i[@class="bilifont bili-icon_caozuo_xiangyou"]').click()    #点击翻页time.sleep(0.1)

此时,得到了 两个列表,一个是视频名,视频url。各有24个元素,对应24个视频。
接下来我们要 进入具体某个视频 得到其他信息。
经过对网页的分析,其过程我不再赘述。发现了储存点赞 投币 收藏 信息的网址 格式为:
aid

url = 'https://api.bilibili.com/x/web-interface/archive/stat?aid=' 

在这里插入图片描述
数据形式以json形式展现
弹幕是存放在一个xml文件地址里的
cid

  xml_url='http://comment.bilibili.com/{}.xml'.format(cids[i])

在这里插入图片描述
举个栗子

<d p="122.59100,1,25,16777215,1580443864,0,6080b8b9,27945436399534080">还有个地图和求生之路里完全一样……那个桥洞</d>

这其中,122.59100指的是 弹幕在视频出现的时间戳,27945436399534080指的是弹幕发送时的时间戳。分别需要转化为x分x秒,x月x日x时x秒。具体代码:

# # #----------------------------------------------------------------弹幕内容 时间--------------------------------------------------------------------------# 合成弹幕xml文件地址xml_url='http://comment.bilibili.com/{}.xml'.format(cids[i])response = requests.get(url=xml_url)response.encoding = 'utf-8_sig'# print(response.text)Barrage_html = response.textsoup = BS(Barrage_html, 'lxml')all_d = soup.select('d')for d in all_d:# 把d标签中P的各个属性分离开Barrage_list = d['p'].split(',')# d.get_text()是弹幕内容Barrage_list.append(d.get_text())#删去xml解析信息的列表里,不要的元素for i in range(3):del Barrage_list[1]for j in range(3):del Barrage_list[2]#将弹幕在视频出现的时间戳,转化并替换为 分 秒total_time = time.strftime("%M:%S", time.gmtime(float(Barrage_list[0])))del Barrage_list[0]Barrage_list.insert(0, total_time)#将时间戳转化为北京时间,并替换timeNum = int(Barrage_list[1])timeArray = time.localtime(timeNum)otherStyleTime = time.strftime("%m-%d %H:%M", timeArray)del Barrage_list[1]Barrage_list.insert(1, otherStyleTime)#d弹幕在视频的时间video_time = Barrage_list[0]#发送弹幕时间Barrage_time = Barrage_list[1]#弹幕内容Barrage_content = Barrage_list[2]

在线人数信息的获取,需要aid
wss://broadcast.chat.bilibili.com:7823/sub发送请求建立连接。

            def connect(plz):url = "wss://broadcast.chat.bilibili.com:7823/sub"normal = base64.b64decode('AAAAIQASAAEAAAACAAAACQAAW29iamVjdCBPYmplY3Rd')ws = websocket.create_connection(url, timeout=10)ws.send(bytes(plz))get = ws.recv()# print(get)ws.send(bytes(normal))get = ws.recv()# print(get)if get.find(b'online') != -1:# online = get_online(get)online = get_online(get)return onlineelse:print("None")def get_online_from_av(av):send = make_send(av)online = connect(send)return onlineaudience_online = get_online_from_av(avid)

最后将得到 信息返回, 写入数据库。
在这里插入图片描述
共计24351行。
其他小的问题,利用好在这里插入图片描述
都没问题,善于使用搜索引擎,省时又省力。
在这里插入图片描述
Github也是一个不错的好地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_877705.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个将多线程多进程结合爬取图片网站的示例

在图片网站爬取图片时候&#xff0c;我们需要取得具体每张图片的url地址&#xff0c;然后下载到电脑保存下来。这其中&#xff0c;对时间消耗最多的步骤是保存图片到本地硬盘&#xff0c;机械硬盘的读写性能速度较慢。如果采取单线程单进程的话&#xff0c;在读写的同时没法进行…

将代码提交到github的两种方式(其他项目管理网站类似)

首先先去git官网下载git,现在就去. 下载完成之后,右键git bash 使用命令行配置你的git的用户名和邮箱,因为git是分布式系统,所以每个用户都是独立的 命令行输入: git config --global user.name "Your Name"git config --global user.email "emailexample.com…

​​​资源分享 | 一、盘点高清壁纸网站​​

​​​资源分享 | 一、盘点高清壁纸网站​​​​​​​​​​ ​​1. wallroom​​ ​​​​2. 极简壁纸​​​ ​​​​3. 高清壁纸库​​ ​​​​4. 动漫图片和壁纸​​ ​​​​5. Wallpaper Abyss​​​​ 资源分享 | 一、盘点无版权图片网站 作者&#xff1a;1024导…

微信开放平台申请网站应用

前言&#xff1a; 这是一篇我想严重吐槽的文章&#xff0c;我需要做一个微信扫码功能&#xff0c;我看了下文档&#xff0c;发现没有那么难&#xff0c;结果一开始我就卡壳&#xff0c;申请网站应用我申请了四次&#xff0c;我很奔溃&#xff0c;关键是我搞不懂的是为什么审核…

让你的网站应用加上微信扫码功能

前言&#xff1a; 继上篇文章在微信开放平台申请网站应用以后&#xff0c;我们就可以正式开始做微信扫码登录这个功能了,接下来这篇文章我将用最通俗易懂的话语让大家掌握整个微信扫码开发的流程&#xff0c;其实真的很简单&#xff0c;只要认真阅读官方文档&#xff0c;一步步…

python3.2 自动登录网站

让我帮写个小程序&#xff0c;查了查资料&#xff0c;用python写了一个&#xff0c;以前没用过&#xff0c;都是现查的资料&#xff0c;比较粗糙&#xff0c;放到这里留作备用。 1 import urllib.parse 2 import urllib.request 3 4 # ------------------------------需…

Python 自动登录网站(处理Cookie)

Python 自动登录网站&#xff08;处理Cookie&#xff09; 博客分类&#xff1a; Python Python代码 def login(): cj cookielib.CookieJar() opener urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) login_url rhttp://zhixing.bjtu.edu.cn/memb…

Python 最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表。 实现方式: 通过goog

Python 最近因开发项目的需要&#xff0c;有一个需求&#xff0c;就是很多SNS网站都有的通过 Email地址 导入好友列表&#xff0c;不过这次要导入的不是Email 列表&#xff0c;而是QQ的好友列表。 实现方式&#xff1a; 通过google一搜&#xff0c;实现的方式大概有下面这篇文…

wordpress搜索引擎蜘蛛统计插件SEO

索引擎蜘蛛统计插件可以实时对搜索引擎来访进行统计&#xff0c;指导站长的运营&#xff0c;来访的蜘蛛类型和访问的页面都能在后台一目了然&#xff01; 免费使用下载https://yomeiyo.lanzouw.com/ifh5300s4p7a安装即可 插件安装方法 上传压缩包安装插件 如果是付费插件的话…

用Django建一个网站

目标&#xff1a;用最短的步骤在本机创建一个网站。 第一步 安装好Django之后&#xff0c;在放置网页的目录下打开命令行&#xff0c;输入 django-admin startproject mysite 即可自动创建一个名为mysite的文件夹。 进入mysite文件夹&#xff0c;创建第一个web程序app01(任意):…

提升大型网站并发访问性能

应用服务器 网络应用 中国电信 Linux配置管理 一个小型的网站&#xff0c;可以使用最简单的html静态页面就实现了&#xff0c;配合一些图片达到美化效果&#xff0c;所有的页面均存放在一个目录下&#xff0c;这样的网站对系统架构、性能的要求都很简单。随着互联网业务的不断丰…

requests 正则表达正式基础爬虫案例二:爬取网站数据

要求&#xff1a;爬取https://ssr1.scrape.center/ 网站中所有电影标题、类型、地区、电影时长、上映日期、评分、简介&#xff1b; 分析&#xff1a;网站共有两个页面组成&#xff0c;电影列表和详情&#xff0c;我们所需要的内容都在详情页面里面可以找到。 列表页面共10页&a…

PC端网站 rem适配方案

以1920设计稿为准 1、使用sass语法 转换px rem &#xff0c; vscode编辑器安装插件easy-scss 安装之后打开插件setting.json&#xff0c; 在setting.json里配置转换后css的路径 “easysass.targetDir”: “./css” 创建css文件、scss文件&#xff1a; 项目中如何使用index.sc…

给大家分享下织梦网站模板

最近需要用到一个官网模板&#xff0c;作为一个后台程序员来说写前端和专业的差了远了&#xff0c;所以想找个模板学习下&#xff0c;可是我这面是一顿搜一顿找找了好多都快绝望了因为都不是免费下载的不过最终还是找到了&#xff0c;在这里分享给大家 模板一 红色大气响应式重…

网站案例,成功案例--我的个人作品

西南贝思建筑图书连锁店网上书店成都美可快餐诚信促进会 成都商务投资网中国西部土工材料网广东劳斯丹顿卫浴设备有限公司盛世外贸服装批发城西南时报成都免费网站中国检察网成都乐于健康护理成都顺世文化传播有限公司西南大学生联盟成都川国味餐饮有限公司成都市科技进修学院…

vue 微软插件实现根据第三方网站链接预览word、pd、excelf等文件

一开始做的时候没想到会预览不了&#xff0c;报错 File not found The URL of the original file is not valid or the document is not publicly accessible. Verify the URL is correct, then contact the document owner.如下&#xff1a; 我在微软官网查到&#xff1a; 官…

世界第五大外包公司(CGI group inc)能够做出来多烂的网站,通过系分的课程设计我对于人机交互和团队合作的几个总结

文章目录 前情提要为开始刨祖坟模式做准备CGI inc发家史什么是外包公司CGI group inc看看CGI公司外包的网站你以为CGI做的网站这就算差了&#xff1f;听说你想自己改成好记的密码&#xff0c;想多了吧信息填写一次过&#xff0c;听说你想写到一半保存&#xff1f;我是随便的人吗…

小型网站到大型网站的演化过程

本文摘自书籍《大型网站技术架构.核心原理与案例分析》 1. 初始阶段&#xff1a; 应用程序、数据库、文件等所有资源都在一台服务器上。 2. 应用服务与数据服务分离 应用和数据分离后整个网站使用三台服务器&#xff1a;应用服务器、文件服务器和数据库服务器。这三台服务器对…

python爬取唯品会电商网站数据并保存到csv中

文章目录 1.目标、思路2. 获取数据3.解析数据4.保存数据 1.目标、思路 目标&#xff1a; 本次爬虫爬取的目标是唯品会中口红分类的商品。&#xff08;url &#xff09; 思路&#xff1a;打开网页后点击F12打开抓包工具&#xff0c;找到我们想要的数据包&#xff0c;并分析。 …

各大视频网站下载神器

先说介绍工具&#xff0c;后说使用方法&#xff08;其实不难&#xff09; you-get 是GitHub上的一个项目&#xff0c;其实就是通过几个命令行下载各大网站视频的&#xff0c;这对于做视频的爱好者及一些司机都是很奈斯的选择。 地址&#xff1a;https://github.com/soimort/y…