0x00 寫在前面
簡單彙報一下最近拾叄香比價平臺的開(mo)發(yu)進度,上週末三天爬完了四個平臺的全部飾品ID(不包括貼紙等,加上那些肝受不了,實用性也不高),共五萬餘條數據。整合後數據如下
四個平臺的飾品ID
今天準備給皮膚編號,方便API調用,思路如下
大編號
具體到每一種武器的每一個皮膚就是這樣的:
1 01 001 B S
刀 鮑伊獵刀 皮膚 略磨 暗金
上面的001這個是根據我這個皮膚在我爬下來的數據裡面的位置來定的,嶄新到破損分別對應字母A-E,暗金就在末尾加一個S,紀念品就加個J。
下面是做測試的時候簡單跑了一下
僅供參考
0x01 理論部分
先大概看看四個平臺的飾品Url的結構(以普通嶄新九頭金蛇作為例子):
A:/goods/871801
B:/product/730/664271
C:/goodInfo?id=62268
D:/csgo/914680597258567680/S.html
不難發現,想要獲取飾品信息就需要構造Url,而鏈接裡面最重要的參數便是該飾品對應的ID,並且每個平臺皮膚所對應的ID都不一樣,那麼要做四個平臺的聯合搜索的話就免不了要把每種皮膚在每個平臺上的ID給找出來。像我這樣二十歲的男子大學牲,怎麼能把寶貴的時間浪費在複製數據這種事情上?陪對象不香?人生苦短,我用Python。
如何獲取飾品信息可以參考上一篇學py的帖子,有較為詳細的分析:
【我在黑盒學py】CSGO飾品價格監控工具
0x01_1 獲取A平臺的數據
要批量獲取,並且按照種類進行儲存的話,飾品平臺提供了很貼心的按照武器種類進行篩選的功能,大大方便了腳本的編寫。
分析思路和上一篇帖子差不多,打開控制欄,隨便選擇一種槍械,分析數據包。
這個good開頭的包很可疑
根據多年的瞎蒙經驗,一眼可疑發現這個很特別的good開頭的請求,點開看看
這個items裡面東西很多
找到你了
果然有飾品信息,那麼來康康他的請求是什麼樣的
首先看看請求Url,可以發現紅色框中這三個參數有點意思。第一個框相信只要學過小學英語都能知道這是第一頁的意思;第二個就比較有意思了,這個應該是CSGO中鮑伊獵刀對應的id,那麼由此可以推斷得出想要獲取其他種類的皮膚只要得到他對應的這個大類ID即可;最後一個方框這個不難判斷是時間戳,畢竟市場都具有時效性嘛,剩下的一些參數填不填都不影響,在構造請求Url的時候可以省略。
先直接get一下這個url看看行不行
從返回結構可以看出,他需要登錄才能請求這個API,那麼嘗試直接帶Cookie請求行不行
帶上Cookie再次請求就有了
友情提示:對於這種需要Cookie才能請求的API,一定記得加延遲,否則請求太頻繁了直接號都給揚了。
稍微分析一下返回的數據,我們需要的是飾品名稱,飾品磨損,飾品ID,最後實現在代碼中(篇幅問題這裡只截圖主要部分,詳細代碼可以在文末下載代碼自己看):
主函數
0x01_2 獲取B平臺的數據
同上,先打開一個頁面進行分析,只有一個孤零零的數據包
點進去康康,發現是Post請求,那麼必然就有提交的數據表單
找找提交的數據長啥樣
不難發現,最後一行是刀的代碼,這裡是蝴蝶刀,倒數第三個pageSize是他返回的數據量一次請求返回多少種飾品,可以適當加大這個值,其他的參數信息都不是很重要可以不管。
這裡我們發起一個請求,發現可以成功返回回來數據,但是要注意一點,我們提交的表單數據是Json格式的,所以響應的我們在使用requests模塊進行提交數據的時候也應該以json格式提交表單,如下
res = requests.post(url, json=form_data)
通常情況下我們使用post方法提交表單都是這樣的
res = requests.post(url, data=form_data)
在這種指定表單格式的API上是必須按照對應格式進行提交的,否則將出現問題
這裡更換了表單格式
由於有pageSize參數,我們在構造表單的時候可以適當加大這個值,以減少請求次數
原理同8F
0x01_3 獲取C平臺的數據
有一說一,我以前從來沒用過這個平臺,第一次打開的時候屬實給我驚到了,這什麼牛皮癬網站,不知道的還以為是什麼菠菜開箱網,也不知道前端在設計的時候在想啥。
老規矩,隨便點開一頁看看數據包
非常多
該說不說,他的請求就跟他的頁面一樣花裡胡哨的,非常多,有一定的迷惑性,但是還是能夠找到相關的數據包,先來看看請求部分
這個請求的Url倒是意外的乾淨,通過嘗試不難發現,第一個ctg_id對應的就是他網頁上面那一欄武器篩選欄的順序,比如1就是手槍,2是重型武器,以此類推。第二個type_id也類似,是武器在總的排序中的順序(不得不說這一點設計倒是和我想到一塊兒去了),第三個page_size的參數我試了一下,只能設置為20,改大會報錯,不是很能理解他的意義在哪。
由於是get請求,所以我們直接嘗試請求這個Url看看結果
發現返回回來的直接是一個網頁,但是裡面也有想要的飾品信息(其實是我懶得去看那些奇奇怪怪的請求,發現他的網頁也是直接請求來的,索性直接從網頁裡面找東西)
由於需要處理網頁,那麼人民群眾喜聞樂見的BeautifulSoup就上場了,也沒啥難度,主函數貼出來了,不懂可以自己下載代碼康康
主函數
0x01_4 獲取D平臺的數據
好像這個平臺是重慶的一家公司在運營,但是感覺用的人沒前面三個多
老規矩,看看數據包
雖然這家平臺的設計理念與上一家的菠菜網站設計理念不謀而合,但是在請求裡面就與上一家不一樣了,並沒有我們想要的東西。那麼換個思路,直接Get請求這個網頁Url看看行不行
直接拿下
掘沙!於是和上一家的腳本一樣,用BeautifulSoup解析一下就好了,這裡直接快進到代碼實現
原理基本和上一家的一樣
0x02 小結
通過獲取這四大平臺的信息,已經初步形成了一個數據庫,可以通過名字找到該飾品對應四個平臺的id,有的皮膚YYYP和C5沒有上架就沒有ID,後續會進一步完善。
在編寫腳本的時候,獲取的皮膚都是以武器類別命名的單獨的一個一個的.xlsx文件最後還用到了一個合併數據的小腳本,這裡不多贅述,也放在附件裡面,感興趣的話可以自己研究一下,也是非常簡單的。
0x03 附件
由於一些原因,不便放出獲取到的數據,僅提供代碼。下圖中第一個dealcsv就是處理合併數據表格的代碼。
藍奏雲:mrdeng.lanzouj.康姆/igwzs032cz9c
如果覺得本文對你有用的話,就請動動發財的小手來個一鍵三連叭~
拾叄香比價平臺也已經進入到最後的開發階段了,不出意外的話月底或者下個月初就能正式上線,請緊張的期待!