批量爬取B站网络视频信息

使用XPath爬取B站视频链接等相关信息

    • 分析B站html框架
    • 获取内容
    • 完整代码

对于B站,目前网上的爬虫大多都是使用通过解析服务器的响应来爬取想要的内容,下面我们通过使用XPath来爬取B站上一些想要的信息

在这里插入图片描述

此次任务我们需要对B站搜索到的关键字,并爬取搜索的视频时间、播放量、弹幕量等信息

分析B站html框架

打开B站后,搜索关键字并按下F12进入开发者模式,就能看到页面的html代码,需要在这些代码中找到需要爬取的信息。
在这里插入图片描述
点击右上角的箭头图片,再点击想要爬取内容的信息,就会自动跳转到对应的html代码上。

获取内容

找到想要爬取的信息就得获取信息的XPath表达式,这儿可以通过如下图方法快速得到表达式。
在这里插入图片描述
这样就可以得到该位置的XPath表达式了。

由于第一页XPath表达式与后面页的XPath表达式有些许的不同,需要通过对链接的验证来使用不同的表达式
在这里插入图片描述

完整代码

import requests
from lxml import etree
import time
import random
import csv
import pandas as pdheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'}result = pd.DataFrame()urls = ['https://search.bilibili.com/all?vt=69174939&keyword=%E5%A4%A7%E6%95%B0%E6%8D%AE&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?keyword=%E7%89%A9%E8%81%94%E7%BD%91%E5%B7%A5%E7%A8%8B&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?vt=69174939&keyword=%E7%94%B5%E5%AD%90%E7%A7%91%E5%AD%A6%E4%B8%8E%E6%8A%80%E6%9C%AF&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?vt=69174939&keyword=%E8%99%9A%E6%8B%9F%E7%8E%B0%E5%AE%9E&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?vt=691740939&keyword=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&from_source=webtop_search&spm_id_from=333.1007&search_source=2',
]url_key = [len(i) + 6 for i in urls]
for index, url in enumerate(urls):for page in range(1, 10):html = requests.get(url, headers=headers)print(url)bs = etree.HTML(html.text)if url[-8:-1] == 'source=':items = bs.xpath('//*[@id="i_cecream"]/div/div[2]/div[2]/div/div/div/div[3]/div')else:items = bs.xpath('//*[@id="i_cecream"]/div/div[2]/div[2]/div/div/div[1]')for i in range(1, 43):try:time = items[0].xpath(f'div[{i}]/div/div[2]/div/div/p/a/span[2]')[0].textexcept:time = Nonetry:up_author = items[0].xpath(f'div[{i}]/div/div[2]/div/div/p/a/span[1]')[0].textexcept:up_author = Nonetry:title = items[0].xpath(f'div[{i}]/div/div[2]/div/div/a/h3/@title')[0]except:title = Nonetry:href = items[0].xpath(f'div[{i}]/div/div[2]/div/div/a/@href')[0]except:href = Nonetry:Playback_volume = items[0].xpath(f'div[{i}]/div/div[2]/a/div/div[2]/div/div/span[1]/span')[0].textexcept:Playback_volume = Nonetry:Barrage_volume = items[0].xpath(f'div[{i}]/div/div[2]/a/div/div[2]/div/div/span[2]/span')[0].textexcept:Barrage_volume = Nonetry:Video_duration = items[0].xpath(f'div[{i}]/div/div[2]/a/div/div[2]/div/span')[0].textexcept:Video_duration = Noneprint(time, title, up_author, href, Playback_volume, Barrage_volume, Video_duration)df = pd.DataFrame({'time': [time], 'title': [title], 'up_author': [up_author], 'href': [href],'Playback_volume': [Playback_volume], 'Barrage_volume': [Barrage_volume],'Video_duration': [Video_duration]})result = pd.concat([result, df])if url[-8:-1] == 'source=':url = url + '&page=2&o=36'else:new_page = int(url[url_key[index]]) + 1url = url[:url_key[index]] + f'{new_page}&o={(new_page - 1) * 36}'
result.to_excel("F:/B站数据.xlsx", index=False)

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

苍穹外卖--sky-take-out(四)10-12

苍穹外卖--sky-take-out(一) 苍穹外卖--sky-take-out(一)-CSDN博客​编辑https://blog.csdn.net/kussm_/article/details/138614737?spm1001.2014.3001.5501https://blog.csdn.net/kussm_/article/details/138614737?spm1001.2…

创维汽车开展年中总结会:创新创造·勇开拓 智慧经营·攀高峰

2024年7月3日,回顾上半年的工作成果,总结经验教训,明确下半年的发展方向和重点任务,创维汽车于山西省晋中市榆次区山西联合创维体验中心开展年中总结会。 创维集团、创维汽车创始人黄宏生;开沃集团联合创始人、首席执…

昇思25天学习打卡营第12天|FCN图像语义分割

文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…

MySQL Binlog详解:提升数据库可靠性的核心技术

