【Python】json数据解析

news2025/1/18 20:18:40

目录

json文件数据解析

爬虫获取王者荣耀英雄信息json数据包并解析

爬虫获取抖音视频json数据包并解析


json文件数据解析

json字符串:通常类似python数据类型中的列表和字典的结合,也可能是单独的列表或者字典格式,通常可以通过json模块的函数接口转换为python数据类型,也可将python中的数据类型转换成json字符串

json文件:后端通常将数据库的文件统一以json文件的格式传给前端,而前端在对json文件数据进行加工渲染,展示在前端页面。

很多时候,我们使用爬虫从前端页面获取的数据因为经过了加工渲染而并不完整,所以我们有时候需要通过获取后端的json文件数据包来获取数据

爬虫获取王者荣耀英雄信息json数据包并解析

注:本代码仅供爬虫技术学习使用,无任何商业目的

【Python】爬虫数据提取_种花家de小红帽的博客-CSDN博客

上一篇文章中的王者荣耀英雄皮肤图片获取的途径是从前端代码中的url获取,一共只有93个英雄,获取得到的数据并不完整,而这次我们可以通过网络数据包中的json文件获取数据信息,再通过爬虫下载,一共有114个英雄,是游戏目前的全部英雄

找到网络数据包中的存放英雄信息的json文件数据包,

在请求头中拿到json文件的url链接,然后下载得到json文件数据包

下载王者荣耀全英雄皮肤图片代码:

import requests
import json
import os

url = "https://pvp.qq.com/web201605/js/herolist.json"
response = requests.get(url)    # 请求得到json包数据
# print(response.text)

# 此处的json文件格式是列表里面包含字典元素
heroList = json.loads(response.text)
# print(len(heroList))        # 114

for i in heroList:
    id = i['ename']
    name = i['cname']
    print(id, name)

    os.makedirs(f"./imag/{name}")   # 给每个英雄的皮肤单独创建目录

    # 找到英雄皮肤图片的url链接,对比观察寻找规律
    cnt = 1
    while True:
        try:
            url = f"https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{id}/{id}-bigskin-{cnt}.jpg"
            response = requests.get(url)
            if response.status_code != 200:
                break
            with open(f"./imag/{name}/skin-{cnt}.jpg", "wb") as f:
                f.write(response.content)
                cnt += 1
        except:
            print(Exception)
            break

爬虫获取抖音视频json数据包并解析

注:本代码仅供爬虫技术学习使用,无任何商业目的

示例:千万粉丝运动教练刘畊宏主页视频

1. 首先打开抖音网页,搜索刘畊宏,进入刘教练的视频主页,选择检查

想要爬取视频,有多种方式,可以通过you-get直接通过视频的网页链接进行下载,但是you-get在面对抖音的反爬机制的时候很多时候会失效,这时我们就要找到视频文件的数据包,直接通过网络请求获取视频文件

2. 在PC端选择网页,并刷新,查看网络数据包,寻找存放有视频的数据包,包名并没有统一的格式,需要逐一查找,这是一个依靠运气和经验的过程,也有可能根本找不到视频数据包

观察response(响应)里面的信息,一般视频文件前面都有“video”标签,而图片文件的链接会以p开头或者标签为img或p,这并不绝对,需要依靠经验判断

3. 通过在PC端的数据包查找,我并没有找到存放视频文件的数据包,于是我们可以查找移动端的数据包,有可能能够找到,当然在移动端页面进行查找的前提是这个网页有移动端软

将抓包工具切换为移动端模式后,按ctrl F 刷新,会发现主页变成了这个影子,此时NetWork里面的网络数据包也已经改变了,我们依然需要在NetWork里面逐一查找视频数据包,观察左边的主页信息,一共有12个视频,也就是说我们最多可以找到12个视频数据的包

4. 根据经验,我找到了一个带有video标签的数据包,这个数据包下面有url_list,里面有链接,复制链接并进入,发现正是我们需要的视频文件

5. 分析数据包里面的数据结构,我们打开一个叫sojson的工具,百度直接搜索就能用,进入后点击json在线解析,这个工具可以帮助我们整理字符串数据,将其转换为可以缩放的格式,方便我们观察数据包的整体结构

通过观察,这个数据包的结构是最外层为字典,'awere_list'关键字的键值是列表,点开列表之后发现里面还会嵌套多层字典或列表

6. 获取请求数据包的url,在请求头里面可以找到url,请求方式为get,获取url的时候也可以从请求头里面获得user-agent、referer、cookied......信息

7.  获得响应信息response后,将之用json模块进行加载,json.loads(response.text),得到数据包的字典格式数据,然后再通过字典的关键字获得存放有视频信息的列表,再迭代遍历列表,获得每一个视频的文件url和标题

直接堆每一个视频文件进行网络请求,并将请求得到的数据以二进制格式写入.mp4后缀的文件中,即完成的了下载,代码中存放视频的目录请自己定义

import requests
import json

# 找到包含视频信息的数据包的url
url = "https://m.douyin.com/web/api/v2/aweme/post/?reflow_source=reflow_page&sec_uid=MS4wLjABAAAASwhiL0bRi1X_zs7UhAIO2udbD1F_XKrsJMOaukl1Io4&count=15&max_cursor=0&msToken=AjdH_77aAG1sC-0U-MaMQBD3QT95XjiZP1e4e5JJYpBnimVxKqDUU10RT2MgbZWKVfyTaxM09vdszhneWinYQNztXdYjJmQxVrp-phFdeimKvdCLmEP8uf3XbhPt4qI=&X-Bogus=DFSzKwVOFYJANeTitVG4MBt/pLfR&_signature=_02B4Z6wo00001.ZN80AAAIDCfQZoo-troSP2XffAAJmzewiu-7U6iD-JbAD74nmRsnNpUV.-BS9Fw6LVCVWwonyxlS-XqkHgugFjUnAqh-vM3n5uFWhxCFihg6oeZDnwSp1ZGQjVtWQvVauT29"
head = {
    'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36',
    'referer': 'https://m.douyin.com/share/user/MS4wLjABAAAASwhiL0bRi1X_zs7UhAIO2udbD1F_XKrsJMOaukl1Io4',
    'cookie': 'ttwid=1%7CSfdsymdYx1QlfjQTR3xYeFSNa9O6q4f1wFp6BtrRqxs%7C1676826682%7C30e0eb856043a47a208c80c1af10d30fc0cfcf4e270115abae592c5ec3873249; passport_csrf_token=6372cba6b4f2cdcca86e2189f5d1065e; passport_csrf_token_default=6372cba6b4f2cdcca86e2189f5d1065e; strategyABtestKey=%221681489097.642%22; d_ticket=5bc0d2611324cd7fbfc9e0f926fec81dc0d98; passport_assist_user=CkHkH_6ka8IiPFCiZKjYeqLlQ3IQO4dnoM20tGGmRhZNzWR0b-vg3QFOuNc8hYUqhotVsLwAHo5tpR-NWGrr7cp3_hpICjynJIYtuuLTHP0W9Aa8AzzU2xfJszvShJhQUoSBt96bF2UGXYQAgVAAwid85Z0QTR8LLb5lB5pKAX6aZzkQ_r6uDRiJr9ZUIgED4L4Gmw%3D%3D; n_mh=48GDnZrzh9L0L71QYQe9RHV7INgvIpqOtZbHqRblemk; sso_auth_status=5ac2453cbbb4e7711ec74d4525109405; sso_auth_status_ss=5ac2453cbbb4e7711ec74d4525109405; sso_uid_tt=23bd5aa65e9bf83cf5d1da0295dab814; sso_uid_tt_ss=23bd5aa65e9bf83cf5d1da0295dab814; toutiao_sso_user=e17ba4d3ba02f5112b43bf87f6ebcf82; toutiao_sso_user_ss=e17ba4d3ba02f5112b43bf87f6ebcf82; sid_ucp_sso_v1=1.0.0-KDkzMjFjN2Q2NzM2YTlkZDA5ZDQ3NThiMzNlZDlhZjFlM2U4ZDhhNTIKHwjX-IDEvvXbAxDohOahBhjvMSAMMIKS-v0FOAJA8QcaAmxmIiBlMTdiYTRkM2JhMDJmNTExMmI0M2JmODdmNmViY2Y4Mg; ssid_ucp_sso_v1=1.0.0-KDkzMjFjN2Q2NzM2YTlkZDA5ZDQ3NThiMzNlZDlhZjFlM2U4ZDhhNTIKHwjX-IDEvvXbAxDohOahBhjvMSAMMIKS-v0FOAJA8QcaAmxmIiBlMTdiYTRkM2JhMDJmNTExMmI0M2JmODdmNmViY2Y4Mg; odin_tt=c4d2b5e57715bbf9f03692fd068425eda4129913fbb28d6c1c1287a19e2203d77a66deb3279cb017d3bc28e0e451f475ca24d947928720cc9b5762f8aedd9ea6; passport_auth_status=a7ce1e07f923c0f2f1c214dd3a228ba0%2Cc53255e0ba344f56a27077246b056268; passport_auth_status_ss=a7ce1e07f923c0f2f1c214dd3a228ba0%2Cc53255e0ba344f56a27077246b056268; uid_tt=2750b133aa1926c33be64dbd3cd2ff92; uid_tt_ss=2750b133aa1926c33be64dbd3cd2ff92; sid_tt=310d75ea30feab567b26cc6cb5972446; sessionid=310d75ea30feab567b26cc6cb5972446; sessionid_ss=310d75ea30feab567b26cc6cb5972446; publish_badge_show_info=%220%2C0%2C0%2C1681490545371%22; LOGIN_STATUS=1; store-region=cn-zj; store-region-src=uid; sid_guard=310d75ea30feab567b26cc6cb5972446%7C1681490547%7C5183992%7CTue%2C+13-Jun-2023+16%3A42%3A19+GMT; sid_ucp_v1=1.0.0-KDdiN2I2MWM2N2IzYmFhYmRiODNiMTlhMDJiNmI0ZGUyZDZjZTQ4Y2MKGwjX-IDEvvXbAxDzhOahBhjvMSAMOAJA8QdIBBoCaGwiIDMxMGQ3NWVhMzBmZWFiNTY3YjI2Y2M2Y2I1OTcyNDQ2; ssid_ucp_v1=1.0.0-KDdiN2I2MWM2N2IzYmFhYmRiODNiMTlhMDJiNmI0ZGUyZDZjZTQ4Y2MKGwjX-IDEvvXbAxDzhOahBhjvMSAMOAJA8QdIBBoCaGwiIDMxMGQ3NWVhMzBmZWFiNTY3YjI2Y2M2Y2I1OTcyNDQ2; download_guide=%223%2F20230415%22; SEARCH_RESULT_LIST_TYPE=%22single%22; my_rd=1; s_v_web_id=verify_lghtat20_3RFiWIRj_x930_45U0_BZ3H_uaRjGNXAso9X; ttcid=08ead2e071f34a49a4e20a80c33afd4f42; FOLLOW_LIVE_POINT_INFO=%22MS4wLjABAAAAxMM2c6KNNNHvRluZ2KTOB7UJeBxyCmzUXWp4TliKXZ_wSxAmrY0IkUK4pwbGPM7g%2F1681574400000%2F0%2F1681553160083%2F0%22; FOLLOW_NUMBER_YELLOW_POINT_INFO=%22MS4wLjABAAAAxMM2c6KNNNHvRluZ2KTOB7UJeBxyCmzUXWp4TliKXZ_wSxAmrY0IkUK4pwbGPM7g%2F1681574400000%2F0%2F0%2F1681554392542%22; msToken=AjdH_77aAG1sC-0U-MaMQBD3QT95XjiZP1e4e5JJYpBnimVxKqDUU10RT2MgbZWKVfyTaxM09vdszhneWinYQNztXdYjJmQxVrp-phFdeimKvdCLmEP8uf3XbhPt4qI=; tt_scid=N0mdcnXLcnZ0sRc48a2X5KXeTgh11VQsoMIIH7tamef--JVlvaRFUjPP8LOViFHJ8ae2; VIDEO_FILTER_MEMO_SELECT=%7B%22expireTime%22%3A1682160805638%2C%22type%22%3A1%7D; msToken=fvm1KRAKqcE7dnf6sC2JpB9vNqVP3TloBQ4vGEQeljq2Ly5ypnjz_iUbBl3q2wq_ISn2uUhS4_XncTkCQQEsNQX63mFUzjeDdrx9yOh2ERFmUkGvQEHhgw==; home_can_add_dy_2_desktop=%221%22'
}

