前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
作者:資料不吹牛
本文通過淘寶“防脫發洗發水”爬取和分析,來提供爬取海量淘寶商品資訊的思路,除了基礎爬蟲外,還應該思考拿到類似的商品資料之后如何清洗,以及作為一個分析者可以從什么維度去分析,
PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取
可以免費領取原始碼、專案實戰視頻、PDF檔案等
資料爬取
Part1 觀察并定位資料
我們想要哪些資料呢?
商品的價格、月識訓(銷售)人數、產品名稱、店鋪名稱、店鋪地址這幾個比較直觀的欄位我們爬取哪幾個呢?
小孩子才做選擇,成年人必須全要!
雖然現在很多網址都是動態加載,需要審查元素來找相關地址,但我們在找之前,養成“先右鍵,選擇查看源代碼,看一看想要的資料有沒有在靜態網頁”的習慣是極好的,
結果淘寶誠不欺我,所有我們想要的資料,都在源代碼中,也就是說,我們用 Python 直接訪問瀏覽器中的網址就可以得到目標資料,
認真看看源代碼,找到更準確的定位:
所有想要的資料都在一個類 JSON(可以先理解為字典)的字串中,而前面還有幾十行雜亂無章的字符,很亂,但不要緊,資料在總有辦法找到他們的,
Part2 請求嘗試
這里用一段話來比喻 Python 訪問前的偽裝:
你住在高檔小區,小 P 這個壞小伙想偽裝你進去做不可描述的事情,
他知道,門衛會根據身份象征來模糊判斷是否是小區業主,所以小 P 先租了一套上檔次的衣服和一輛稱得上身份的豪車(可以理解為偽裝 headers),果然混過了門衛,但是呢,小 P 進進出出太頻繁,而且每次停車區域都不一樣,引起了門衛的嚴重懷疑,在一個星期后,門衛升級檢驗系統,通過人臉識別來驗證,小 P 被拒絕在外,但很快,小 P 就通過毀容級別的化妝術(偽裝 cookies),完全偽裝成你,竟然混過了人臉識別系統,隨意出入,為所欲為,
匯入相關的 Python 庫:
養成先修改 headers 的好習慣再訪問:
看看狀態碼(200 表示正常訪問):
目前來說,還算正常,但堂堂淘寶這么簡單的一個偽裝就可以爬了???不科學!!不過先繼續吧,精確定位到我們需要的資料欄位,
上一步,我們發現所有的資料都在一個類 JSON 的字串中,理應先精確定位他首尾的大括號({}),嘗試用 JSON 來高效決議,
首:
尾:
通過嚴密的排查(同學們這一步真的需要耐心去找),我們發現所有目標資料都被包裹在以 pageName 開頭,shopcardOff 的字符中,如果能夠完整截取這個大括號和里面的內容,就可以決議了:
結果,報錯啊報錯……
我們沒有通過字串定位拿到想要的資料,通過系統排查,發現問題出在訪問,第一次訪問雖然狀態碼是 200,但并沒有回傳源代碼看到的資料:
到這里,是時候祭出萬能的 cookies 了,操作方式,右鍵——審查元素——重繪網頁——按照下面紅框點選:
代碼中進行偽裝:
再次按照剛才的步驟來定位和決議資料:
一樣的操作,沒有報錯,看來大功告“半”成!
Part3 精確定位目標資料
經過前面兩步的鋪墊,我們已經拿到了目標資料并決議成 JSON 格式,現在直接可以按照訪問字典的方式來精確定位資料,非常暴力(至于內部的層級結構,需要大家耐心細致的自我尋找規律):
Part4 回圈爬取
回圈爬取的關鍵就在于找到網址規律,構建多個網頁,用上面的代碼來回圈訪問,
我們在網頁上點擊下一頁,再下一頁,再下下一頁,很容易發現,網站變化規律的核心就是最后面
s 的值,第一頁是 0,第二頁是 44,第三頁是 88,So Easy~
構造一個自定義爬取頁數的函式,只需要輸入基礎網址和要爬取的頁數,要多靈活有多靈活:
接上一步的訪問獲取資料操作進行逐頁訪問,即實作了多頁面爬取,部分結果預覽如下:
至此,商品標題,價格,店鋪名稱,店鋪地址,識訓人數,商品的 URL 全部拿下,基于“防脫發洗發水”的基本資料爬取宣告完成,(完整代碼在文章最后)
資料清洗
清洗之前,最好先明確分析的目的,小 Z 最核心的訴求是要知道脫發洗發水銷售占整個洗發水大盤的比重,其次,想要進行一些其他分析,比如渠道(旗艦店、專營店、貓超等等分別占比)分布,
1. 數字相關欄位規整
爬取資料非常規整,并沒有缺失資料,
價格也是 OK 的,付款人數由于包含“人識訓”這個后綴,需要規整為數字格式,一行代碼就 OK:
2. 標注出脫發相關的產品
很明顯,如果主打甚至僅僅包含防脫發功效的產品幾乎都會在標題注明“脫發”字樣(防字其實不用加),我們需要插入一個輔助列,根據“產品標題”來判斷是不是防脫發洗發水,
Python 的 pandas 做起來實在是太高效了,還是一行代碼:
注:等于 -1 表示在標題中沒有找到“脫發”字樣
“是否包含脫發字樣”結果為 TRUE 則包含,FALSE 則不包含,
3. 引入一個銷售指標
目前拿到的數字相關資料是“價格”、“識訓人數”,用“價格” * “識訓人數”引入一個“識訓額”來衡量銷售情況,依然是一行代碼:
4. 區分店鋪類別
大家都有多年購買經驗,對于淘寶店鋪分類其實不陌生,不外乎是“旗艦店”、“專賣店”、“專營店”、“天貓超市”、“C店”(其他淘寶店鋪),這里需要對店鋪關鍵字進行檢索分類,先定義一個判斷函式:
然后,life is short,and i use Python~
亦是一行代碼搞定:
資料清洗基本完成,
資料分析
1. 核心目標
言歸正傳,目前“洗發水”類目體量巨大,(近 30 天)識訓額達到了 1.49 億元,其中防脫發洗發水以 5.43% 的數量占比實作 1118.04 萬銷售額,占比 7.50%,離半壁江山相差甚遠,賭局勝負已定,恭喜小 Z 喜提孩子,
“孩子,在資料面前可不能吹牛啊”,小 Z 看著小 A 漲紅了的臉語重心長道,
2. 價格分布
價格深度探究應該結合產品的數量、規格等特征,這里只是給到一個簡單的思路拋磚引玉:
兩款產品呈現出不同的分布形態,防脫發洗發水在價格上顯得些許傲嬌,產品在 50-100 元的價格段數量最多(占比 51.88%),其次是 0-50 元的平價款,
其他洗發水則隨著價格升高而數量減少,0-50 元的產品占比最高,緊隨其后的是 50-100 元的產品,
防脫發洗發水價格一般高于其他洗發水價格,
3、渠道分布
不同型別洗發水(防脫發與非防脫發)渠道策略有明顯的差異(肯定跟品牌戰略有關),其他洗發水渠道分布相對均衡,以“旗艦店”的 41% 為主,“天貓超市”為輔(29%),“C店”和“專賣店”分一小杯羹,
防脫發洗發水則高舉旗艦店利劍(占比高達 77%+),其次則是各類 C店(11%),而在其他洗發水渠道表現優異的貓超在這里折戟,僅占比 3%,
看來,防脫發類功能產品高銷售背后離不開品牌的背書支撐,(一般品牌才會開設旗艦店)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/65145.html
標籤:Python
上一篇:新手小白的福利,零基礎也能上手的專案——學生資訊管理系統
下一篇:電信用戶流失分析與預測
