如何使用Python对嵌套结构的JSON进行遍历获取链接并下载文件

简介: JSON(JavaScript Object Notation)是一种基于JavaScript语言的轻量级数据交换格式,它用键值对的方式来表示各种数据类型,包括字符串、数字、布尔值、空值、数组和对象,本文展示如何使用Python对嵌套结构的JSON进行遍历获取链接并下载文件。

显示器10.jpg


JSON(JavaScript Object Notation)是一种基于JavaScript语言的轻量级数据交换格式,它用键值对的方式来表示各种数据类型,包括字符串、数字、布尔值、空值、数组和对象。数组是有序的数据集合,用[]包围,元素用逗号分隔;对象是无序的数据集合,用{}包围,属性用逗号分隔,属性名和属性值用冒号分隔。

JSON可以形成嵌套结构,即数组或对象中包含其他数组或对象。例如:

{
"name": "Alice",
"age": 20,
"hobbies": ["reading", "writing", "singing"],
"friends": [
{
"name": "Bob",
"age": 21,
"hobbies": ["playing", "coding", "dancing"]
},
{
"name": "Charlie",
"age": 19,
"hobbies": ["drawing", "cooking", "watching"]
}
]
}

这个例子中,一个对象表示了Alice和她两个朋友的基本信息。这个对象有四个属性,其中hobbies是一个数组,friends也是一个数组,而friends数组中的每个元素又都是一个对象。

遍历JSON就是按顺序访问其中的每个元素或属性,并进行处理。遍历JSON有很多好处:

  • 1、提取所需信息:我们可以从嵌套结构的JSON中获取特定信息,比如Alice喜欢什么书或Bob会不会跳舞等。
  • 2、修改或更新信息:我们可以修改或更新嵌套结构的JSON中的特定信息,比如Alice年龄加1或Charlie多了一个爱好等。
  • 3、格式化或转换信息:我们可以将嵌套结构的JSON以不同形式展示给用户,比如表格、图表、列表等,或者转换成其他格式,比如XML、CSV等。
  • 4、分析或处理信息:我们可以对嵌套结构的JSON中的特定信息进行分析或处理,比如计算Alice和Bob有多少共同爱好,或者按年龄排序所有人等。

下面通过一段代码演示如何遍历JSON,提取所有的网站链接,并对zip文件使用爬虫代理IP下载:

# 导入需要的模块importjsonimportrequests# 定义爬虫代理加强版的用户名、密码、域名和端口proxy="http://16ip:pass@www.16yun.cn:8080"# 定义嵌套结构的json数据,可以用文件读取等方式替换data= {
"articles": {
"article_1": {
"image": "https://www.16yun.cn/1.jpg",
"reviews": [
                {
"attach": "https://www.16yun.cn/test/22.png"                },
                {
"attaches": [
"https://exa2.com/test/23.png",
"https://exm23.com/file.zip"                    ],
"report_to": "https://data.zzz/count_re"                }
            ]
        },
"article_2": {
"image": "https://example.com/3.jpg",
"related_posts": [
                {
"attach": [
"https://exmdy.com/79488.png",
"https://exmdy.com/file/da/eio.zip"                    ],
report_to: \"https://dafe/do\"                }]        }
}}# 定义一个函数,用于遍历json数据,提取所有的链接,并将链接中.zip后缀的文件使用代理IP进行下载defextract_and_download_links(data):
# 如果数据是字典类型,遍历其键值对ifisinstance(data, dict):
forkey, valueindata.items():
# 如果值是字符串类型,并且以http或https开头,说明是一个链接ifisinstance(value, str) andvalue.startswith(("http", \"https\")):# 打印出链接print(value)
# 如果链接以.zip结尾,说明是一个压缩文件ifvalue.endswith(".zip"):
# 使用requests模块和爬虫代理加强版发送请求,获取响应内容response=requests.get(value, proxies={"http": proxy})
# 从链接中提取文件名filename=value.split("/")[-1]
# 以二进制模式打开一个新文件,写入响应内容withopen(filename, \"wb\") as f:f.write(response.content)
# 否则,递归调用函数处理值else:
extract_and_download_links(value)
# 如果数据是列表类型,遍历其元素elifisinstance(data, list):
forelementindata:
# 递归调用函数处理元素extract_and_download_links(element)
# 调用函数处理json数据            extract_and_download_links(data)

总之,对嵌套结构的JSON进行遍历可以帮助我们更好地理解和利用其中包含的数据,并且提供了更多可能性和灵活性来满足不同场景下的需求。

相关文章
|
2月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
72 8
|
3月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
2月前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
在 Python 编程中,图是一种重要的数据结构,而深度优先搜索(DFS)和广度优先搜索(BFS)是遍历图的两种关键算法。本文将通过定义图的数据结构、实现 DFS 和 BFS 算法,并通过具体示例展示其应用,帮助读者深入理解这两种算法。DFS 适用于寻找路径和检查图连通性,而 BFS 适用于寻找最短路径。掌握这些技巧,可以更高效地解决与图相关的复杂问题。
31 2
|
2月前
|
Python
SciPy 教程 之 SciPy 图结构 7
《SciPy 教程 之 SciPy 图结构 7》介绍了 SciPy 中处理图结构的方法。图是由节点和边组成的集合,用于表示对象及其之间的关系。scipy.sparse.csgraph 模块提供了多种图处理功能,如 `breadth_first_order()` 方法可按广度优先顺序遍历图。示例代码展示了如何使用该方法从给定的邻接矩阵中获取广度优先遍历的顺序。
35 2
|
2月前
|
算法 Python
SciPy 教程 之 SciPy 图结构 5
SciPy 图结构教程,介绍图的基本概念和SciPy中处理图结构的模块scipy.sparse.csgraph。重点讲解贝尔曼-福特算法,用于求解任意两点间最短路径,支持有向图和负权边。通过示例演示如何使用bellman_ford()方法计算最短路径。
33 3
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
51 3
|
3月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
56 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
2月前
|
算法 索引 Python
SciPy 教程 之 SciPy 图结构 3
SciPy 图结构教程:介绍图的基本概念、节点和边的定义,以及如何使用 SciPy 的 `scipy.sparse.csgraph` 模块处理图结构。重点讲解 Dijkstra 最短路径算法及其在 SciPy 中的应用,包括 `dijkstra()` 方法的参数设置和使用示例。
20 0
|
2月前
|
Python
SciPy 教程 之 SciPy 图结构 2
《SciPy 教程 之 SciPy 图结构 2》介绍了图结构作为算法学中的重要框架,通过 `scipy.sparse.csgraph` 模块处理图结构。文章示例展示了如何使用 `connected_components()` 方法查找所有连接组件,通过创建稀疏矩阵并调用该方法实现。
17 0

热门文章

最新文章