Python 懂車帝全車系銷量排行榜


本文所有教程及源碼、軟件僅為技術研究。不涉及計算機信息系統功能的刪除、修改、增加、干擾,更不會影響計算機信息系統的正常運行。不得將代碼用於非法用途,如侵立刪!

Python 懂車帝全車系銷量排行榜

需求

車系ID   城市 時間段    車系名稱   銷量                                                                
4363   深圳 2022年2月    Model Y    1,224                                                                 
分城市榜單,所有城市熱銷榜,拉到底部獲取全部車系數據    

image.png

操作環境

  • win10
  • Google nexus5x(root)
  • Python3.9
  • Charles

需求分析

既然需要所有城市的熱銷榜,那么第一步需要先拿到全國城市列表
先來web端試下能否找到需要的數據接口,打開頁面F12查看Network
在這里插入圖片描述
根據頁面關鍵詞搜索沒有找到明顯的數據接口,雖然說現在也可以使用request或者selenium直接在頁面解析數據,但是畢竟這不是首選方案,還是從APP分析一下在決定用什么方案。
PS:手機環境、抓包環境的配置在這不在贅述,有興趣的可參考之前的文章 APP抓包環境配置

下載懂車帝APP,並安裝至手機
請添加圖片描述
手機開啟Postern,pc打開charles

至此抓包工作准備完成,打開懂車帝APP,進入選擇城市頁面

image.png
還是老套路先根據頁面關鍵詞搜索一波

image.png
竟然沒有需要的數據!不着急,多試幾次,確定Charles抓到了所有的數據包,然后逐條分析一下,找到下圖這個接口,看路徑名猜測應該就是需要的數據接口,原來數據中中文經過了編碼,難怪搜索不到,在線json解析看一下
分享一個常用的json數據在線解析網站

image.png
正是所需數據
全國城市列表接口:

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

image.png
這兒推薦安裝一個網頁json可視化的插件,這兒偷懶沒裝,在線解析了一下json數據,和Charles抓到的數據是一樣

城市熱銷榜數據接口就比較簡單了,使用上面的方法很容易就能抓到數據接口,修改city_name參數和offset翻頁即可

https:/******?city_name=%E8%A5%BF%E5%AE%89&count=10&offset=10&month=&new_energy_type=&
rank_data_type=64&brand_id=&price=&manufacturer=&outter_detail_type=&nation=0

獲取全國城市列表

直接請求接口獲取即可,這邊使用了一個jsonpath模塊用來提取json數據,很好用強烈推薦!

def get_month(self):
    """
    獲取城市列表
    """
    response = self._parse_url(url).json()
    # 提取json數據中所有的城市名
    models = jsonpath(response, '$..city_name')
    return models

image.png

獲取指定城市熱銷榜

def get_score(self, city_name):
    """
    獲取指定城市熱銷榜
    city_name: 城市名
    """
    offset = 0
    while True:
        response = self._parse_url(url).json()
        tag_list = response.get('data').get('list')
        # 沒有數據跳出
        if not tag_list:
            return
        for tag in tag_list:
            series_id = tag.get('series_id')  # 車系ID
            series_name = tag.get('series_name')  # 車系名稱
            count = tag.get('count')  # 車系銷量
            yield series_id, series_name, count
        # 翻頁參數
        offset += 100

運行效果

image.png

資源下載

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


本文僅供學習交流使用,如侵立刪!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM