Python实现Up数据信息采集 <内含JS逆向解密>

news2024/12/26 21:18:45

目录标题

      • 前言
      • 环境使用:
      • 模块使用:
      • 实现基本流程:
      • 代码展示:
      • 尾语

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

环境使用:

  • python 3.8 >>> 运行代码

  • pycharm 2021.2 >>> 辅助敲代码

模块使用:

第三方模块 需要安装

  • import requests >>> 导入数据请求模块

内置模块 你安装好python环境就可以了

  • import datetime >>> 对日期数据进行处理的主要模块

  • import hashlib >>> 提供了多种安全方便的摘要方法

  • import time >>> 主要用于时间的操作和转换

  • import csv >>> 一种通用的文件格式

第三方模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

python资料、源码、教程\福利皆: 点击此处跳转文末名片获取

实现基本流程:

一. 数据来源分析

  1. 明确需求

    • 明确采集网站以及数据

      数据: 视频基本信息: 标题 播放量 评论 弹幕 上传时间 …

  2. 抓包分析

    • 打开开发者工具: F12 / 右键点击检查选择network

    • 点击网页下一页 --> XHR 第一条数据包就是我们需要的内容

二. 代码实现步骤 <固定四个大步骤>

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

    请求链接: 数据包链接

  2. 获取数据, 获取服务器返回响应数据

    开发者工具: response

  3. 解析数据, 提取我们需要的数据内容

    视频基本信息

  4. 保存数据, 把信息数据保存表格文件

代码展示:

导入模块

import time
import requests
# 导入格式化输出模块
from pprint import pprint
import datetime
import csv
import hashlib
f = open('信息.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '描述',
    'BV号',
    '播放量',
    '弹幕',
    '评论',
    '时长',
    '上传时间',
])
csv_writer.writeheader()
  • 模拟浏览器: headers 请求头

    字典数据类型, 构建完整键值对形式

  • 请求链接:

    请求链接和请求参数分开写

    问号前面: 请求链接

    问号后面: 请求参数/查询参数

  • 批量替换:

    1. 选择替换内容, ctrl+R

    2. 输入正则命令进行匹配替换

      (.?): (.)
      ‘$1’: ‘$2’,

模拟浏览器 -> 基本反反爬虫措施

