<table><tr><td bgcolor=orange>本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!</td></tr></table>
Python 懂车帝综合口碑数据
需求
懂车帝全系车型综合口碑 优点 缺点 统计数据
操作环境
- win10
- Google nexus5x(root)
- Python3.9
- Charles
需求分析
先来web端试下能否找到需要的数据接口,随便找个车型打开口碑页面F12查看Network根据页面关键词搜索没有找到明显的数据接口,虽然说现在也可以使用request或者selenium直接在页面解析数据,但是毕竟这不是首选方案,还是从APP分析一下在决定用什么方案。PS:手机环境、抓包环境的配置在这不在赘述,有兴趣的可参考之前的文章 APP抓包环境配置
下载懂车帝APP,并安装至手机手机开启Postern,pc打开charles
至此抓包工作准备完成,打开懂车帝APP,随便找个车型进入懂车分页面还是老套路先根据页面关键词搜索一波
明显看出来后两条数据不是需要的,前四条是同一个接口返回的,应该就是需要的数据,双击点进去看一下详细数据
初步查看和页面数据是一致的,看数据结构和具体的数值和页面中的数据很像,Charles界面太小,将数据拷贝至网页中解析,方便分析,分享一个常用的json数据在线解析网站
经过仔细对比页面中的数据,发现此接口就是我们需要的综合口碑接口:
对!你没看错,就是这么长,验证一下数据接口,在网页中直接请求一下这个url这儿推荐安装一个网页json可视化的插件,这儿偷懒没装,在线解析了一下json数据,和Charles抓到的数据是一样,经过分析得知: series_id是车系id,修改此参数即可
获取全部车系id
获取车系id就很简单了,先拿到品牌id然后根据品牌id请求车系信息,注意这是一个post接口
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_score(self, series_id): """ 获取车系综合评分 series_id: 车系id """ response = self._parse_url(url).json() tag_list = response.get('data').get('tab_info').get('tag_list') data = list() # 优点 merits = [i.get('tag_name')+"("+str(i.get('count'))+")" for i in tag_list if i.get('sentiment') == 1] data.append(merits) # 缺点 defects = [i.get('tag_name')+"("+str(i.get('count'))+")" for i in tag_list if i.get('sentiment') == -1] data.append(defects) return data运行效果
资源下载
https://download.csdn.net/download/qq_38154948/85073968
<table><tr><td bgcolor=orange>本文仅供学习交流使用,如侵立删!</td></tr></table>
【本文转自:韩国服务器 http://www.558idc.com/kt.html提供,感谢支持】