本文仅供学习交流使用,如侵立删!demo下载见文末

车主之家全系车型(包含历史停售车型)配置参数爬虫

先上效果图

环境:

win10 ,Contos7.4

python3.9.4

pycharm2021

retrying=1.3.3

requests=2.22.0

fake_useragent

抓包分析

车主之家安卓APP选择车型后打开配置页面闪退,放弃APP抓包:

踏个坑,车主之家APP车型参数配置页面打开就闪退,刚开始还以为是机型不适配的问题,后来陆续的换了好几台手机都是闪退,那应该就是一个bug。这儿浪费了很长时间!!!

web页面抓包:

web页面也没有明显的数据接口,初步分析数据应该是通过js动态加载(同汽车之家详细可参考:汽车之家车型参数爬虫

果然和汽车之家是一个套路,而且还没有字体加密~~~哈哈哈,那就简单多了

获取所有品牌数据

接口地址:
# 全系品牌信息
https://****.****.com/?&extra=getBrandStyle
# 根据品牌ID 获取所有车型信息
model_url = f'http://****.com/app.php?&type=allStyle&brandId'
    def get_brand(self, brand_url, model_url):
"""
第一步 获取所有的车型id
"""
# 全系品牌信息
brand_res = self._parse_url(url=brand_url)
# 提取所有品牌数据
brandIds = jsonpath(brand_res.json(), '$..list') if jsonpath(brand_res.json(), '$..list') else []
for brandId in brandIds:
for brand in brandId:
print(f'品牌:{brand["title"]} 数据获取中')
alpha = brand['alpha'] # 首字母
title = brand['title'] # 品牌
brand_id = brand['brandId'] # 品牌id
origin = brand['origin'] # 产地
# 根据品牌ID 获取所有车型信息
model_res = self._parse_url(url=model_url)
# 提取所有车型信息
styles = jsonpath(model_res.json(), '$..style')[0] if jsonpath(model_res.json(), '$..style') else []
for style in styles:
model_id = style.get('id') # 车型id
model_name = style.get('name') # 车型名称
img = style.get('img') # 车型图片
yield alpha, title, brand_id, origin, model_name, model_id, img


获取车型参数配置json

接口地址:https://www.****.com/{model_id}/options/
    def parameter_configuration_html(self, model_id, file_name):
"""
第二步:获取车型参数配置网页源码
"""
# 请求车型参数页面
response = self._parse_url(url)
text = str(response.content, encoding="utf-8")
configuration = '车型参数json'
if not os.path.exists(configuration):
os.makedirs(configuration) # 提取出车型的参数数据json保存到文件
json_data = ""
json_config = re.search('var json_config = (.*?)};', text)
if json_config:
# print(config.group(0))
json_data = json_data + json_config.group(0)
json_car = re.search('var json_car = (.*?)}];', text)
if json_car:
# print(option.group(0))
json_data = json_data + json_car.group(0) with open(f'{configuration}/{file_name}', 'w', encoding='utf-8') as f:
f.write(json_data)


数据存储

    def save_xls(self):
"""
第四步 保存数据
"""
# 写入表头 startRow行数 cols列数 co标题
# 计算起止行号
endRowNum = startRow + len(carItem['车型ID']) # 车辆款式记录数
for row in range(startRow, endRowNum):
for col in carItem:
try:
context = str(carItem[col][row - startRow])
colNum = Header[col] # 根据项目名称查询列数
except:
continue
if not context:
context = '-'
# 写入数据 row行 colNum列 context内容
worksheet.write_string(row, colNum, context)
print(f'第:{count}条数据插入成功')
count += 1
else:
startRow = endRowNum
workbook.close()

入口

    @run_time
def run(self):
# 第一步 获取所有的车型id
for alpha, title, brand_id, origin, model_name, model_id, img in self.get_brand():
# 首字母、品牌、品牌id、产地、车型id、车型名称、车型图片
print(alpha, title, brand_id, origin, model_name, model_id, img)
exit()
# 判断是否获取过
if self.keep_records(model_id=model_id, vali=True):
print(f'数据获取过,跳过。')
continue
file_name = f'{alpha}-{title}-{brand_id}-{model_name}-{model_id}'
file_name = file_name.replace('/', ' ')
# 第二步 获取车型参数配置网页源码
self.parameter_configuration_html(model_id=model_id, file_name=file_name)
# 第三步 保存获取记录
self.keep_records(model_id=model_id)
# time.sleep(random.randint(1, 3))

效果


DEMO下载

https://download.csdn.net/download/qq_38154948/85001346


本文仅供学习交流使用,如侵立删!

Python 车主之家全系车型(包含历史停售车型)配置参数爬虫的更多相关文章

  1. Python 汽车之家 全系车型参数(包含历史停售车型) 最全

    本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末 汽车之家2021 全系车型参数(包含历史停售车型) 2021.10.21更新 增加参数:电动扰流板.无框设计车门.隐藏电动门把手.自动驾驶 ...

  2. Python 爬取途虎养车 全系车型 轮胎 保养 数据

    Python 爬取途虎养车 全系车型 轮胎 保养 数据 2021.7.27 更新 增加标题.发布时间参数 demo文末自行下载,需要完整数据私聊我 2021.2.19 更新 增加大保养数据 2020. ...

  3. Python 懂车帝全车系销量排行榜

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! Python 懂车帝全车系销量排行榜 需 ...

  4. python的库小全

    环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...

  5. python学习笔记比较全

    注:本笔记基于python2.6而编辑,尽量的偏向3.x的语法 Python的特色 1.简单 2.易学 3.免费.开源 4.高层语言: 封装内存管理等 5.可移植性: 程序如果避免使用依赖于系统的特性 ...

  6. iNeuOS云操作系统,.NET Core全系打造

    iNeuOS云操作系统,.NET Core全系打造 目录 一.演示地址... 2 二.技术体系... 2 三.iNeuOS整体介绍... 2 四.iNeuView概述... 3 五.iNeuView操 ...

  7. Python.Django视频教程(全13集)

    Python.Django视频教程(全13集)教程目录: 下载地址:http://www.fu83.cn/thread-205-1-1.html

  8. Python tab 命令补全,以及 vim 补全

    在python 命令行中,使用补全 python 查看 packages 的目录 可用 sys.path 查看. /usr/lib/python2.7/site-packages vim tab.py ...

  9. python中TAB补全

    tab补全的代码文件tab.py #!/usr/bin/env python # python startup file import sys import readline import rlcom ...

随机推荐

  1. python使用vosk进行中文语音识别

    操作系统:Windows10 Python版本:3.9.2 vosk是一个离线开源语音识别工具,它可以识别16种语言,包括中文. 这里记录下使用vosk进行中文识别的过程,以便后续查阅. vosk地址 ...

  2. .NET程序设计实验2

    1.设计编写一个控制台应用程序,练习类的继承. (1) 编写一个抽象类 People,具有"姓名","年龄"字段,"姓名"属性,Work 方 ...

  3. 将汇总结果导出到MySQL

    ①mysql建表test1 ②cd /opt/module/sqoop进入scoop路径 ③ bin/sqoop export \ > --connect jdbc:mysql://master ...

  4. 02-C高级编程

    Day01 笔记 1 typedef使用 1.1 起别名 - 简化struct关键字 1.2 区分数据类型 1.3 提高代码移植性 2 void使用 2.1 不可以利用void创建变量 无法给无类型变 ...

  5. CF Divan and Kostomuksha

    题意:NKOJ CF 思路:首先发现贪心不了.因此dp.然后这题需要维护的就\(g_i\)和\(sum{g_i}\) 状态:\(dp[i]\): 当前最后一个为\(g_i\)的最大值 \(dp[i]= ...

  6. SpringBoot Restful 接口实现

    目录 SpringBoot 核心注解 SpringBoot Restful 接口实现 封装响应数据 SpringBoot 核心注解 SpringBoot 基础入门 注解 说明 Component 声明 ...

  7. Improved Security for a Ring-Based Fully Homomorphic Encryption Scheme-2013:解读

    本文记录阅读此论文的笔记 摘要 (1)1996年,HPS三人提出一个格上的高效加密方案,叫做NTRUEncrypt,但是没有安全性证明:之后2011年,SS等人修改此方案,将其安全规约到标准格上的困难 ...

  8. 手写一个仿微信登录的nodejs程序

    前言 首先,我们看一下微信开放文档中的一张图: 上面的一幅图中清楚地介绍了微信登录整个过程,下面对图上所示进行总结: 一.二维码的获得 用户打开登录网页后,登录网页后台根据微信OAuth2.0协议向微 ...

  9. 从0到1搭建一款Vue可配置视频播放器组件(Npm已发布)

    前言 话不多说,这篇文章主要讲述如何从0到1搭建一款适用于Vue.js的自定义配置视频播放器.我们平时在PC端网站上观看视频时,会看到有很多丰富样式的视频播放器,而我们自己写的video标签样式却是那 ...

  10. Python自动化办公:将文本文档内容批量分类导入Excel表格

    序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 它来了,它又来了. 本文实现用Python将文本文件自动保存到Excel表格里面去. 需求 将锦江区.t ...