Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
爬取空气质量数据
type
Post
status
Published
date
Apr 18, 2025
slug
summary
tags
category
Python实际应用
icon
password
作者
标签
文章链接
发布时间
来源
中国空气质量在线监测分析平台目前收录了367个城市的PM2.5及天气信息数据, 所有数据每隔一小时自动更新一次。 平台提供自2013年12月起的历史数据查询分析,主要包括实时监控、监测曲线、时段统计、城市分析、 城市分布、省份分布、全球分布、卫星云图、城市比较、统计排名、历年分析、关联挖掘等功能。
🧠 整体目标:
构造异步爬虫工具,自动抓取全国城市从 2013-12 至今的空气质量数据,包括 AQI、PM2.5、PM10、S02、N02、O3、CO,并保存为 CSV 文件(一个城市一个文件),核心功能包括:
- 多级加密通信:破解目标网站AES+DES混合加密
- 异步高性能采集:支持20个城市并发请求
- 断点续爬:自动跳过已采集城市
- 数据持久化:按城市存储为CSV文件
1. 导入模块(工具箱)
用到的所有模块都导进来:
asyncio + aiohttp:异步请求城市数据(提高速度)
Crypto:解密服务器返回的加密数据
csv:保存每个城市的空气质量为.csv文件
tqdm:在终端里显示漂亮的进度条
2. 城市文件和目录配置
📁 指定:
- 城市列表来源:
城市列表.txt
- 数据保存目录:
2013-12至今_全国各城市的空气质量指标
3. 日志系统配置
启用
logging 模块,代替 print() 输出,分类更清晰,比如:[INFO]:正常信息
[WARNING]:可重试的问题
[ERROR]:抓取失败
加密与解密
双重加密请求构造
技术要点:
- 签名机制:拼接所有字段生成MD5,防止参数篡改
- 加密流水线:
JSON → Base64 → AES加密
- 密钥分离:加密/解密使用不同密钥(见
CipherKeysMapper类)
三级解密响应数据
逆向技巧:
- 通过抓包分析得出加密顺序:
Base64 → DES → AES → Base64
- 使用
Crypto库实现标准解密流程
异步高性能架构
并发控制
优化设计:
- 信号量限流:避免瞬时高并发被封IP
- 线程安全写入:用锁保护文件操作
断点续爬机制
实用特性:
- 自动检查
DATA_DIR目录下是否已有对应城市CSV文件
- 跳过已完成城市,适合长时间任务中断后继续
📊 数据存储结构
示例输出文件(北京.csv):
字段说明:
range:AQI波动范围(min~max)
level:空气质量等级(优/良/轻度污染等)
- 包含PM2.5、SO₂等6项污染物浓度
🛠 使用指南
- 准备城市列表
创建
城市列表.txt,每行一个城市名(如"北京")- 运行爬虫
- 结果查看
数据保存在
2013-12至今_全国各城市的空气质量指标/目录完整代码和数据资源请点击此处获取!
Prev
如何在 Pandas DataFrame 中创建一个空列
Next
用split函数切割字符串
Loading...