headers = {
    # 用户代理 表示浏览器基本身份信息
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
for page in range(1, 11):
    string = f'keyword=&mid=517327498&order=pubdate&order_avoided=true&platform=web&pn={page}&ps=30&tid=0&web_location=1550101&wts={int(time.time())}6eff17696695c344b67618ac7b114f92'

实例化对象

    md5_hash = hashlib.md5()
    md5_hash.update(string.encode('utf-8'))

请求链接

    url = 'https://api.****.com/x/space/wbi/arc/search'

请求参数

    data = {
        'mid': '517327498',
        'ps': '30',
        'tid': '0',
        'pn': page,
        'keyword': '',
        'order': 'pubdate',
        'platform': 'web',
        'web_location': '1550101',
        'order_avoided': 'true',
        'w_rid': md5_hash.hexdigest(),
        'wts': int(time.time()),
    }

发送请求 <Response [200]> 响应对象 表示请求成功

    response = requests.get(url=url, params=data, headers=headers)
获取响应数据:
 
    - response.json() 获取响应json数据
     
        <字典数据类型>

    - response.text 获取响应文本数据
      
        <网页源代码 字符串数据>

    - response.content 获取响应二进制数据数据
     
        <获取图片/视频/音频/特定格式文件>    

字典数据 --> 键值对取值
    
    根据冒号左边的内容[键], 提取冒号右边的内容[值]

response.json()['data']['list']['vlist'] --> 返回列表
    
    列表里面包含整个网页视频信息 <N个视频内容>

列表 / 字典 / 集合 / 元组 --> 数据容器 <装东西的盒子>

    lis = [1, 2, 3, 4, 5] --> for循环遍历, 把列表里面内容一个一个单独提取
for li in lis:
    # 从lis这个盒子里面, 把元素<东西> 拿出来, 用li变量接收

print(index)    输入一行效果
pprint(index)   多行展开效果
    for index in response.json()['data']['list']['vlist']:
        # 时间戳 时间节点 --> 上传视频时间点
        date = index['created']
        dt = datetime.datetime.fromtimestamp(date)
        dt_time = dt.strftime('%Y-%m-%d')
        dit = {
            '标题': index['title'],
            '描述': index['description'],
            'BV号': index['bvid'],
            '播放量': index['play'],
            '弹幕': index['video_review'],
            '评论': index['comment'],
            '时长': index['length'],
            '上传时间': dt_time,
        }

写入数据

        csv_writer.writerow(dit)
        print(dit)

尾语

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

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

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

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

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

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

相关文章

chapter12:SpringBoot与检索

Spring Boot与检索视频 1. 简介 我们的应用经常需要添加检索功能&#xff0c;开源的ElasticSearch是目前全文搜索引擎的首选。 他可以快速的存储、搜索和分析海量数据。SpringBoot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持。 ElasticSearch是一…

骨头的诱惑题解

样例输入1&#xff1a; 4 4 5 S.X. ..X. ..XD ....样例输出1&#xff1a; NO样例输入2&#xff1a; 3 4 5 S.X. ..X. ...D样例输出2&#xff1a; YES思路分析&#xff1a; 看到能否到达终点的题目先想 d f s dfs dfs。但这道题规定必须刚好 T T T秒到达&#xff0c;所…

记一次对Ghidra反编译的修复

前言 Ghidra是NSA在2019年开源的逆向工具&#xff0c;可以说从开源发布开始&#xff0c;就基本成了开源界唯一可以与 IDA 竞争的存在&#xff0c;其它的工具多少总是欠点意思。不过从实际情况来看&#xff0c;虽然 Ghidra一直在积极维护&#xff0c;但是现在的Bug情况跟IDA相比…

【《Azure、DevOps和微服务软件架构实战(第2版)》——教你构建并交付可满足组织业务需求的高度可扩展的企业应用程序】

本书的编写方式与很多技术书籍不同&#xff0c;作者站在架构师的视角&#xff0c;以一个项目的整个生命周期为主线&#xff0c;向读者展示了如何在云时代设计和实现一款软件&#xff0c;其内容涵盖了从软件架构设计的基本原则、需求收集、解决方案设计&#xff0c;可选技术架构…

扫码自测,全对有奖!《人月神话》知识自测卷01-共10题

自测链接 https://www.101test.com/cand/index?paperIdUH5KRN 最先答对全部题目的前三名将获赠清华大学出版社近年出版的新书。 请把全对(10分)的截屏发给微信号13811867132&#xff08;备注&#xff1a;人月兑奖&#xff09;&#xff0c;并留下相关信息。 1. [单选] 在&qu…

Vue3兄弟组件之间传值-mitt

Vue3兄弟组件之间传值-使用mitt插件 环境vue3tsvite 1.安装mitt 在终端cd到项目目录运行 npm install mitt安装成功在package.json文件会有显示 2.在main.js里面全局引用 // An highlighted block import mitt from mitt app.config.globalProperties.$mitt mitt()3.此时…

低代码开源项目汇总

低代码是基于可视化和模型驱动理念&#xff0c;结合云原生与多端体验技术&#xff0c;它能够在多数业务场景下实现大幅度的提效降本&#xff0c;为专业开发者提供了一种全新的高生产力开发范式。 不定期汇总更新一些低代码开源项目。 1、Appsmith Appsmith 是一款开源低代码…

根据UIL下载图片/视频、根据URL自动下载图片/视频、GUI自动下载想要的图片

1&#xff0c;根据UIL下载图片/视频 def downForInterface(file_path):count 1value_rows []with open(file_path, encodingUTF-8) as file:f_csv csv.reader(file)for r in f_csv:value_rows.append(r)for file_path in value_rows:cunmulu if . in file_path[0]:print(cu…

Java毕业设计-汽车出租系统【含源码、论文】

前言 汽车出租管理系统&#xff1a; 随着当今社会科学技术的高速发展&#xff0c;人民的生活水平不断的提高&#xff0c;自由行也开始盛行。有些人为了方便&#xff0c;选择汽车租赁的方式出行&#xff0c;因此汽车租赁成为一个极具市场潜力的行业。面对日趋发展的租赁市场&a…

有向图的强联通分量-SCC-Tarjan算法

有向图的强联通分量(SCC)Tarjan算法 强连通分量&#xff08;Strongly Connected Components&#xff0c;SCC&#xff09;的定义是&#xff1a;极大的强连通子图。 下图中&#xff0c;子图{1,2,3,4}为一个强连通分量&#xff0c;因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强…

B2B2C多商户跨境电商购物网站搭建(后台采集功能)

如何部署开发一个B2B2C开源多语言多商户跨境外贸网站 随着全球化的发展&#xff0c;跨境外贸成为了许多企业拓展业务的重要方向。搭建一个B2B2C跨境外贸网站&#xff0c;将有助于实现企业的全球化经营。那么如何搭建一个B2B2C跨境外贸网站呢&#xff1f; 一、选择合适的开源平…

安科瑞智能照明控制系统的应用发展需求-安科瑞黄安南

【摘 要】 &#xff1a;随着电力电子技术的快速发展&#xff0c;智能照明控制技术已经成为楼宇自动化控制系统的重要组成部分&#xff0c;是绿色照明的发展方向。智能照明控制系统在照明节能上起到重要的作用。文章结合实际案例&#xff0c;探讨了智能照明控制技术在照明节能上…

OK3588的NPU加速推理resnet18—rknn_toolkit_lite2的Python语言篇

OK3588的NPU加速推理MobileNet——Python语言篇 Rknn_toolkit_lite2Miniconda安装创建虚拟环境并运行NPU加速推理代码注释 Rknn_toolkit_lite2 RKNN Toolkit Lite2 主要用于 RKNN 模型在 Rockchip NPU 上的部署。 在使用 RKNN Toolkit Lite2 之前&#xff0c;用户需要先通过 R…

LeetCode:面试题:消失的数字——时间复杂度

题目&#xff1a;数组nums中包含0~n的所有整数&#xff0c;但其中缺失了一个数&#xff0c;请写代码找出那个缺失的整数&#xff0c;要求在时间复杂度为O&#xff08;N&#xff09;的时间内完成 思路1&#xff1a;冒泡排序遍历&#xff08;下一个数不等于上一个数1&#xff0c…

Mybatis中 #{} 和 ${} 的区别,SLQ注入

#{}:预编译处理&#xff0c;类似于占位符。${}:字符直接替换 预编译处理&#xff1a;Mybatis在处理#{}时候&#xff0c;会将SQL中的#{}转换为&#xff1f;&#xff0c;使⽤ PreparedStatement 的 set ⽅法来赋值。 直接替换&#xff1a;是MyBatis 在处理 ${} 时&#xff0c;就是…

浏览器调试Android App

浏览器调试Android App 1. 背景2. 调试工具3. 手机设置4. 打开浏览器(edge)5. 连接手机6. 点击inspect 开始调试 1. 背景 在工作中经常会遇到在原生app中嵌套h5&#xff0c; 但是在某些需要在app里面调试的内容&#xff0c; 却没有像chrome开发者工具这样的工具来帮助我们快速…

PDF文件转换成word软件有哪些?分享两个文件格式转换软件

在日常办公中&#xff0c;我们经常使用各种办公软件&#xff0c;其中PDF和Word是最常见的两种格式。相较于Word文件&#xff0c;PDF文件具有更强的兼容性和安全性&#xff0c;因此我们通常会选择以PDF格式分享文件。然而&#xff0c;如果我们需要提取PDF文件中的部分内容&#…

VPP编译安装及测试

参考&#xff1a;FD.io VPP环境下运行用户应用程序教程 环境 操作系统&#xff1a;centos7.4&#xff0c;且需要联网VPP版本&#xff1a;2009网卡&#xff1a;10G VPP编译 使用git clone VPP项目指定分支的代码&#xff08;注意&#xff1a;不要使用VPP的release版本包&…

设计模式-职责链模式在Java中使用示例-采购审批系统

场景 采购单分级审批 采购审批是分级进行的&#xff0c;即根据采购金额的不同由不同层次的主管人员来审批&#xff0c;主任可以审批5万元以下&#xff08;不包括5万元&#xff09; 的采购单&#xff0c;副董事长可以审批5万元至10万元&#xff08;不包括10万元&#xff09;的…

基于C语言的哈夫曼转化软件

完整资料进入【数字空间】查看——baidu搜索"writebug" 该软件可实现如下功能&#xff1a; 用户可以通过点击“打开文件”按钮打开本地计算机中任意一个文本文件&#xff0c;点击确认将其文本导入到程序输入文本框中&#xff0c;也可以直接在文本框中通过键盘键入文…