尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

懂车帝新能源汽车销量数据API实战:从请求到解析的完整爬虫指南

懂车帝新能源汽车销量数据API实战:从请求到解析的完整爬虫指南
📅 发布时间:2026/7/15 3:28:03

1. 懂车帝API接口初探

第一次接触懂车帝的新能源汽车销量API时,我像发现宝藏一样兴奋。这个接口设计得非常友好,不需要复杂的鉴权流程,直接用GET请求就能获取结构化数据。接口地址是https://www.dongchedi.com/motor/pc/car/rank_data,参数设计也很直观:

  • new_energy_type:1代表纯电动,2代表插电混动
  • month:1000表示近一年,500表示近半年,202108表示2021年8月
  • count:返回数据条数
  • city:城市名称(如"成都")
  • rank_data_type:固定传11表示销量榜

实测发现,即使官方更新了网页端,这个接口依然可用。比如想获取成都地区近一年纯电动车销量前100名,请求URL是这样的:

url = "https://www.dongchedi.com/motor/pc/car/rank_data?new_energy_type=1&month=1000&count=100&city=成都&rank_data_type=11"

2. 构建Python请求环境

2.1 安装必要库

建议使用conda或virtualenv创建独立环境:

pip install requests pandas

2.2 基础请求代码

我封装了一个带异常处理的请求函数,这是踩过几次坑后的经验总结:

import requests from requests.exceptions import RequestException def fetch_data(url, retry=3): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } for i in range(retry): try: resp = requests.get(url, headers=headers, timeout=10) resp.raise_for_status() # 自动处理HTTP错误 return resp.json() except RequestException as e: print(f"第{i+1}次请求失败: {str(e)}") if i == retry - 1: raise

3. 解析JSON响应数据

3.1 数据结构分析

返回的JSON包含三个关键部分:

{ "data": { "list": [ # 核心数据数组 { "series_id": 4499, "series_name": "五菱宏光MINIEV", "rank": 1, "count": 380278 # 销量数字 } ], "sells_rank_month": [ # 可选时间范围 {"text": "2021年11月", "month": 202111} ] } }

3.2 数据清洗技巧

我习惯用pandas做二次处理:

import pandas as pd def parse_data(json_data): df = pd.DataFrame(json_data['data']['list']) # 处理价格字段 df['price_range'] = df.apply(lambda x: f"{x['min_price']}-{x['max_price']}万", axis=1) # 转换时间戳 df['update_time'] = pd.to_datetime(df['update_time'], unit='ms') return df[['rank', 'series_name', 'count', 'price_range']]

4. 构建完整爬虫脚本

4.1 参数化请求

通过函数封装实现灵活查询:

def get_car_rank(energy_type=1, time_range=1000, limit=50, city="全国"): params = { 'new_energy_type': energy_type, 'month': time_range, 'count': limit, 'city': city, 'rank_data_type': 11 } base_url = "https://www.dongchedi.com/motor/pc/car/rank_data" return fetch_data(f"{base_url}?{'&'.join(f'{k}={v}' for k,v in params.items())}")

4.2 数据持久化

建议同时保存原始JSON和清洗后的CSV:

import json from datetime import datetime def save_data(data, prefix='car_rank'): timestamp = datetime.now().strftime("%Y%m%d_%H%M") # 保存原始数据 with open(f"{prefix}_{timestamp}.json", 'w') as f: json.dump(data, f, ensure_ascii=False) # 保存清洗数据 parse_data(data).to_csv(f"{prefix}_{timestamp}.csv", index=False)

5. 实战注意事项

5.1 反爬策略应对

  • 随机User-Agent:建议使用fake_useragent库
  • 请求频率控制:添加time.sleep(random.uniform(1,3))
  • 代理IP池:当出现403错误时需要轮换IP

5.2 数据更新机制

我发现销量数据通常在每月10号左右更新,建议设置定时任务:

import schedule import time def monthly_job(): data = get_car_rank() save_data(data) schedule.every().month.at("10:00").do(monthly_job) while True: schedule.run_pending() time.sleep(3600) # 每小时检查一次

6. 数据可视化延伸

用Matplotlib生成销量TOP10柱状图:

import matplotlib.pyplot as plt def plot_top10(df): plt.figure(figsize=(12,6)) df.head(10).plot.bar(x='series_name', y='count') plt.title('新能源车销量TOP10') plt.xticks(rotation=45) plt.tight_layout() plt.savefig('top10.png')

7. 异常处理经验

这些坑我都亲自踩过:

  • 城市参数要URL编码:urllib.parse.quote("成都")
  • 销量数字可能是字符串:int(str_count.replace(',',''))
  • 部分车型没有价格数据:要用df['min_price'].fillna(0)

8. 项目结构建议

规范的目录结构能让脚本更易维护:

dongchedi-spider/ ├── config.py # API配置 ├── crawler.py # 核心爬虫 ├── utils/ # 工具函数 │ ├── storage.py │ └── visual.py └── data/ # 存储结果 ├── raw/ # 原始JSON └── processed/ # 清洗后CSV

当处理到具体车型的详细数据时,可以进一步解析series_id关联的详情页API。比如五菱宏光MINIEV的详情页URL就包含其series_id(4499),这种设计让数据采集形成了完整闭环。

相关新闻

  • GPT-4o原生多模态与端到端语音交互原理深度解析
  • LSTM文本分类数据预处理完整指南:从原始文本到模型输入
  • 工业产品表面缺陷检测技术演进:从传统视觉到深度学习

最新新闻

  • 从几何变换到数据降维:特征值与特征向量的核心应用解析
  • OpenHarmony轻量系统开发【1】从零认知:系统类型、内核与开发板选型指南
  • 【微信小程序创作之路】- 从静态配置到动态交互:窗口导航栏的进阶玩法
  • 老旧建筑地基空洞预警与应急响应:从风险识别到安全撤离实操指南
  • 古文字识别技术实践:从图像处理到深度学习应用指南
  • Grok:X平台内置的跨模态生产力操作系统

日新闻

  • 告别启动盘残留:用Diskpart彻底清除U盘EFI分区与恢复完整空间
  • 2026 年宜春诚信的塑料缠绕膜厂家哪个好,缠绕膜背后的秘密:你不知道的成本陷阱 - 领域鉴赏官
  • Arch ECS 入门指南:10分钟掌握C#高性能数据驱动架构

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号