Python实现B站视频数据信息内容采集

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • Python 3.10

  • Pycharm

模块使用:

  • import datetime

  • import time

  • import requests

  • import hashlib

  • import csv

如何安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


爬虫实现基本流程

一. 数据来源分析

  1. 明确需求

    明确采集的网站以及数据内容

    网址: https://search.bilibili.com/all?keyword=%E6%98%8F%E5%90%9B%E4%BD%93%E9%A
    A%8C%E5%8D%A1&from_source=webtop_search&spm_id_from=333.1007&search_source=
    5

    数据: 视频相关信息: 标题 / 播放量 / 弹幕量 / 评论 / 作者…

  2. 抓包分析 (浏览器中进行操作)

    通过浏览器自带工具 (开发者工具) 进行数据抓包: 分析我们需要数据可以请求那个网址能够得到

    • 打开开发者工具

      F12 / 右键点击检查选择 network (网络)

    • 刷新网页 / 点击下一页查看数据

      点击第二页 / 点击下一页 (爬虫批量采集数据, 进行翻页操作)

    • 通过关键字搜索找到对应数据包链接(位置)

      关键字: 我们需要的数据 (标题)

    请求网址: https://api.bilibili.com/x/web-interface/wbi/search/type

    请求方法: GET

二. 代码实现步骤

导入的模块

import requests
# 导入格式化输出模块 (内置模块, 无需安装)
from pprint import pprint
# 导入日期转化模块 (内置模块, 无需安装)
import datetime
# 导入csv模块 (内置模块, 无需安装)
import csv
# 导入哈希模块
import hashlib
# 导入时间模块
import time
1. 发送请求 (基本内容可以复制)

模拟浏览器对于url地址发送请求

  • 模拟浏览器 (字典接收参数内容)

    主要是使用开发者工具中: 请求标头 参数内容

    常用: cookie / referer / host / User-Agent (UA)

  • 请求网址

  • 发送请求 (请求方法&请求参数)

def GetResponse(url, data):
    """发送请求
    - def: 定义函数的关键字
    - GetResponse: 自定义的函数名 (自定义变量名)
    - url / data: 形式参数 --> 如果调用这个函数的时候, 需要传入参数
        url: 请求网址
        data: 请求参数
    """
    # 模拟浏览器 (伪装)
    headers = {
        # User-Agent 用户代理, 表示浏览器基本身份信息/设备信息
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=url, params=data, headers=headers)
    # 返回内容
    return response
2. 获取数据
  • response.text 获取响应文本数据


    其实除了 获取json / content 以外都可以用text

  • response.json() 获取响应json数据

    响应数据返回内容 {} / [{}] 类似这样的形式 就直接获取json()

  • response.content 获取响应二进制数据

    保存 图片/音频/视频/特定格式文件 的时候, 获取content 表示获取二进制数据

def GetInfo(page, offset, wts, w_rid):
    """获取视频数据
    GET请求: 查询参数 (链接问号后面的内容)
    """
    # 请求网址
    url = 'https://api.bilibili.com/x/web-interface/wbi/search/type'
    # 请求参数 (代码折叠)
    data = {
        'category_id': '',
        'search_type': 'video',
        'ad_resource': '5654',
        '__refresh__': 'true',
        '_extra': '',
        'context': '',
        'page': page,
        'page_size': '42',
        'from_source': '',
        'from_spmid': '333.337',
        'platform': 'pc',
        'highlight': '1',
        'single_column': '0',
        'keyword': '昏君体验卡',
        'qv_id': '0I7bwAusbLfoEYY25kUrqvU9NodT7Ktq',
        'source_tag': '3',
        'gaia_vtoken': '',
        'dynamic_offset': offset,
        'web_location': '1430654',
        'w_rid': w_rid,
        'wts': wts,
    }
    # data = {...}
    # 发送请求 + 获取数据
    JsonData = GetResponse(url=url, data=data).json()
