python 获取本地视频信息_Python利用B站API获取视频信息

2023-11-15

本帖最后由 skeep 于 2017-7-23 12:28 编辑

Python利用B站API获取视频信息

这两天工作中需要写两个简单的爬虫,我自己参考网上的资料,手动实现了一下,今天总结一下发给大家。

[参考链接]:https://www.v2ex.com/t/347986

编写爬虫首先是分析想要爬去的页面url格式或者html页面中的标签的链接。

none.gif

11.jpg (110.69 KB, 下载次数: 1)

11

2017-7-23 12:11 上传

在浏览器中按F12打开监控面板,选择network页面,该页面中可以分析浏览器与服务器之间的交互情况。

none.gif

22.jpg (141.88 KB, 下载次数: 0)

22

2017-7-23 12:11 上传

按F5刷新页面,浏览器会向服务器发送很多请求,服务器也会对浏览器的请求做出相应相应。我们在下方选择Other,这样便可以筛选出其他类型。

none.gif

33.jpg (115.21 KB, 下载次数: 0)

33

2017-7-23 12:11 上传

我们从中选择json类型的HTTP请求,然后逐个观察分析,在每个HTTP请求的详情页中,选择Response,查看服务器发回的响应。

none.gif

44.jpg (170.44 KB, 下载次数: 0)

44

2017-7-23 12:11 上传

一直向下分析,直到找到一个返回的JSON中的内容正是我们所需的那条请求记录,其开头为stat?callback,可以看到其内部的返回数据与页面中的是有着对应关系的

none.gif

55.jpg (169.05 KB, 下载次数: 0)

55

2017-7-23 12:11 上传

在右侧的HTTP详情页面中选择Headers,然后点击Edit and Resend按钮,将找到的链接复制一下

none.gif

66.jpg (134.07 KB, 下载次数: 0)

66

2017-7-23 12:11 上传

none.gif

77.jpg (134.57 KB, 下载次数: 0)

77

2017-7-23 12:11 上传

在浏览器中新开一个标签页,然后将刚才复制的链接粘贴到到浏览器地址栏中,可以看到得到的便是json串。

none.gif

88.jpg (67.87 KB, 下载次数: 0)

88

2017-7-23 12:11 上传

我们看到这个链接非常长,带了很多冗余信息,不方便我们最后编写爬虫的URL,尝试一下之后,发现最终可以简化成http://api.bilibili.com/x/web-interface/archive/stat?aid=10001, 访问该地址,发现我们的主要数据依旧存在

none.gif

99.jpg (46.23 KB, 下载次数: 0)

99

2017-7-23 12:11 上传

主要代码如下

#craw_bilibili.py

import time

import requests

import sys

from prettytable import PrettyTable

#设置编码方式

reload(sys)

sys.setdefaultencoding(‘utf-8’)

#返回爬取的数量

def get_Craw_num():

print("-----------菜 单--------------")

i=str(raw_input("请输入爬取视频的起始编号"))

print("-----------------------------")

return i

#爬虫的功能实现

def start_craw(url):

print("开始爬取,请稍候")

headers={}

x=PrettyTable(['视频编号','播放量','弹幕','回复','收藏','硬币','分享'])

t=0

i=get_Craw_num()

while(t<100):

r=requests.get(url.format(i),headers=headers)

if r.status_code ==200:

try:

j=r.json()['data']

favorite=j['favorite']

danmaku=j['danmaku']

coin=j['coin']

view=j['view']

share=j['share']

reply=j['reply']

favorite=str(favorite)

danmaku=str(danmaku)+" "

coin=str(coin)

view=str(view)

share=str(share)

reply=str(reply)

av_num="av"+str(i)

x.add_row([av_num,view,danmaku,reply,favorite,coin,share])

except Exception as e:

pass

else:

break

i=i+1

t=t+1

print (x)

print("爬取完成")

#main函数

if __name__=="__main__":

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

start_craw(url)

部分代码解释

首先是导入所需的python库,以及设置编码方式为utf-8。其中PrettyTable库的作用是可以将数据按照表格的形式展示出来。代码为:

none.gif

1.jpg (19.01 KB, 下载次数: 0)

1 导入python包

2017-7-23 11:52 上传

编写获取用户输入的爬取数量的函数。将输入的数值转化成int类型,然后返回,具体代码如下:

