Python 懂车帝口碑分爬虫

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: Python 懂车帝口碑分爬虫

 

## Python 懂车帝口碑分爬虫


### 需求


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


![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/d5946daefb144f82b5dfd6e520948000.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

### 操作环境


- win10

- Google nexus5x(root)

- Python3.9

- Charles


### 需求分析


先来web端试下能否找到需要的数据接口,随便找个车型打开口碑页面F12查看Network

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/9d388cf2fe074ba2982aa37ab261bc7c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

根据页面关键字先搜索一波

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/a38454d5e74141948f57f43b6c981ed0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

只在页面的标签中找到了数据,没有发现有明显的数据接口,其实用charles抓包的时候发现一个疑似的js好像数据是通过这个js加载出来的,打开看了一下数据相当混乱,暂且先放一边,先从APP分析一波看能否直接拿到数据接口


PS:手机环境、抓包环境的配置在这不在赘述,有兴趣的可参考之前的文章 [APP抓包环境配置](https://cenjy.blog.csdn.net/article/details/123635939)


下载懂车帝APP,并安装至手机

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/43d931bba35b499aa179123e79c453f8.png)

手机开启Postern,pc打开charles


至此抓包工作准备完成,打开懂车帝APP,随便找个车型进入懂车分页面

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/a622e12e31d848e28e8cb0d7a489fd82.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

拿到加载的数据包,和web一样先搜索一波,看能否直接找到需要的数据

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/7b3603baaec748a881df4846bf4170df.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_15,color_FFFFFF,t_70,g_se,x_16)

直接匹配到了多个结果,看接口是同一个接口返回的数据,双击点进去看一下详细数据

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/0b32375fe9884d37b367c9fbf7d44b8d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/43d0f75c691a4de9a5ffeee5574657c6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_13,color_FFFFFF,t_70,g_se,x_16)

看数据结构和具体的数值和页面中的数据很像,Charles界面太小,将数据拷贝至网页中解析,方便分析,分享一个常用的[json数据在线解析网站](https://www.bejson.com/jsonviewernew/?tdsourcetag=s_pcqq_aiomsg)

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/5f28db88f7b541c2a7349ce2da993320.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

经过仔细分析,APP中展示的数据小数点第二位是四舍五入的,从下图的web页面中可以看出,数据是一样的,成功拿到数据接口!

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/9988cf19b62f4c15b2a22b51c41e900a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

口碑分数据接口:


```

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=

```


对!你没看错,就是这么长,验证一下数据接口,在网页中直接请求一下这个url

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/73fa607f3184429493fec52ba008da60.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

这儿推荐安装一个网页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!")

```

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/9a6e78ead17c4e78ab18024dd4caf841.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

### 获取车系口碑分


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


![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/122f65249595493eb1aa3c1ebbda8d0e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/5f7f688932a3480caccc0af3015e107f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

```

def get_score(self, series_id, city):

   """

   获取车系口碑分

   series_id: 车系id

   """

   response = self._parse_url(url).json()

   # 当前车系评分 综合

   series_info = list()

   series_info.append(response.get('data').get('series_info').get('score'))

   # 当前车系评分 详细

   score_info = response.get('data').get('score_info')

   if not score_info:

   return ['-'] * 16

   score = series_info + [i.get('value') for i in score_info]

   # 同价位平均分 综合

   tab_info_score = list()

   if response.get('data').get('tab_info_list'):

   tab_info_score.append(response.get('data').get('tab_info_list')[0].get('info')[0].get('score'))

   tab_info_score_info = response.get('data').get('tab_info_list')[0].get('info')[0].get('score_info')

   tab_info_score_info = tab_info_score + [i.get('value') for i in tab_info_score_info]

   else:

   tab_info_score_info = ['-'] * 8

   data = score + tab_info_score_info


   return data

```


### 运行结果

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/7a2be25182f74abbb835afbd72c7ad5b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/0667ef099a5f41dc9047c8520c7f0b8e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ouJ54Gv55qE5bCP5omL,size_20,color_FFFFFF,t_70,g_se,x_16)


### 资源下载


[https://download.csdn.net/download/qq_38154948/85072078](https://download.csdn.net/download/qq_38154948/85072078)


------


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


------

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
1月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
2月前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
2月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
2月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
123 6
|
10天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
11天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
19天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
25天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
1月前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
|
2月前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href='example.com']` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。