首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 HTTP基本原理
1.2 Web 网页基础
1.3 爬虫的基本原理
1.4 Session和Cookie
1.5 代理的基本原理
1.6 多线程和多进程的基本原理
2.1 urllib的使用
2.2 requests的使用
2.3 正则表达式
2.4 httpx的使用
2.5 基础爬虫案例实战
3.1 XPath的使用
3.2 Beautiful Soup的使用
3.3 pyquery的使用
3.4 parsel 的使用
4.1 TXT 文本文件存储
4.2 JSON 文件存储
4.3 CSV 文件存储
4.4 MySQL 存储
4.5 MongoDB 文档存储
4.6 Redis缓存存储
4.7 Elasticsearch 搜索引擎存储
4.8 RabbitMQ 的使用
5.1 什么是 Ajax
5.2 Ajax分析方法
5.3 Ajax 分析与爬取实战
6.1 协程的基本原理
6.2 aiohttp的使用
6.3 aiohttp 异步爬取实战
7.1 Selenium 的使用
7.2 Splash 的使用
7.3 Pyppeteer 的使用
7.4 Playwright 的使用
7.5 Selenium 爬取实战
7.6 Pyppeteer 爬取实战
7.7 CSS 位置偏移反爬案例分析与爬取实战
7.8 字体反爬案例分析与爬取实战
8.1 使用 OCR 技术识别图形验证码
8.2 使用 OpenCV 识别滑动验证码的缺口
8.3 使用深度学习识别图形验证码
8.4 使用深度学习识别滑动验证码的缺口
8.5 使用打码平台识别验证码
8.6 手机验证码的自动化处理
9.1 代理的设置
9.2 代理池的维护
9.3 付费代理的使用
9.4 ADSL 拨号代理的搭建方法
9.5 代理反爬案例爬取实战
10.1 模拟登录的基本原理
10.2 基于Session和Cookie的模拟登录爬取实战
10.3 基于JWT的模拟登录爬取实战
10.4 大规模账号池的搭建
11.1 网站加密和混淆技术简介
11.2 浏览器调试常用技巧
11.3 JavaScript Hook 的使用
11.4 无限 debugger 的原理与绕过
11.5 使用 Python 模拟执行 JavaScript
11.6 使用 Node.js 模拟执行 JavaScript
11.7 浏览器环境下 JavaScript 的模拟执行
11.8 AST 技术简介
11.9 使用 AST 技术还原混淆代码
11.10 特殊混淆案例的还原
11.11 WebAssembly 案例分析和爬取实战
11.12 JavaScript 逆向技巧总结
11.13 JavaScript 逆向爬取实战
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(上)
小册名称:Python3网络爬虫开发实战(上)
### 4.2 JSON 文件存储 在Python网络爬虫开发过程中,数据的存储是一个至关重要的环节。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和生成,成为了网络爬虫数据存储的首选格式之一。本章将深入探讨如何在Python中操作JSON文件,包括如何将爬取的数据以JSON格式存储到文件中,以及如何从JSON文件中读取数据。 #### 4.2.1 JSON简介 JSON是一种基于文本的数据表示法,它借鉴了JavaScript的语法,但实际上是一种独立于语言的数据格式。JSON可以表示简单的数据类型(如字符串、数字、布尔值)和复杂的数据结构(如数组和对象)。由于其简洁性和通用性,JSON已成为Web应用程序中进行数据交换的标准格式。 在Python中,标准库`json`提供了对JSON格式的编码和解码支持。通过`json`模块,我们可以轻松地将Python对象转换成JSON格式的字符串,也可以将JSON格式的字符串转换成Python对象。 #### 4.2.2 Python中的JSON处理 ##### 4.2.2.1 编码为JSON Python的`json`模块提供了`dumps()`函数,用于将Python对象编码成JSON格式的字符串。这个函数非常灵活,允许我们通过参数控制编码过程,比如设置缩进以美化输出。 ```python import json data = { 'name': 'John Doe', 'age': 30, 'is_student': False, 'courses': ['Math', 'Science', 'Literature'], 'address': { 'street': '123 Elm St', 'city': 'Somewhere' } } json_str = json.dumps(data, indent=4) print(json_str) ``` 上述代码将`data`字典转换成了格式化的JSON字符串,并打印出来。`indent=4`参数用于设置缩进,使输出更加易读。 ##### 4.2.2.2 解码JSON 与`dumps()`函数相对应,`json`模块还提供了`loads()`函数,用于将JSON格式的字符串解码成Python对象。 ```python json_str = '{"name": "John Doe", "age": 30, "is_student": false, "courses": ["Math", "Science", "Literature"], "address": {"street": "123 Elm St", "city": "Somewhere"}}' data = json.loads(json_str) print(data) print(type(data)) # 输出:<class 'dict'> ``` 这段代码展示了如何将JSON字符串解码回Python字典。 #### 4.2.3 存储JSON文件 在实际应用中,我们通常会将编码后的JSON字符串写入文件,以便长期保存和后续处理。Python的内置文件操作功能可以与`json`模块结合使用,实现这一目的。 ```python with open('data.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4) ``` 注意这里使用的是`json.dump()`函数,而不是`dumps()`。`dump()`函数直接将Python对象编码成JSON并写入文件,无需先转换为字符串。`ensure_ascii=False`参数允许在输出中包含非ASCII字符(如中文),而`indent=4`则用于美化输出。 #### 4.2.4 读取JSON文件 与写入JSON文件相对应,我们也可以从文件中读取JSON数据。这通常通过`json.load()`函数实现。 ```python with open('data.json', 'r', encoding='utf-8') as f: loaded_data = json.load(f) print(loaded_data) print(type(loaded_data)) # 输出:<class 'dict'> ``` 这段代码展示了如何打开并读取JSON文件,将文件中的JSON数据解码回Python对象(本例中为字典)。 #### 4.2.5 实际应用案例 假设我们正在开发一个网络爬虫,用于抓取某个网站上的商品信息。爬取到的数据可能包含商品的名称、价格、描述、图片URL等字段。我们可以将这些数据存储为JSON文件,以便后续进行数据分析或展示。 ```python # 假设这是从网页上爬取到的商品信息列表 products = [ {'name': '笔记本电脑', 'price': 5999, 'description': '高性能轻薄本...', 'image_url': 'http://example.com/img1.jpg'}, {'name': '智能手机', 'price': 2999, 'description': '全面屏智能手机...', 'image_url': 'http://example.com/img2.jpg'}, # ... 更多商品信息 ] # 将商品信息列表存储到JSON文件中 with open('products.json', 'w', encoding='utf-8') as f: json.dump(products, f, ensure_ascii=False, indent=4) # 后续可以从文件中读取商品信息 with open('products.json', 'r', encoding='utf-8') as f: products_loaded = json.load(f) for product in products_loaded: print(product) ``` 这个例子展示了如何在Python中使用`json`模块处理JSON文件,包括如何存储和读取包含多个对象的JSON数组。 #### 4.2.6 注意事项 - **安全性**:当从不可信的源读取JSON数据时,应小心处理,以避免潜在的安全问题,如注入攻击。 - **编码问题**:在处理包含非ASCII字符(如中文)的数据时,确保在打开文件时指定正确的编码(如`utf-8`)。 - **性能考虑**:对于非常大的数据集,频繁地读写JSON文件可能会影响性能。在这种情况下,可能需要考虑使用数据库或其他更高效的数据存储解决方案。 通过本章的学习,你应该能够掌握在Python中使用`json`模块处理JSON文件的基本技能,包括编码、解码、存储和读取JSON数据。这些技能对于网络爬虫开发中的数据存储和交换至关重要。
上一篇:
4.1 TXT 文本文件存储
下一篇:
4.3 CSV 文件存储
该分类下的相关小册推荐:
Python机器学习基础教程(下)
Python与办公-玩转Excel
Python爬虫入门与实战开发(上)
Python高性能编程与实战
剑指Python(万变不离其宗)
Python高并发编程与实战
Python与办公-玩转PDF
Python爬虫入门与实战开发(下)
实战Python网络爬虫
Python合辑4-130个字符串操作示例
Python编程轻松进阶(五)
Python合辑3-字符串用法深度总结