3. 解析数据

解析方法选择根据你获取到数据情况来的

  • re
  • xpath
  • css
  • bs4 / lxml / parsel /…

json字典数据: 可以根据键值对取值

键值对取值: 根据冒号左边的内容[键], 提取冒号右边的内容[值] (一层一层往下提取)

    # 解析数据, 提取视频信息列表
    result = JsonData['data']['result']
    # for 循环遍历, 提取列表里面元素
    for index in result:
        # 提取具体数据内容, 保存字典里面
        send_date = index['senddate'] # 时间戳
        # 把时间戳转成日期
        date = str(datetime.datetime.fromtimestamp(send_date))
        dit = {
            '标题': index['title'].replace('<em class="keyword">', '').replace('</em>', ''),
            'Up': index['author'],
            '播放': index['play'],
            'BV号': index['bvid'],
            '弹幕': index['danmaku'],
            '时长': index['duration'],
            '评论': index['review'],
            '日期': date,
        }
        # 写入字典数据
        csv_writer.writerow(dit)
        print(dit)


def Hash(page, offset, wts):
    """解密w_rid参数"""
    bn = [
        "__refresh__=true",
        "_extra=",
        "ad_resource=5654",
        "category_id=",
        "context=",
        f"dynamic_offset={offset}",
        "from_source=",
        "from_spmid=333.337",
        "gaia_vtoken=",
        "highlight=1",
        "keyword=%E6%98%8F%E5%90%9B%E4%BD%93%E9%AA%8C%E5%8D%A1",
        f"page={page}",
        "page_size=42",
        "platform=pc",
        "qv_id=0I7bwAusbLfoEYY25kUrqvU9NodT7Ktq",
        "search_type=video",
        "single_column=0",
        "source_tag=3",
        "web_location=1430654",
        f"wts={wts}"
    ]
    jn = '&'.join(bn)
    string = jn + "ea1db124af3c7062474693fa704f4ff8"
    MD5 = hashlib.md5()
    MD5.update(string.encode('utf-8'))
    w_rid = MD5.hexdigest()
    return w_rid
4. 保存数据
if __name__ == '__main__':
    """保存数据(固定写法)
    open() 内置函数, 用于文件操作(保存/读取)
        - file='data.csv': 保存路径以及文件名/格式
        - mode='w': 模式(保存方式) w写入数据
        - encoding='utf-8': 编码
            如果你保存csv表格使用utf-8乱码了 --> 换成utf-8-sig
        - newline='': 换成符
    csv.DictWriter(): csv模块中字典写入方式
        - f: 通过open函数创建的文件对象
        - fieldnames: 字段名(表头), 表格文件中第一行内容,表示后续数据是什么东西
    """
    f = open(file='data.csv', mode='w', encoding='utf-8', newline='')
    csv_writer = csv.DictWriter(f, fieldnames=[
        '标题',
        'Up',
        '播放',
        'BV号',
        '弹幕',
        '时长',
        '评论',
        '日期',
    ])
    # 写入表头
    csv_writer.writeheader()
    for page in range(1, 29):
        print(f'=============正在采集第{page}页面的数据内容=============')
        offset = (page - 1) * 36
        wts = int(time.time())
        w_rid = Hash(page=page, offset=offset, wts=wts)
        GetInfo(page=page, offset=offset, wts=wts, w_rid=w_rid)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
