Python了解Chedi所有汽车系列的销售排名。需要汽车系列ID。城市时间段车系名称销量4363辆。深圳2022年2月ModelY1224辆副城市榜单。环境win10Googlenexus5x(root)Python3.9Charles需求分析由于我们需要所有城市的畅销榜单,所以第一步是获取全国城市榜单,先去网上看看能不能找到自己需要的数据接口,打开页面F12查看网络根据页面关键词搜索,没有发现明显的数据接口。虽然可以直接在页面上使用request或者selenium来分析数据,但是毕竟这不是首选的方案。最好先从APP上分析一下,再决定使用哪种方案。PS:手机环境和抓包环境的配置这里不再赘述。有兴趣的可以参考上一篇APP抓包环境配置下载点车滴APP,安装在手机端打开Postern,PC端打开Charles准备抓包。完了,打开点车滴APP,进入城市选择页面还是老套路,先根据页面搜索一波关键词,但是没有需要的数据!别着急,多试几次,确保Charles抓到了所有的数据包,再一个个分析,找到下图的接口,从路径名猜猜,应该是需要的数据接口。原来数据里的中文都被编码过了,怪不得搜不到。这里先看看在线json分析,分享一个常用的json数据在线分析网站。全国城市列表界面正是需要的数据:https://*********?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=1649079408626&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=1649079423941&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=armeabi-v7a是的!你没看错,就是这么长,验证数据接口,直接在网页上请求这个url。这里推荐安装一个网页json可视化插件。我比较懒,这里没有安装。我分析了网上的json数据和Charles抓取的数据。和全城畅销榜的数据接口一样,比较简单。使用以上方法,可以轻松抓取数据接口,修改city_name参数和offset翻页https://******?city_name=%E8%A5%BF%E5%AE%89&count=10&offset=10&月=&new_energy_type=&rank_data_type=64&brand_id=&price=&manufacturer=&outter_detail_type=&nation=0获取全国城市列表,直接请求接口即可获取。这里使用了一个jsonpath模块来提取json数据。非常好用,强烈推荐!defget_month(self):"""获取城市列表"""response=self._parse_url(url).json()#提取json数据中的所有城市名称models=jsonpath(response,'$..city_name')returnmodels获取指定城市的热销榜defget_score(self,city_name):"""获取指定城市的热销榜city_name:城市名"""offset=0whileTrue:response=self._parse_url(url).json()tag_list=response.get('data').get('list')#没有数据跳出tag_list:returnfortagintag_list:series_id=tag.get('series_id')#CarIDseries_name=tag.get('series_name')#车系名称count=tag.get('count')#车系销量yieldseries_id,series_name,count#翻页参数offset+=100运行效果资源下载https://download.csdn.net/download/qq_38154948/85077866本文仅供参考用于学习交流,如侵删!------
