最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Python 懂車(chē)帝口碑分爬蟲(chóng)

2022-04-03 14:41 作者:拉燈的小手  | 我要投稿

??本文所有教程及源碼、軟件僅為技術(shù)研究。不涉及計(jì)算機(jī)信息系統(tǒng)功能的刪除、修改、增加、干擾,更不會(huì)影響計(jì)算機(jī)信息系統(tǒng)的正常運(yùn)行。不得將代碼用于非法用途,如侵立刪!

Python 懂車(chē)帝口碑分爬蟲(chóng)

需求

懂車(chē)帝全系車(chē)型懂車(chē)分(口碑)頁(yè)面中的詳細(xì)車(chē)系評(píng)分?jǐn)?shù)據(jù)

操作環(huán)境

  • win10

  • Google nexus5x(root)

  • Python3.9

  • Charles

需求分析

先來(lái)web端試下能否找到需要的數(shù)據(jù)接口,隨便找個(gè)車(chē)型打開(kāi)口碑頁(yè)面F12查看Network

根據(jù)頁(yè)面關(guān)鍵字先搜索一波

只在頁(yè)面的標(biāo)簽中找到了數(shù)據(jù),沒(méi)有發(fā)現(xiàn)有明顯的數(shù)據(jù)接口,其實(shí)用charles抓包的時(shí)候發(fā)現(xiàn)一個(gè)疑似的js好像數(shù)據(jù)是通過(guò)這個(gè)js加載出來(lái)的,打開(kāi)看了一下數(shù)據(jù)相當(dāng)混亂,暫且先放一邊,先從App分析一波看能否直接拿到數(shù)據(jù)接口

PS:手機(jī)環(huán)境、抓包環(huán)境的配置在這不在贅述,有興趣的可參考之前的文章 App抓包環(huán)境配置

下載懂車(chē)帝App,并安裝至手機(jī)

手機(jī)開(kāi)啟Postern,pc打開(kāi)charles

至此抓包工作準(zhǔn)備完成,打開(kāi)懂車(chē)帝App,隨便找個(gè)車(chē)型進(jìn)入懂車(chē)分頁(yè)面

拿到加載的數(shù)據(jù)包,和web一樣先搜索一波,看能否直接找到需要的數(shù)據(jù)

直接匹配到了多個(gè)結(jié)果,看接口是同一個(gè)接口返回的數(shù)據(jù),雙擊點(diǎn)進(jìn)去看一下詳細(xì)數(shù)據(jù)

看數(shù)據(jù)結(jié)構(gòu)和具體的數(shù)值和頁(yè)面中的數(shù)據(jù)很像,Charles界面太小,將數(shù)據(jù)拷貝至網(wǎng)頁(yè)中解析,方便分析,分享一個(gè)常用的json數(shù)據(jù)在線(xiàn)解析網(wǎng)站

經(jīng)過(guò)仔細(xì)分析,App中展示的數(shù)據(jù)小數(shù)點(diǎn)第二位是四舍五入的,從下圖的web頁(yè)面中可以看出,數(shù)據(jù)是一樣的,成功拿到數(shù)據(jù)接口!

口碑分?jǐn)?shù)據(jù)接口:

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=

對(duì)!你沒(méi)看錯(cuò),就是這么長(zhǎng),驗(yàn)證一下數(shù)據(jù)接口,在網(wǎng)頁(yè)中直接請(qǐng)求一下這個(gè)url

這兒推薦安裝一個(gè)網(wǎng)頁(yè)json可視化的插件,這兒偷懶沒(méi)裝,在線(xiàn)解析了一下json數(shù)據(jù),和Charles抓到的數(shù)據(jù)是一樣,經(jīng)過(guò)分析得知: series_id是車(chē)系id,修改此參數(shù)即可

獲取全部車(chē)系id

獲取車(chē)系id就很簡(jiǎn)單了,先拿到品牌id然后根據(jù)品牌id請(qǐng)求車(chē)系信息,注意這是一個(gè)post接口

def get_series(self, brand_id):
? ?"""
? ?獲取品牌所有車(chē)系
? ?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!")

獲取車(chē)系口碑分

實(shí)際的運(yùn)行過(guò)程中,發(fā)現(xiàn)一個(gè)問(wèn)題,不同的城市同價(jià)位平均分是不一樣的,所以需要指定城市獲取


def get_score(self, series_id, city):
? ?"""
? ?獲取車(chē)系口碑分
? ?series_id: 車(chē)系id
? ?"""
? ?response = self._parse_url(url).json()
? ?# 當(dāng)前車(chē)系評(píng)分 綜合
? ?series_info = list()
? ?series_info.Append(response.get('data').get('series_info').get('score'))
? ?# 當(dāng)前車(chē)系評(píng)分 詳細(xì)
? ?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]
? ?# 同價(jià)位平均分 綜合
? ?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

運(yùn)行結(jié)果


資源下載

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

本文僅供學(xué)習(xí)交流使用,如侵立刪!


Python 懂車(chē)帝口碑分爬蟲(chóng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
昌黎县| 海南省| 宝山区| 敖汉旗| 云阳县| 海阳市| 朝阳县| 宁阳县| 洛阳市| 星座| 乐平市| 洛阳市| 晋州市| 双城市| 灵璧县| 锡林浩特市| 黄平县| 祁连县| 岗巴县| 岳阳市| 广西| 城口县| 东乌珠穆沁旗| 五台县| 崇信县| 大新县| 景德镇市| 邮箱| 家居| 清苑县| 满洲里市| 彰化县| 昭通市| 双牌县| 汤原县| 澄迈县| 连云港市| 梁平县| 庆阳市| 石渠县| 宁化县|