用python爬取4332條糉子數據進行分析,再送15盒糉子給大家

↑ 點擊上方 凹凸數據” 關注 + 星標 ~ 

文章乾貨!有福利 ! 


端午節快要到了,甜鹹糉子之爭也快要拉開帷幕。

小五準備用Python爬取淘寶上的糉子數據並進行分析,看看有什麼發現。

(順便送大家一波福利)

爬蟲

爬取淘寶數據,本次採用的方法是:Selenium控制Chrome瀏覽器自動化操作[1]。其實我們還可以利用Ajax接口來構造鏈接,但是非常繁瑣(包含加密祕鑰等),直接使用Selenium來模擬瀏覽器會省去很多事情;

之前的文章我們也用過相同的方法,比如:爬電腦、爬電腦、爬完電腦買不起

最常見的問題是chromedriver驅動與谷歌瀏覽器的版本不匹配,很容易就可以解決。接下來,我們就開始利用selenium抓取淘寶商品,並使用Xpath解析得到商品名、價格、付款人數、店鋪名、發貨地址信息,最後將數據保存在本地。

爬蟲過程如下圖:

selenium自動化爬取(需要淘寶掃描登錄一次)
from selenium import webdriver

# 搜索商品,獲取商品頁碼
def search_product(key_word):
    # 定位輸入框
    browser.find_element_by_id("q").send_keys(key_word)
    # 定義點擊按鈕,並點擊
    browser.find_element_by_class_name('btn-search').click()
    # 最大化窗口:爲了方便我們掃碼
    browser.maximize_window()
    # 等待15秒,給足時間我們掃碼
    time.sleep(15)
    # 定位這個“頁碼”,獲取“共100頁這個文本”
    page_info = browser.find_element_by_xpath('//div[@class="total"]').text
    # 需要注意的是:findall()返回的是一個列表,雖然此時只有一個元素它也是一個列表。
    page = re.findall("(\d+)",page_info)[0]
    return page

詳細爬蟲代碼下載見文末。

數據整理

此時我們爬取得到的數據:

整理前的數據

數據還是比較粗糙的,有幾個問題需要我們去處理:

  1. 添加列名

  2. 去除重複數據(翻頁爬取過程中會有重複)

  3. 購買人數爲空的記錄,替換成0人付款

  4. 將購買人數轉換爲銷量(注意部分單位爲

  5. 刪除無發貨地址的商品,並提取其中的省份

部分代碼:

# 刪除無發貨地址的商品,並提取省份
df = df[df['發貨地址'].notna()]
df['省份'] = df['發貨地址'].str.split(' ').apply(lambda x:x[0])

# 刪除多餘的列
df.drop(['付款人數', '發貨地址', 'num', 'unit'], axis=1, inplace=True)

# 重置索引
df = df.reset_index(drop=True)
df.head(10) 
整理後的數據

這樣我們就對數據完成了清洗與整理,方便下一步進行可視化。

順便做個排序,看看什麼糉子最貴!

df1 = df.sort_values(by="價格", axis=0, ascending=False)
df1.iloc[:5,:]
價格TOP5的糉子

前三名都來自御茶膳房旗艦店,讓我們看看1780元的糉子長啥樣吧!

想嚐嚐

數據可視化

本文我們打算用pyecharts進行可視化展示。有同學可能使用的是老版本(0.5X),Pyecharts的1.x版本與老版本(0.5X)不兼容,如果無法導入可能是這個問題哈。

可視化所有語句均基於v1.7.1,通過以下語句可查詢你的pyecharts版本:

import pyecharts

print(pyecharts.__version__)

具體安裝與使用案例可以參考教程:Pyecharts 1.x 教程

扇形圖

最貴的糉子1780元看來是喫不起了,那大家都買什麼價位的呢?

先按照淘寶推薦的區間劃分一下:

def price_range(x): #按照淘寶推薦劃分價格區間
    if x <= 22:
        return '22元以下'
    elif x <= 115:
        return '22-115元'
    elif x <= 633:
        return '115-633元'
    else:
        return '633元以上'

再使用pyecharts來生成不同價格區間的糉子銷量佔比圖。

不同價格區間的糉子銷量佔比

看來百元以內的糉子(禮盒裝)纔是大家的正常承受範圍,不過我還是選擇小區門口的5塊錢3個。

詞雲圖

我們用jieba對爬取得到的商品名稱分詞,生成詞雲。

from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType

# 詞雲圖
word1 = WordCloud(init_opts=opts.InitOpts(width='1350px', height='750px'))
word1.add("", [*zip(key_words.words, key_words.num)],
          word_size_range=[20, 200],
          shape=SymbolType.DIAMOND)
word1.set_global_opts(title_opts=opts.TitleOpts('糉子商品名稱詞雲圖'),
                      toolbox_opts=opts.ToolboxOpts())
word1.render("糉子商品名稱詞雲圖.html")
糉子商品名稱詞雲圖

碩大的糉子周圍環繞着幾個突出的關鍵詞:禮盒裝鮮肉蛋黃嘉興豆沙端午節。除去端午節相關的詞彙,我們通過關鍵詞大小似乎就知道幾種口味的受歡迎情況。

查閱資料對比一下,還真是大體一致。

心疼我棗糉。

至於嘉興這個地名,我們後文會繼續提到。

條形圖

上文我們查到了最貴的糉子,那麼銷量最好的糉子/店鋪是什麼呢?

安排

糉子商品銷量Top10

五芳齋共4款入圍,其中一款禮盒裝達到了100萬+的銷量,應該比這個還多(參見微信的10w+)。真真老老緊隨其後,3款糉子進入TOP10。其餘的品牌還有稻香村知味觀,額,第九名是賣糉葉的,看來自己包糉子的需求也是蠻大的嘛。

糉子店鋪銷量Top10

糉子店鋪銷量Top10其實與商品相似,五芳齋官方旗艦店真真老老旗艦店佔據首位,遙遙領先。

經過查閱,五芳齋,真真老老,都爲嘉興的糉子兩大品牌,那難怪嘉興在詞雲圖裏那麼突出。嘉興屬於浙江省,銷量冠亞軍都在這裏,那浙江豈不是佔比很大。

還真是這樣:

地圖

繼續使用pyecharts來生成各省份糉子銷量分佈圖[2]

from pyecharts.charts import Map 

# 計算銷量
province_num = df.groupby('省份')['銷量'].sum().sort_values(ascending=False) 

# 繪製地圖
map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px'))
map1.add("", [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())],
         maptype='china'
        ) 
