溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析

發(fā)布時(shí)間:2021-10-26 10:04:35 來源:億速云 閱讀:148 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

爬蟲

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

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

爬蟲過程如下圖:

怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析

selenium自動(dòng)化爬?。ㄐ枰詫殥呙璧卿浺淮危?/p>

from selenium import webdriver

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

詳細(xì)爬蟲代碼下載見文末。

數(shù)據(jù)整理

此時(shí)我們爬取得到的數(shù)據(jù):

整理前的數(shù)據(jù)

數(shù)據(jù)還是比較粗糙的,有幾個(gè)問題需要我們?nèi)ヌ幚恚?/p>

  1. 添加列名

  2. 去除重復(fù)數(shù)據(jù)(翻頁(yè)爬取過程中會(huì)有重復(fù))

  3. 購(gòu)買人數(shù)為空的記錄,替換成0人付款

  4. 將購(gòu)買人數(shù)轉(zhuǎn)換為銷量(注意部分單位為萬)

  5. 刪除無發(fā)貨地址的商品,并提取其中的省份

部分代碼:

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

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

# 重置索引
df = df.reset_index(drop=True)
df.head(10)

怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析

整理后的數(shù)據(jù)

這樣我們就對(duì)數(shù)據(jù)完成了清洗與整理,方便下一步進(jìn)行可視化。

順便做個(gè)排序,看看什么粽子最貴!

df1 = df.sort_values(by="價(jià)格", axis=0, ascending=False)
df1.iloc[:5,:]

怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析

想嘗嘗

數(shù)據(jù)可視化

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

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

import pyecharts

print(pyecharts.__version__)

扇形圖

最貴的粽子1780元看來是吃不起了,那大家都買什么價(jià)位的呢?

先按照淘寶推薦的區(qū)間劃分一下:

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

再使用pyecharts來生成不同價(jià)格區(qū)間的粽子銷量占比圖。

不同價(jià)格區(qū)間的粽子銷量占比

看來百元以內(nèi)的粽子(禮盒裝)才是大家的正常承受范圍,不過我還是選擇小區(qū)門口的5塊錢3個(gè)。

詞云圖

我們用jieba對(duì)爬取得到的商品名稱分詞,生成詞云。

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")

怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析

粽子商品名稱詞云圖

碩大的粽子周圍環(huán)繞著幾個(gè)突出的關(guān)鍵詞:禮盒裝、鮮肉、蛋黃、嘉興、豆沙、端午節(jié)。除去端午節(jié)相關(guān)的詞匯,我們通過關(guān)鍵詞大小似乎就知道幾種口味的受歡迎情況。

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

心疼我棗粽。

至于嘉興這個(gè)地名,我們后文會(huì)繼續(xù)提到。

怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析

粽子商品銷量Top10

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

粽子店鋪銷量Top10

粽子店鋪銷量Top10其實(shí)與商品相似,五芳齋官方旗艦店和真真老老旗艦店占據(jù)首位,遙遙領(lǐng)先。

經(jīng)過查閱,五芳齋,真真老老,都為嘉興的粽子兩大品牌,那難怪嘉興在詞云圖里那么突出。嘉興屬于浙江省,銷量冠亞軍都在這里,那浙江豈不是占比很大。

地圖

繼續(xù)使用pyecharts來生成各省份粽子銷量分布圖

from pyecharts.charts import Map 

# 計(jì)算銷量
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")

怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析

各省份粽子銷量分布

這個(gè)銷量占比差異真的是太大了。

可以說中國(guó)粽子看浙江,浙江粽子看嘉興[3](通過計(jì)算發(fā)貨地址為浙江的粽子銷量占比70.6%,而嘉興占浙江的87.4%)

關(guān)于怎么用Python爬取淘寶上的粽子數(shù)據(jù)并進(jìn)行分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI