Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
爬取空气质量数据
type
status
date
slug
summary
tags
category
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...