none.gif

2.jpg (21.34 KB, 下载次数: 0)

2 获取输入

2017-7-23 12:06 上传

其次是爬虫的主体部分。首先是用prettytable,插入表头信息,然后开始构造url地址,用requests方法获取url内容,对于返回的json串进行解析,然后将每个数值对应的插入到表格中,如果插入记录到达100条,则退出该函数,具体代码如下编写主函数。

none.gif

3.png (124.66 KB, 下载次数: 0)

3 爬虫主体

2017-7-23 12:06 上传

主函数直接调用,爬虫的主体部分,代码如下:

none.gif

4.jpg (10.86 KB, 下载次数: 0)

4 主函数

2017-7-23 12:06 上传

效果展示

随便输入一个数字,如10086,然后回车,稍等一会便可以打印爬取结果

none.gif

111.png (108.73 KB, 下载次数: 1)

111

2017-7-23 12:24 上传

none.gif

222.png (1.02 MB, 下载次数: 0)

222

2017-7-23 12:25 上传

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 获取本地视频信息_Python利用B站API获取视频信息 的相关文章

  • memcached server LRU 深入分析

    Memcached 人所皆知的remote distribute cache 不知道的可以javaeye一下下 或者google一下下 或者baidu一下下 但是鉴于baidu的排名商业味道太浓 从最近得某某事件可以看出 所以还是建议jav
  • 【Java基础】异常

    文章目录 1 基本信息 2 Throwable 体系 2 1 Exception 2 2 Error 2 3 常见的 Exception 和 Error 3 异常的处理 3 1 抛出异常throw 3 2 捕获异常try catch fin
  • OpenAI API(ChatGPT)接口地址https://api.openai.com/v1/chat网络问题无法访问Error: connect ECONNREFUSED ETIMEDOUT

    https api openai com v1 chat是openAI的API接口地址 因为长城的原因 23年年初一次更新后便无法访问 访问接口会提示Error connect ETIMEDOUT等网络相关的问题 解决办法有三种 本文只做方
  • 分类算法的R语言实现案例

    最近在读 R语言与网站分析 书中对分类 聚类算法的讲解通俗易懂 和数据挖掘理论一起看的话 有很好的参照效果 然而 这么好的讲解 作者居然没提供对应的数据集 手痒之余 我自己动手整理了一个可用于分类算法的数据集 下载链接 csdn下载频道搜索
  • Java实现将数字转化为繁体汉字表示

    在CSDN论坛上看到了一个帖子 要求用Java实现将数字转化为繁体汉字表示 如 输入一个数字将其转化为大写 比如输入整型1034 得到 壹仟零叁拾肆 看了之后感觉挺有意思的 自己也就写了一个 代码如下 实现将数字转化为繁体汉字表示 impo
  • TensorFlow2学习(一):介绍及安装测试

    TensorFlow是什么 从计算机发明之初 人们就希望它能够帮助甚至代替人类完成重复性劳作 利用巨大的存储空间和超高的运算速度 计算机已经可以非常轻易地完成一些对于人类非常困难 但对计算机相对简单的问题 比如统计一本书中不同单词出现的次数
  • 使用vuex完成加入购物车案例

    需求 当点击了加入购物车按键后 把商品添加到购物车中 步骤 先获取商品的数据 保存到仓库中 将数据保存到本地存储 在购物车页面 从本地进行调用数据 进行页面渲染 页面组成
  • python3 根据ip获取国家

    pip install geoip2 https blog csdn net hxm6621315 article details 127774378
  • Python-打印螺旋矩阵

    问题描述 输入N 打印 N N 螺旋矩阵 比如 N 3 打印 1 2 3 8 9 4 7 6 5 N 4 打印 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 思路 常规法是不断的对数据边界进行判断会很复杂 不
  • vue界面转为静态html,html静态页面通过vue实现数据动态化

    看完觉得有用记得给个赞奥 你的赞就是我的动力 1 引入vue 引入jQuery 因为等下用Ajax请求数据用到jQuery 如 2 初始化并绑定vue 首先在自己的网页body内添加一个div包括所有内容 并给这个div设置id 如 Doc
  • 对象在内存中的初始化过程

    参考 1 https blog csdn net WantFlyDaCheng article details 81808064 2 深入理解java虚拟机 Student s new Student 为例 1 首先查看类的符号引用 看是否
  • EC纠删码(Erasure Code)校验码算法相比传统RAID5有哪些优势?

    EC纠删码 Erasure Code 校验码算法相比传统RAID5有哪些优势 1 EC算法是跨节点的 4 2 1的冗余允许1个节点故障而不丢失数据 RAID5一般是由节点内的若干块盘组成RAID组的 只能容忍硬盘故障 不能容忍节点故障 2
  • 0基础速通html

    一 基础认知 1 网页 网页组成 文字 图片 音频 视频 超链接 程序员写的代码是通过什么软件转换成网页的 浏览器 2 浏览器 是网页显示 运行的平台 是前端开发必备利器 常见的五大浏览器 IE浏览器 火狐浏览器 谷歌浏览器 Safari浏
  • Android DataBinding 学习(二)

    dataBinding 二 1 在布局中使用vm变量进行资源判断 场景 点击按钮 对应的圆和按钮本身的背景颜色发生改变 不需要单独在代码中设置其背景色 可以直接在布局中镶嵌 VM public class TestVM public Obs
  • UE4_Python编写,Pycharm智能提示API

    1 按照教程配置环境 在对应的目录下会有一个unreal py 的文件 把它粘贴到对应的Python的项目目录 2 因为Pycharm 的py 文件 默认支持的智能提示是 the file size 10 5mb exceeds confi
  • Mk配置aar文件遇到的问题记录

    第一步 include CLEAR VARS LOCAL PREBUILT STATIC JAVA LIBRARIES demo libs demo aar 要添加的aar LOCAL AAPT FLAGS auto add overlay
  • LocalDateTime和字符串相互转换------时间转换:

    Test public void timeTest04 throws ParseException String dateTime 2022 03 21T02 29 13 732843 DateTimeFormatter dateTimeF
  • MTK Pump Express 快速充电原理分析

    1 MTK PE 1 1 原理 在讲正文之前 我们先看一个例子 对于一块电池 我们假设它的容量是6000mAh 并且标称电压是3 7V 换算成Wh 瓦时 为单位的值是22 3Wh 6000mAh 3 7V 普通的充电器输出电压电流是5V2A
  • ArcGIS 解决影像裁剪后锯齿问题

    矢量数据裁剪栅格数据的原理 个人理解 当输入矢量数据的范围完全包含或包含一个像元大小的50 及以上 裁剪时就默认把这个像元作为输出像元 反之 不输出 如下图 从而导致影像裁剪后存在锯齿问题 因此锯齿问题归根结底就是影像分辨率问题 导致结果就