文章目录 1. 引言1.1 什么是MySQL Bin Log?1.2 Bin Log的作用和应用场景 2. Bin Log的基本概念2.1 Bin Log的工作原理2.2 Bin Log的三种格式 3. 配置与管理Bin Log3.1 启用Bin Log3.2 配置Bin Log参数3.3 管理Bin Log文件3.4 查看Bin Log内容3.5 使用mysqlbinlog工具…

Oracle连接失败,ORA-12514, TNS:listener does not currently know of service requested in connect descripto

问题描述 在Window上搭建Oracle数据库,安装后启动,使用Dbeaver连接时无法连接,报错:Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor Listener refused the c…

MySQL 中的 DDL、DML、DQL 和 DCL

文章目录 1. 数据定义语言(DDL)2. 数据操作语言(DML)3. 数据查询语言(DQL)4. 数据控制语言(DCL)总结 在 MySQL 数据库管理系统中,SQL 语句可以根据其功能分为不同的类别&…

Git管理源代码、git简介,工作区、暂存区和仓库区,git远程仓库github,创建远程仓库、配置SSH,克隆项目

学习目标 能够说出git的作用和管理源代码的特点能够如何创建git仓库并添加忽略文件能够使用add、commit、push、pull等命令实现源代码管理能够使用github远程仓库托管源代码能够说出代码冲突原因和解决办法能够说出 git 标签的作用能够使用使用git实现分支创建,合并…

Git注释规范

主打一个有用 代码的提交规范参考如下: init:初始化项目feat:新功能(feature)fix:修补bugdocs:文档(documentation)style:格式(不影响代码运行的变动)refactor:重构(即不是新增功能…

【基于R语言群体遗传学】-10-适应性与正选择

在之前的博客中,我们学习了哈代温伯格模型,学习了Fisher模型,学习了遗传漂变与变异的模型,没有看过之前内容的朋友可以先看一下之前的文章: 群体遗传学_tRNA做科研的博客-CSDN博客 一些新名词 (1&#xf…

MySQL之备份与恢复(八)

备份与恢复 还原逻辑备份 如果还原的是逻辑备份而不是物理备份,则与使用操作系统简单地复制文件到适当位置的方式不同,需要使用MySQL服务器本身来加载数据到表中。在加载导出文件之前,应该先花一点时间考虑文件有多大,需要多久加…

【在Linux世界中追寻伟大的One Piece】HTTPS协议原理

目录 1 -> HTTPS是什么? 2 -> 相关概念 2.1 -> 什么是"加密" 2.2 -> 为什么要加密 2.3 -> 常见的加密方式 2.4 -> 数据摘要 && 数据指纹 2.5 -> 数字签名 3 -> HTTPS的工作过程 3.1 -> 只使用对称加密 3.2 …

202406 CCF-GESP Python 四级试题及详细答案注释

202406 CCF-GESP Python 四级试题及详细答案注释 1 单选题(每题 2 分,共 30 分)第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( ) A. 1 B. 2 C. 3 D. 4答案:C解析:目前CCF组织的GESP认证考试有C++、Pyth…

opencv实现人脸检测功能----20240704

opencv实现人脸检测 早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。OpenCV 的官方版本中包含了一个更准确、基于深度学习的人脸检测器, 链接:基于深度学习…

mac M1安装 VSCode

最近在学黑马程序员Java最新AI若依框架项目开发,里面前端用的是Visual Studio Code 所以我也就下载安装了一下,系统是M1芯片的,安装过程还是有点坑的写下来大家注意一下 1.在appstore中下载 2.在系统终端中输入 clang 显示如下图 那么在终端输…

mongoDB教程(五):命名规范

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

【Java】详解String类中的各种方法

创建字符串 常见的创建字符串的三种方式: // 方式一 String str "hello world"; // 方式二 String str2 new String("hello world"); // 方式三 char[] array {a, b, c}; String str3 new String(array); "hello" 这样的字符串字…

Allegro X 重置Cadence Product Choices

Allegro X 重置Cadence Product Choices 1、关闭所有打开的工程及文件; 2:File->Change Product可选状态,点选之; 3:根据需要设置或者勾选Use as default 4:OK确认选择

机器学习 | 随机梯度下降分类器

数据科学和机器学习工具包中用于各种分类任务的一个重要工具是随机梯度下降(SGD)分类器。通过探索其功能和在数据驱动决策中的关键作用,我们开始探索SGD分类器的复杂性。 SGD分类器是一种与SGD回归器有着密切联系的灵活分类技术。它的工作原…

【网络安全】实验六(网络安全协议的应用SSL,Ipsec)

一、实验目的 二、搭配环境 打开两台虚拟机,并参照下图,搭建网络拓扑环境,要求两台虚拟机的IP地址要按照图中的标识进行设置,并根据搭建完成情况,勾选对应选项。同时,按照多选题中2-3题的要求完成相关环境…

【IMU】 确定性误差与IMU_TK标定原理

1、确定性误差 MEMS IMU确定性误差模型 K 为比例因子误差 误差来源:器件的输出往往为脉冲值或模数转换得到的值,需要乘以一个刻度系数才能转换成角速度或加速度值,若该系数不准,便存在刻度系数误差。 T 为交轴耦合误差 误差来源:如下图,b坐标系是正交的imu坐标系,s坐标系的三…