mirror of
https://github.com/NanmiCoder/MediaCrawler.git
synced 2026-05-09 03:57:43 +08:00
feat: 新增 JSONL 存储格式支持,默认存储格式改为 jsonl
JSONL(JSON Lines)每行一个 JSON 对象,采用 append 模式写入, 无需读取已有数据,大数据量下性能远优于 JSON 格式。 - 新增 AsyncFileWriter.write_to_jsonl() 核心方法 - 7 个平台新增 JsonlStoreImplement 类并注册到工厂 - 配置默认值从 json 改为 jsonl,CLI/API 枚举同步更新 - db_session.py 守卫条件加入 jsonl,避免误触 ValueError - 词云生成支持读取 JSONL 文件,优先 jsonl 回退 json - 原有 json 选项完全保留,向后兼容 - 更新相关文档和测试
This commit is contained in:
@@ -9,6 +9,7 @@ MediaCrawler 支持多种数据存储方式,您可以根据需求选择最适
|
||||
|
||||
- **CSV 文件**:支持保存到 CSV 中(`data/` 目录下)
|
||||
- **JSON 文件**:支持保存到 JSON 中(`data/` 目录下)
|
||||
- **JSONL 文件**:支持保存到 JSONL 中(`data/` 目录下)— 默认格式,每行一个 JSON 对象,追加写入性能好
|
||||
- **Excel 文件**:支持保存到格式化的 Excel 文件(`data/` 目录下)✨ 新功能
|
||||
- 多工作表支持(内容、评论、创作者)
|
||||
- 专业格式化(标题样式、自动列宽、边框)
|
||||
@@ -57,6 +58,9 @@ uv run main.py --platform xhs --lt qrcode --type search --save_data_option csv
|
||||
|
||||
# 使用 JSON 存储数据
|
||||
uv run main.py --platform xhs --lt qrcode --type search --save_data_option json
|
||||
|
||||
# 使用 JSONL 存储数据(默认格式,无需指定)
|
||||
uv run main.py --platform xhs --lt qrcode --type search --save_data_option jsonl
|
||||
```
|
||||
|
||||
#### 详细文档
|
||||
|
||||
@@ -34,7 +34,7 @@ pip install openpyxl
|
||||
1. **Configure Excel export** in `config/base_config.py`:
|
||||
|
||||
```python
|
||||
SAVE_DATA_OPTION = "excel" # Change from json/csv/db to excel
|
||||
SAVE_DATA_OPTION = "excel" # Change from jsonl/json/csv/db to excel
|
||||
```
|
||||
|
||||
2. **Run the crawler**:
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# 关于词云图相关操作
|
||||
|
||||
## 1.如何正确调用词云图
|
||||
> ps:目前只有保存格式为json文件时,才会生成词云图。其他存储方式添加词云图将在近期添加。
|
||||
> ps:保存格式为json或jsonl文件时,才会生成词云图。其他存储方式添加词云图将在近期添加。
|
||||
|
||||
需要修改的配置项(./config/base_config.py):
|
||||
|
||||
```python
|
||||
# 数据保存类型选项配置,支持三种类型:csv、db、json
|
||||
#此处需要为json格式保存,原因如上
|
||||
SAVE_DATA_OPTION = "json" # csv or db or json
|
||||
# 数据保存类型选项配置,支持多种类型:csv、db、json、jsonl等
|
||||
#此处需要为json或jsonl格式保存,原因如上
|
||||
SAVE_DATA_OPTION = "jsonl" # csv or db or json or jsonl
|
||||
```
|
||||
|
||||
```python
|
||||
@@ -54,4 +54,4 @@ FONT_PATH= "./docs/STZHONGS.TTF"
|
||||
|
||||

|
||||
|
||||
如图,在data文件下的`words文件夹`下,其中json为词频统计文件,png为词云图。原本的评论内容在`json文件夹`下。
|
||||
如图,在data文件下的`words文件夹`下,其中json为词频统计文件,png为词云图。原本的评论内容在`jsonl文件夹`(或`json文件夹`)下。
|
||||
@@ -22,7 +22,7 @@ MediaCrawler 是一个多平台自媒体爬虫框架,采用 Python 异步编
|
||||
|
||||
- **多平台支持**:统一的爬虫接口,支持 7 大主流平台
|
||||
- **多种登录方式**:二维码、手机号、Cookie 三种登录方式
|
||||
- **多种存储方式**:CSV、JSON、SQLite、MySQL、MongoDB、Excel
|
||||
- **多种存储方式**:CSV、JSON、JSONL、SQLite、MySQL、MongoDB、Excel
|
||||
- **反爬虫对策**:CDP 模式、代理 IP 池、请求签名
|
||||
- **异步高并发**:基于 asyncio 的异步架构,高效并发爬取
|
||||
- **词云生成**:自动生成评论词云图
|
||||
@@ -441,6 +441,7 @@ class DouyinStoreFactory:
|
||||
|---------|--------|-----|---------|
|
||||
| CSV | `csv` | 简单、通用 | 小规模数据、快速查看 |
|
||||
| JSON | `json` | 结构完整、易解析 | API对接、数据交换 |
|
||||
| JSONL | `jsonl` | 追加写入、性能好 | 大规模数据、增量爬取(默认) |
|
||||
| SQLite | `sqlite` | 轻量、无需服务 | 本地开发、小型项目 |
|
||||
| MySQL | `db` | 性能好、支持并发 | 生产环境、大规模数据 |
|
||||
| MongoDB | `mongodb` | 灵活、易扩展 | 非结构化数据、快速迭代 |
|
||||
@@ -693,7 +694,7 @@ IP_PROXY_PROVIDER = "kuaidaili"
|
||||
IP_PROXY_POOL_COUNT = 2
|
||||
|
||||
# 存储配置
|
||||
SAVE_DATA_OPTION = "json" # csv, db, json, sqlite, mongodb, excel
|
||||
SAVE_DATA_OPTION = "jsonl" # csv, db, json, jsonl, sqlite, mongodb, excel, postgres
|
||||
```
|
||||
|
||||
### 8.2 数据库配置
|
||||
|
||||
Reference in New Issue
Block a user