response = requests.get(url, headers=head)
# print(response.text)

# 通过json提取数据,通过观察可得json最外层是字典格式
data_dict = json.loads(response.text)
data_list = data_dict['aweme_list']     # vedeo在这个标签下,一共是主页的12个视频
# print(len(data_list))   # 12

# 'aweme_list'是一个字典的关键字,它的键值是一个长为12的列表,列表的每个元素又是字典
for i in data_list[:3]:
    v_title = i['desc']
    v_url = i['video']['play_addr']['url_list'][0]
    print(v_title, v_url)        # 拿到每一个视频文件的标题、url
    res = requests.get(v_url, headers=head)
    with open(f"./LiuGH/{v_title}.mp4", "wb") as f:
        f.write(res.content)

 

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

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

相关文章

亚马逊影响搜索排名的主要因素有哪些,使用测评做排名有哪些要求?

亚马逊产品的排名越高就意味着分配的流量越多而且带来更高的销量。那主要有哪些因素影响产品的排名呢? 1、产品销量 产品销量反映了该产品在同类产品中的销售情况,该数值会在产品Listing中展示,平台会每小时更新一次该排行榜。在平台算法看…

【Linux】线程控制分析:如何获取线程ID?线程如何自动回收?

Linux系统中, 线程是轻量级的进程. 我们已经介绍过了线程的相关概念, 见过了线程再Linux操作系统中的存在形式. 我们知道, 进程有自己相关控制接口, 等待、创建等 而线程作为轻量级的进程, 其实也是有控制接口的. 文章目录线程控制线程的创建与回收演示获取线程idpthread_sel…

用户管理系统-自动化测试

文章目录1. 思维导图编写 Web 自动化测试用例2. 创建测试项目3. 根据思维导图设计用户管理系统自动化测试用例3.1 准备工具类3.2 测试登录页面3.3 测试用户列表页3.4 测试添加用户页3.5 测试修改用户页3.6 未登录状态4. 自动化测试项目总结4.1 自动化测试项目实现步骤4.2 当前项…

图数据库驱动的基础设施运维实操

本文系图技术在大型、复杂基础设施之中 SRE/DevOps 的实践参考,并以 OpenStack 系统之上的图数据库增强的运维案例为例,揭示图数据库、图算法在智能运维上的应用。本文所有示例代码开源。 最近,有些尚未使用过图技术、DevOps/Infra 领域的工程…

除了Java,还可以培训学习哪些IT技术?

除了Java,还可以培训学习哪些IT技术?转行IT学Java似乎已经成为很多人的首选,原因无非是开发技术含量高、开发有前景、开发是一个互联网企业的核心岗位,最重要的是开发薪资待遇高。但其实只单纯因为薪资选择Java的话,小…

Flask数据迁移详细步骤

数据迁移详细步骤: 1. 安装好数据迁移的包 flask-sqlalchemy和flask-migrate Flask模型相关包安装 2. 在exts.py中初始化Migrate和SQLAlchemy 3. 在models中定义好模型 4. 在views.py中一定要导入models模块 from .models import * 5. 配置好数据库(sql…

MYSQL笔记01 数据库概述,SELECT语句,运算符,排序与分页,多表查询

数据库概述 为什么要使用数据库 持久化:把数据保存在可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化",而持久化的实现过程大多通过各种关系数据…

详解 23 种设计模式(多图 + 代码)

创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类&a…

每68个孩子里,就有一个自闭症,“来自星星的孩子”,离我们很近

今年4月2日是世界上第14个“世界自闭症日”。自闭症儿童,又称“星星儿童”,形容他们像遥远的星星一样独自在夜空中闪耀。自闭症并不少见根据世卫组织的调查,世界上每160名儿童中就有一人患有自闭症。根据《中国自闭症(自闭症&…

【从零开始学Skynet】基础篇(四):网络模块常用API

游戏服务端要处理客户端请求,作为服务端引擎,网络编程也是Skynet的核心功能。1、学习网络模块 skynet.socket模块提供了网络编程的API,常用的API如下表所示:Lua API说明socket.listen(address ,port)监听一个端口,返回…

你需要知道的企业网页制作流程

企业网页制作是企业建立线上形象和宣传的重要手段之一,它不仅可以提高企业的品牌知名度,还可以扩大企业的影响力和拓展客户群。下面,我们将介绍一些企业网页制作的基本流程和技巧,并结合一个案例来详细解析。 企业网页制作的基本…

【DT】蒸脱机的结构和工作原理

DT蒸脱机的结构和工作原理什么是DTDT结构图工作过程什么是DT DT 蒸脱机(DesolventazationerToaster),根据英文名可以看出来,他的作用是脱溶、烘烤。用于蒸脱湿豆粕中的溶剂。 大豆油生产工艺有2种:压榨油的加工工艺是…

C++标准库--IO库(Primer C++ 第五版 · 阅读笔记)

C标准库--IO库(Primer C 第五版 阅读笔记)第8章 IO库8.1、IO类8.2、文件输入输出8.3、string流总结:第8章 IO库 8.1、IO类 为了支持这些不同种类的IO处理操作,在istream和ostream之外,标准库还定义了其他一些IO类型。 如下图分…

Java中的注解,自定义注解

文章目录1. 注解概述2. 注解与注释3. 注解的重要性4. 常见的Annotation作用4.1 生成文档相关的注解4.2 在编译时进行格式检查(JDK内置的三个基本注解)5. 元注解6. 自定义注解6.1 定义自定义注解6.2 使用自定义注解6.3 读取和处理自定义注解框架 注解 反射 设计模式 1. 注解概…

PC安装虚拟化平台趟坑记录

合肥先进光源永磁多极铁电机控制系统的规划 Zstack EPICS Archiver在小课题组的使用经验 神仙同学的永磁四极铁样铁已经开始加工了,过一个月左右就要回来了,电机控制部分交给留国做,调试的也差不多了。项目买过一台工控机,到时候…

STM32F407ZGT6实现OLED显示屏

1、调试工具 2、OLED简介 3、硬件电路(接线) 本文采用7脚,倘若采用4脚,资料代码啥的可以在江科大B站视频下载: 资料下载:https://pan.baidu.com/s/1SqKyKr5Fsl_9gBJi8aVxTw, 提取码:8kzh&#x…

日本首相会见奥特曼,考虑引入 ChatGPT 技术

文|小戏卖萌屋日本4月12日电,日本国第101任首相,日本自民党总裁岸田文雄4月10日于东京会见了奥特曼先生,二人就 ChatGPT 引入日本的可能性问题交换了意见并进行了深入的讨论。奥特曼先生表示,希望为日本人创造伟大的东…

NumPy 秘籍中文第二版:三、掌握常用函数

原文:NumPy Cookbook - Second Edition 协议:CC BY-NC-SA 4.0 译者:飞龙 在本章中,我们将介绍许多常用函数: sqrt(),log(),arange(),astype()和sum()ceil(),modf()&…

如何突破LinkedIn领英限制,导出非好友邮箱等社交方式

相信做外贸的朋友都有使用过Linkedin,如果还没有使用过的话,我只能说您错过一个很好的平台。只要是厉害的外贸人都特别擅长用Linkedin找客户。 那为什么说Linkedin是外贸业务员开发客户最有效的途径呢?主要基于以下几点: 第一&a…

常见的相似度计算方式

1.欧氏距离(Euclidean Distance) 欧氏距离(也称欧几里得度量)指在mmm维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。 在二维和三维空间中的欧氏距离就是两点之间的实际距离。 计算公式: dist(A,B)∑i1n(Ai−Bi)2dist(A,B)\sqr…