首页
社区
课程
招聘
Python 懂车帝口碑分爬虫
发表于: 2022-4-3 14:42 14685

Python 懂车帝口碑分爬虫

2022-4-3 14:42
14685

<table><tr><td bgcolor=orange>本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!</td></tr></table>

懂车帝全系车型懂车分(口碑)页面中的详细车系评分数据

请添加图片描述

先来web端试下能否找到需要的数据接口,随便找个车型打开口碑页面F12查看Network
请添加图片描述
根据页面关键字先搜索一波
请添加图片描述
只在页面的标签中找到了数据,没有发现有明显的数据接口,其实用charles抓包的时候发现一个疑似的js好像数据是通过这个js加载出来的,打开看了一下数据相当混乱,暂且先放一边,先从APP分析一波看能否直接拿到数据接口

PS:手机环境、抓包环境的配置在这不在赘述,有兴趣的可参考之前的文章 APP抓包环境配置

下载懂车帝APP,并安装至手机
请添加图片描述
手机开启Postern,pc打开charles

至此抓包工作准备完成,打开懂车帝APP,随便找个车型进入懂车分页面
请添加图片描述
拿到加载的数据包,和web一样先搜索一波,看能否直接找到需要的数据
请添加图片描述
直接匹配到了多个结果,看接口是同一个接口返回的数据,双击点进去看一下详细数据
请添加图片描述请添加图片描述
看数据结构和具体的数值和页面中的数据很像,Charles界面太小,将数据拷贝至网页中解析,方便分析,分享一个常用的json数据在线解析网站
请添加图片描述
经过仔细分析,APP中展示的数据小数点第二位是四舍五入的,从下图的web页面中可以看出,数据是一样的,成功拿到数据接口!
请添加图片描述
口碑分数据接口:

对!你没看错,就是这么长,验证一下数据接口,在网页中直接请求一下这个url
请添加图片描述
这儿推荐安装一个网页json可视化的插件,这儿偷懒没装,在线解析了一下json数据,和Charles抓到的数据是一样,经过分析得知: series_id是车系id,修改此参数即可

获取车系id就很简单了,先拿到品牌id然后根据品牌id请求车系信息,注意这是一个post接口

请添加图片描述

实际的运行过程中,发现一个问题,不同的城市同价位平均分是不一样的,所以需要指定城市获取

请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述

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

<table><tr><td bgcolor=orange>本文仅供学习交流使用,如侵立删!</td></tr></table>

 
 
 
 
https://*******/get_detail/?series_id=4182&car_id=0&only_owner=0&year_id=all&iid=2467735824764398&device_id=40011211486215&ac=wifi&channel=dcd-yd-11zh-and-74&aid=36&app_name=automobile&version_code=693&version_name=6.9.3&device_platform=android&os=android&ab_client=a1%2Cc2%2Ce1%2Cf2%2Cg2%2Cf7&ab_group=3167590%2C3577236%2C3333988&ssmix=a&device_type=Nexus+5X&device_brand=google&language=zh&os_api=27&os_version=8.1.0&manifest_version_code=693&resolution=1080*1794&dpi=420&update_version_code=6931&_rticket=1648907286543&cdid=f3163204-7faf-45d7-89c4-e82215c3216c&city_name=%E8%81%8A%E5%9F%8E&gps_city_name=%E8%81%8A%E5%9F%8E&selected_city_name&rom_version=27&longi_lati_type=1&longi_lati_time=1648907102913&content_sort_mode=0&total_memory=1.77&cpu_name=Qualcomm+Technologies%2C+Inc+MSM8992&overall_score=4.873&cpu_score=4.8872&host_abi=
https://*******/get_detail/?series_id=4182&car_id=0&only_owner=0&year_id=all&iid=2467735824764398&device_id=40011211486215&ac=wifi&channel=dcd-yd-11zh-and-74&aid=36&app_name=automobile&version_code=693&version_name=6.9.3&device_platform=android&os=android&ab_client=a1%2Cc2%2Ce1%2Cf2%2Cg2%2Cf7&ab_group=3167590%2C3577236%2C3333988&ssmix=a&device_type=Nexus+5X&device_brand=google&language=zh&os_api=27&os_version=8.1.0&manifest_version_code=693&resolution=1080*1794&dpi=420&update_version_code=6931&_rticket=1648907286543&cdid=f3163204-7faf-45d7-89c4-e82215c3216c&city_name=%E8%81%8A%E5%9F%8E&gps_city_name=%E8%81%8A%E5%9F%8E&selected_city_name&rom_version=27&longi_lati_type=1&longi_lati_time=1648907102913&content_sort_mode=0&total_memory=1.77&cpu_name=Qualcomm+Technologies%2C+Inc+MSM8992&overall_score=4.873&cpu_score=4.8872&host_abi=
def get_series(self, brand_id):
    """
    获取品牌所有车系
    brand_id:品牌id
    """
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}
    param = {
    'offset': 0,
    'limit': 1000,
    'is_refresh': 1,
    'city_name': '北京',
    'brand': brand_id
    }
    response = requests.post(url=url, data=param, headers=headers)
    rep_json = json.loads(response.text)
    # print(response.text)
    if rep_json['status'] == 'success':
    return rep_json['data']['series']
    else:
    raise Exception("get car series has exception!")
def get_series(self, brand_id):
    """
    获取品牌所有车系
    brand_id:品牌id
    """
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}
    param = {
    'offset': 0,
    'limit': 1000,
    'is_refresh': 1,
    'city_name': '北京',
    'brand': brand_id
    }
    response = requests.post(url=url, data=param, headers=headers)
    rep_json = json.loads(response.text)
    # print(response.text)
    if rep_json['status'] == 'success':

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2022-4-6 23:37 被拉灯的小手编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//