map1.set_global_opts(title_opts=opts.TitleOpts(title='各省份糉子銷量分佈'),
                     visualmap_opts=opts.VisualMapOpts(max_=300000),
                     toolbox_opts=opts.ToolboxOpts()
                    )
map1.render("各省份糉子銷量分佈.html")
各省份糉子銷量分佈

這個銷量佔比差異真的是太大了。

可以說中國糉子看浙江,浙江糉子看嘉興[3](通過計算髮貨地址爲浙江的糉子銷量佔比70.6%,而嘉興佔浙江的87.4%)

紀錄片《舌尖上的中國》裏的嘉興糉

小結

糉子自古以來就代表着紀念和美好的祝願。

而在這個並不安穩的2020,端午的糉子更多了一些祈願國泰民安,順利度過陰霾的意義。

“端午安康”不再是一句客套話,而是我們能送給彼此的最好的願景。

本文數據和爬蟲可視化源碼下載地址:

https://alltodata.cowtransfer.com/s/d11c8906cd9c4c

參考文章

[1]

數據分析與統計學之美: 《手把手教你爬取淘寶的筆記本電腦數據,指導你如何選購電腦!》

[2]

CDA數據分析師: 《全網誰家熱乾麪銷量最高?》

[3]

新農堂: 《你對糉子的力量可能一無所知》

福利時間

端午節就要來了,騰訊雲+社區聯合凹凸數據給大家送15份騰訊雲+社區定製五芳齋糉子禮盒

沒錯,五芳齋就是上文中經過我們分析得到的:最受歡迎(銷量最好)的糉子品牌。

現在公佈贈送規則,一定要按照要求參與纔有機會獲得!

活動1:掃描上方二維碼微信授權登陸並關注我的雲+社區主頁,截圖並掃描文末最後一張二維碼上傳即可參與,抽出7份

截圖示例

活動2:活動1關注後,可以評論我的任意一篇雲+社區文章,同活動1,截圖上傳抽出7份

評論示例

活動3:點亮文末在看並點擊下方文字給我留言(不限主題),點贊第一名贈送糉子1份

最後再次感謝騰訊雲+社區對本活動的支持,祝各位好運!

注1:爲保證糉子能及時送達幸運讀者的手中,本次活動截止時間爲6.19日20點(明天晚8點)!

注2:以上三個活動可以同時參加,但同一用戶只能獲得一份禮盒!

注3:本次活動將不再單獨發文公佈獲贈名單,所以請所有參與活動的同學添加小五微信(zpw505)關注最新消息。同時一定要仔細閱讀規則參與,謝謝!

活動1、2的截圖反饋地址:

掃描上傳截圖

祝大家好運~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章