随机推荐

  • chatgpt赋能python:Pythontomorrow:未来十年最重要的编程语言

    Python tomorrow 未来十年最重要的编程语言 Python 是一种高级 通用 解释型 面向对象的动态编程语言 自 1991 年诞生以来 Python 已成为了世界上最流行的编程语言之一 然而 Python 仍没有达到顶峰 未来的
  • C++客户端Modbus通信(TCP主站)

    本文简单介绍Qt使用外部modbus通信C 编程流程 modbus中文手册 https blog csdn net qq 23670601 article details 82155378 Qtmodbus较为方便 建议无特殊情况可以使用q
  • mysql中去除重复数据,只保留一条。

    梳理一下关于删除重复记录的逻辑 目录 前期准备 建表插入数据 1 通过group by 和count 1 gt 1找出有重复的数据 2 通过每个分组中的最小id来去重 2 1 添加主键id列 2 2 去重 2 2 1 首先找出每个分组中co
  • 数据结构:栈和队列的实现和图解二者相互实现

    文章目录 写在前面 栈 什么是栈 栈的实现 队列 什么是队列 队列的实现 用队列实现栈 用栈模拟队列 写在前面 栈和队列的实现依托的是顺序表和链表 如果对顺序表和链表不清楚是很难真正理解栈和队列的 下面为顺序表和链表的实现和图解讲解 手撕图
  • MySQL里datetime字段怎么设置默认时间

    Mysql 如何设置字段自动获取当前时间 TimeStamp和DateTime 转 MySQL datetime数据类型设置当前时间为默认值 两个方法 dateTime TimeStamp类型 建表时的设置 参考 mysql中datetim
  • 【ubuntu

    every blog every motto You can do more than you think https blog csdn net weixin 39190382 type blog 0 前言 ubuntu 22 04 安装
  • Shell脚本执行FTP操作

    一 从本地上传单个文件到FTP bin bash PUTFILE test txt ftp i v n ftp ip ftp port lt
  • android小项目之音乐播放器二

    Android应用开发 MP3音乐播放器代码实现 一 需求1 将内存卡中的MP3音乐读取出来并显示到列表当中 1 从数据库中查询所有音乐数据 保存到List集合当中 List当中存放的是Mp3Info对象 2 迭代List集合 把每一个Mp
  • LaTex的Algorithm的\caption里边的编号设置

    只需在文件头部设置 setcounter algorithm 2 就会从3开始编号 效果如下 参考
  • mysql取分组后最新的一条记录

    mysql取分组后最新的一条记录 下面两种方法 一种是先筛选 出最大和最新的时间 在连表查询 一种是先排序 然后在次分组查询 默认第一条 就是最新的一条数据了 select from t assistant article as a sel
  • python知识点总结assert利用蚁剑登录

    1 python变量 变量Python 是强类型的动态脚本语言 强类型 不允许不同类型相加 例如 整形 字符串会报类型错误 动态 不使用显示数据类型声明 且确定一个变量的类型是在第一次给它赋值的时候 脚本语言 一般是解释性语言 运行代码只需
  • Unity3d数字地球加载Arcgis数据(shp)、DEM数据(tif)、点云(las)、倾斜摄影模形(flp、osgb)

    Unity3d数字地球加载Arcgis数据 shp DEM数据 tif 点云 las 倾斜摄影模形 flp osgb QQ515716030 课程及源代码 Unity3D读取GIS文件原理解析 Unity3d数字地球加载Arcgis数据 s
  • 在Spring-Boot中引入service

    在XXXApplication的同级目录下 添加service文件夹 并在其下添加impl子文件夹 设该service用于与DAO层交互来操作student表 一 在service下添加一个interface 其名称为IStudentSer
  • Vue 3.0 模板语法

    Vue js 使用了基于 HTML 的模板语法 允许开发者声明式地将 DOM 绑定至底层组件实例的数据 所有 Vue js 的模板都是合法的 HTML 所以能被遵循规范的浏览器和 HTML 解析器解析 在底层的实现上 Vue 将模板编译成虚
  • 一文快速学会hadoop完全分布式集群搭建,很详细

    文章目录 前言 一 准备工作 二 克隆三台虚拟机并进行网络配置 克隆 虚拟机克隆引导 修改网络配置 验证 验证方式一 验证方式二 三 安装jdk和hadoop 四 ssh免密登录配置 概述 生成公钥和私钥 把公钥拷贝到三台虚拟机上面去 验证
  • DeformableConv(可形变卷积)理论和代码分析

    DeformableConv 可形变卷积 理论和代码分析 代码参考 DeformableConv代码 理论参考 bilibili视频讲解 1 DeformableConv理论分析 以上图为例进行讲解 在普通卷积中 input输入尺寸为 ba
  • 判断键盘输入三位数上百位十位个位上的数字

    用python实现 判断键盘输入三位数上百位十位个位上的数字 a list input 请输入三位 for i in range 1 4 if i 1 print 百位是 a 0 elif i 2 print 十位是 a 1 else pr
  • BES2300x笔记(5) -- 配对与回连的各场景详解

    哈喽大家好 这是该系列博文的第五篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 在这篇 TWS组对与蓝牙配对 博文里 我们提到了耳机与手机的组对和配对过程 其实就是蓝牙在不同访问模式间切换的体现 typedef uint8
  • SpringCloud读取Nacos配置中心报错:Could not resolve placeholder ‘xxx’ in value ‘${xxx}

    hello 我是灰小猿 一个超会写bug的程序员 近期在写一个spring cloud Alibaba读取Nacos配置中心远程配置文件的内容时 出现了几个比较坑的bug 在此记录一下 帮大家避避坑 我的使用场景 SpringBoot版本为
  • python 获取本地视频信息_Python利用B站API获取视频信息

    本帖最后由 skeep 于 2017 7 23 12 28 编辑 Python利用B站API获取视频信息 这两天工作中需要写两个简单的爬虫 我自己参考网上的资料 手动实现了一下 今天总结一下发给大家 参考链接 https www v2ex