爬取空气质量数据

type
status
date
slug
summary
tags
category
icon
password
网址
作者
标签
文章链接
发布时间
来源
中国空气质量在线监测分析平台目前收录了367个城市的PM2.5及天气信息数据, 所有数据每隔一小时自动更新一次。 平台提供自2013年12月起的历史数据查询分析,主要包括实时监控、监测曲线、时段统计、城市分析、 城市分布、省份分布、全球分布、卫星云图、城市比较、统计排名、历年分析、关联挖掘等功能。

🧠 整体目标:

构造异步爬虫工具,自动抓取全国城市从 2013-12 至今的空气质量数据,包括 AQIPM2.5PM10S02N02O3CO,并保存为 CSV 文件(一个城市一个文件),核心功能包括:
  1. 多级加密通信:破解目标网站AES+DES混合加密
  1. 异步高性能采集:支持20个城市并发请求
  1. 断点续爬:自动跳过已采集城市
  1. 数据持久化:按城市存储为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项污染物浓度

🛠 使用指南

  1. 准备城市列表
    1. 创建城市列表.txt,每行一个城市名(如"北京")
  1. 运行爬虫
    1. 结果查看
      1. 数据保存在2013-12至今_全国各城市的空气质量指标/目录

    👉
    完整代码和数据资源请点击此处获取!
     
    Prev
    如何在 Pandas DataFrame 中创建一个空列
    Next
    用split函数切割字符串
    Loading...
    Article List
    Practice makes perfect
    文献集锦
    如何理论创新?
    管理学理论集锦
    Python实际应用
    聚类标准误与固定效应
    巫师3:狂猎
    Stata应用技巧
    Python知识与技巧
    双重差分法(DID)
    创新文献阅读与摘要
    计量经济学
    Python绘图相关