采用python,opencv开源库实现图片提取曲线数据 使用说明: openpic 可以选择采用自动采集测点数据或手动采集测点数据 操作过程:第一步裁剪,crop, 鼠标响应step_crop, 鼠标左键选裁剪的矩形区域,选中后键盘n表示确认进入下一步骤; 无需裁剪时键盘o直接进入下一步骤;esc表示取消,退回到开始 第二步矫正,correction,鼠标响应step_correction, 鼠标左键点选梯形矫正的四个顶点, 键盘u左上,i右上,j左下,k右下,切换当前有效操作做的顶点, 键盘w up, s down, a left, d right 或上下左右键,微调鼠标选点位置,detail display放大显示当前选点的细节; 键盘t键操作矫正,n键表示确认矫正结果进入下一步骤,b键表示取消矫正重新选梯形顶点 第三步坐标系,coordinate,鼠标响应step_coordinate, 鼠标左键点选xy坐标系的原点、x轴最大刻度点、y轴最大刻度点。 xy轴的坐标刻度值由选择图片窗口的x、y最大最小值决定,xy轴必须原点处交汇但可以从非零开始分别计算刻度 键盘u y轴,j 坐标原点,k x轴,切换当前鼠标点选的有效点 键盘w up, s down, a left, d right 或上下左右键,微调鼠标选点位置,detail display放大显示当前选点的细节; 默认图片已经矫正,坐标系仅支持直角坐标系,在设置坐标系时原点可以任意移动,x轴y轴只能依据原点位置在直角轴上移动 键盘n表示确认坐标系设置结果进入下一步,b表示取消退回到上一步,esc退回到开始 第四步采集数据:手动采集manual_sample中使用sample_points,鼠标响应step_sample_points,鼠标左键点选要采集的测点,键盘n表示确认选择开始选下一个点 键盘o表示选择完输出测点数据到csv文件。 键盘w up, s down, a left, d right 或上下左右键,微调鼠标选点位置,detail display放大显示当前选点的细节; 自动采集auto_sample中使用tracecolor,鼠标响应step_color_picker。自动采集原理为先选择曲线,然后自动等间隔采集曲线上点 开始界面中没有自动采集点数,在使用auto的函数调用时添加。 自动采集以tracecolor颜色提取构建曲线,曲线点数据平滑,间隔重采样为主要工作过程。在图片中存在同色非相关区域时,可采用颜色提取刷,手动确定曲线的有效范围 键盘l切换提取刷开关,提取刷功能开启时,鼠标右键按住滑动刷出有效的采集范围。 鼠标左键点选的位置作为提取颜色,同时具备单一颜色固定阈值提取曲线和多个颜色自动确定阈值范围的提取曲线两种模式。 键盘p选择鼠标位置的点颜色作为多个颜色参考提取,移动鼠标位置(或键盘移动)采用p键选择多个颜色点,确定提取阈值范围 键盘n表示完成颜色选择开始曲线提取,显示提取后黑白曲线图,键盘b取消提取退回上一步重新操作 esc取消退回到开始 键盘o表示接受曲线提取结果,开始自动间隔采集计算曲线上点,并输出csv文件
《真实世界的Python仪器监控:数据采集与控制系统自动化》是2013年 出版的图书,作者是休斯。ISBN 978-7-121-18659-2 本书主要帮助读者了解如何通过自行开发应用程序来监视或者控制仪器硬件。本书内容涵盖了从接线到建立接口,直到完成可用软件的整个过程。 本书适合需要进行仪表控制、机器人、数据采集、过程控制等相关工作的读者阅读参考。 目录编辑 第1 章仪器学概论........................................................ 1 数据采集.........................................................................2 控制输出................................................................................4 开环控制 ...............................................................5 闭环控制.........................................................6 顺序控制.............................................8 应用概观.............................................................9 电子测试仪器...........................................................9 实验室仪器..............................................................11 过程控制..........................................................12 小结............................................................................14 第2 章基本电子学...................................................... 15 电荷..............................................................15 电流..................................................................17 基础电路理论..........................................18 电路原理图.......................................................20 直流电路特性.................................................23 欧姆定律...........................................24 电流吸入与电流输出.................................26 再谈电阻 ......................................27 交流电路...............................................28 正弦波.......................................29 电容器.......................................................30 电感器.......................................................................34 其他波形:方波、斜波、三角波和脉冲.............................................37 接口.............................................................38 离散数字I/O.......................................................38 模拟I/O.................................................42 计数器与定时器.......................................46 脉宽调制........................................48 串行I/O.............................................49 并行I/O........................................51 小结.......................................................53 推荐阅读....................................................54 第3 章 Python 编程语言.............................................. 55 安装Python.................................................................56 Python 编程...............................................................57 Python 的命令行 ................................................57 命令行参数和环境.....................................58 Python 中的对象...........................................59 Python 中的数据类型..............................................60 表达式........................................................73 操作符..................................................73 语句........................................................79 字串..........................................................86 程序组织.............................................91 模块导入........................................101 加载并运行Python 程序.................................104 基础输入输出.........................................106 提示和技巧................................110 Python 开发工具................................112 编辑器和IDE...................................................112 调试器....................................115 小结...................................................115 推荐阅读.................................................115 第4 章 C 语言编程.................................................... 117 安装C 语言编程环境 ...................................117 使用C 语言开发软件........................118 一个简单的C 程序........................119 预处理指令....................................122 标准数据类型.....................................126 用户定义类型 ..................................127 操作符................................................127 表达式........................................136 语句.....................................................136 数组和指针..................................143 结构..............................................146 函式..........................................150 标准库...........................................151 编译C 程序...................................152 C 语言综述 ........................................156 C 开发工具............................................156 小结............................................................157 推荐阅读...........................................................157 第5 章 Python 扩展................................................... 159 用C 建立Python 扩展...................................160 Python 的C 扩展API.......................................161 扩展代码的模块组织 .....................................161 Python API 类型和函数.................................163 方法表.................................................163 方法标记......................................164 传递数据..................................................165 使用Python 的C 扩展API............................167 通用离散I/O API..............................................167 通用包装器示例..............................................169 调用扩展...................................................173 Python 的ctypes 外部函数库...............................177 用ctypes 载入外部DLL........................177 ctypes 中的基本数据类型................178 使用ctypes...................................................179 小结................................................................179 推荐阅读...............................................180 第6 章硬件:工具与耗材.......................................... 181 必备工具....................................................181 手工工具..........................................182 数字万用表..............................................184 焊接工具.........................................187 最好能有的工具..................................189 高级工具...................................................190 示波器..........................................190 逻辑分析仪.................................192 测试设备注意事项........................194 耗材................................................194 全新和二手 ..........................................195 小结...............................................196 推荐阅读..................................................196 第7 章物理接口........................................................ 197 连接器.............................................................197 DB 型连接器.........................................198 USB 连接器...........................................201 圆形连接器...............................................202 接线端子................................................203 接线...................................................205 连接器失效.........................................207 串行接口..................................................208 RS-232/EIA-232............................209 RS-485/EIA-485..............................................215 USB............................................................220 Windows 虚拟串口......................................224 GPIB/IEEE-488..............................................226 GPIB/IEEE-488 信号 .....................................226 GPIB 连接............................................228 GPIB 转接USB .............................................229 PC 总线接口设备.............................................230 基于总线接口的优缺点................................230 数据采集卡.............................................232 GPIB 接口卡...........................................232 旧并不代表差............................................................233 小结......................................................234 推荐阅读................................................234 第8 章开始干吧........................................................ 235 项目定义..............................................................236 需求驱动的设计 ..................................236 从需求开始..........................................237 工程目标.............................................238 需求......................................................239 为什么需要需求........................240 良好的需求...................................241 全景....................................................242 需求类型..........................................242 用例......................................................244 可追溯性 .....................................246 需求捕获.....................................248 设计软件....................................................248 软件设计说明.............................................249 SDD 的图景............................................249 伪代码...........................................253 分而治之................................253 处理错误和故障........................255 功能测试.........................................256 为需求而测.................................257 测试用例................................................257 测试错误处理............................................260 回归测试..............................................261 进展追踪................................................261 实施............................................................262 代码风格................................................262 组织你的代码 ..................................264 代码复查.......................................265 单元测试................................................268 连接到硬件...............................................277 软件文档化.........................................278 版本控制..............................................281 缺陷跟踪..........................................281 用户文档 ................................................................282 小结..........................................................283 推荐阅读 ...................................................283 第9 章控制系统概念................................................. 285 基础控制系统理论......................................286 线性控制系统......................................286 非线性控制系统......................................288 顺序控制系统.............................................289 术语和符号.......................................................290 控制系统框图..........................................292 传递函数......................................................293 时间和频率...........................................293 控制系统类型........................................................298 开环控制.........................................................299 闭环控制...............................................299 非线性控制:继电器控制器....................................... 306 顺序控制系统.............................................308 比例、比例积分、比例积分微分控制..........................................................312 混合控制系统...........................................317 用Python 实现控制系统............................................318 线性比例控制器..........................................318 开关式控制器..................................................319 简单PID 控制器.................................................320 小结................................................................................324 推荐阅读.................................................324 第10 章构建并使用仿真器........................................ 327 什么是仿真.........................................328 低保真和高保真................................................................329 模拟错误和故障.......................................................330 使用Python 创建一个仿真器.............................................333 程序包和模块的组织......................................334 数据输入/ 输出仿真器 ......................................334 交流电源控制器仿真............................................349 串行终端仿真器......................................................358 使用终端仿真器脚本.................................................359 显示仿真数据......................................................361 gnuplot ............................................361 使用gnuplot.....................................................363 使用gnuplot 将仿真器数据图表化 ............................................. 366 创建你自己的仿真器................................................369 确认仿真器的必要性........................................369 仿真的范围...........................................370 时间和精力.................................................371 小结...............................................................371 推荐阅读..................................................371 第11 章仪器数据I/O................................................ 373 数据I/O :接口软件......................................373 接口格式与协议......................................................374 Python 接口支持的工具包 ............................................383 Windows 平台上的替代品.........................................389 在Linux 下使用基于总线的硬件I/O 设备.............................. 389 数据I/O :数据采集与写入...................................391 基本数据I/O...........................................391 阻塞和非阻塞调用................................................................398 数据I/O 方法.......................................................399 数据I/O 错误处理...............................................402 处理不一致的数据.................................................407 小结..................................................................411 推荐阅读...........................................................412 第12 章读写数据文件............................................... 413 ASCII 数据文件..................................................414 原始的ASCII 字符集................................414 Python 的ASCII 字符操作方法............................. 416 读写ASCII 平面文件 .......................................418 配置数据...............................................425 AutoConvert。py 模块——自动转换字符串 .................................................. 427 FileUtils。py 模块——ASCII 数据文件I/O 工具 ........................................... 430 二进制数据文件..................................................440 平面二进制数据文件............................................440 用Python 处理二进制数据.............................................. 442 图像数据................................................453 小结 ..................................................................462 推荐阅读............................................................................462 第13 章用户界面 ......................................................465 文本界面...........................................................465 控制台...................................................465 ANSI 显示控制台技术................................478 Python 和curses..........................................494 用不用curse 是个问题吗 .....................................502 图形用户界面.................................................502 图形用户界面的历史和概念..................................... 503 在Python 中使用GUI............................504 TkInter...................................................................508 wxPython .................................................514 小结..........................................................522 推荐阅读........................................................523 第14 章实例............................................................ 525 串行接口........................................................525 简易DMM 数据获取..................................................526 串行接口的离散或模拟数据I/O 设备 ....................................... 531 串行接口及对速度的考虑.........................................................535 USB 实例:LabJack U3.....................................................536 LabJack 连接....................................................537 安装LabJack 设备...........................................538 LabJack 与Python...................................539 小结.............................................................546 推荐阅读...........................................................547 附录A 自由和开源软件资源 ....................................... 549 附录B 仪器资源 ........................................................ 553 索引........................................................................... 557

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值