如何使用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进行遍历可以帮助我们更好地理解和利用其中包含的数据,并且提供了更多可能性和灵活性来满足不同场景下的需求。

相关文章
|
7月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
7月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
10月前
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
10月前
|
存储 JSON API
Python与JSON:结构化数据的存储艺术
Python字典与JSON格式结合,为数据持久化提供了便捷方式。通过json模块,可轻松实现数据序列化与反序列化,支持跨平台数据交换。适用于配置管理、API通信等场景,兼具可读性与高效性,是Python开发中不可或缺的数据处理工具。
406 0
|
7月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
610 4
|
8月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
7月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
984 0
|
9月前
|
JSON 安全 API
Python处理JSON数据的最佳实践:从基础到进阶的实用指南
JSON作为数据交换通用格式,广泛应用于Web开发与API交互。本文详解Python处理JSON的10个关键实践,涵盖序列化、复杂结构处理、性能优化与安全编程,助开发者高效应对各类JSON数据挑战。
457 1
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
169 1
|
存储 JSON JavaScript
python序列化: json & pickle & shelve 模块
python序列化: json & pickle & shelve 模块

推荐镜像

更多