摘 ?要:隨著國家對二胎、三胎政策的全面放開,新生兒出生數(shù)量有所增長,對嬰兒用品的數(shù)量和質量需求也發(fā)生著改變。本文主要研究嬰兒用品的商品評論相關信息的爬取,對目標網(wǎng)站的網(wǎng)頁進行分析,采集數(shù)據(jù)。獲取數(shù)據(jù)后,采用Python語言中的Pandas、Numpy等庫進行數(shù)據(jù)預處理。然后,使用Matplotlib、Nltk、Jieba庫對數(shù)據(jù)分析,去除重復評論,去除停用詞,詞頻統(tǒng)計后制作詞云圖等可視化數(shù)據(jù)結果,挖掘出大數(shù)據(jù)背后的隱含信息。
關鍵詞:Anaconda;嬰兒用品;數(shù)據(jù)采集;數(shù)據(jù)分析;數(shù)據(jù)可視化
中圖分類號:TP391 ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A文章編號:2096-4706(2021)14-0090-04
Abstract: With the full liberalization of the national policy on the second and third children, the number of newborns has increased, and the demand for the quantity and quality of baby products has also changed. This paper mainly studies the crawling of information related to commodity reviews of baby products, analyzes the web pages of the target website, and collects data. After obtaining the data, the paper uses pandas, numpy and other libraries in Python language to preproces data. Then, uses Matplotlib, Nltk and Jieba libraries to analyze the data, removes repeated comments, removes stop words, makes word cloud and other visual data results after word frequency statistics, and mines the hidden information behind the big data.
Keywords: Anaconda; baby care; data acquisition; data analysis; data visualization
0 ?引 ?言
三胎政策的全面實行,在未來,將會有不少行業(yè)迎來爆發(fā)式的增長,而母嬰行業(yè)受益顯而易見。若一個家庭準備生養(yǎng)小孩,必不可少的是準備母嬰用品。小到奶嘴尿布,大到孕婦食品和兒童家具,這一系列的消費將隨著新生兒數(shù)量的增長而迎來井噴式的發(fā)展高峰。尤其在網(wǎng)絡購物方面,反映商品體驗感和觀點的評論詞匯,成為消費者了解商品及其質量的重要渠道。大數(shù)據(jù)、人工智能的發(fā)展則對嬰兒用品詞匯數(shù)據(jù)的處理帶來了更多便利。
構建嬰兒用品消費的詞匯數(shù)據(jù),并進行有效分析和可視化處理,是各個地區(qū)商家經(jīng)營母嬰用品,對商品的種類、材質、規(guī)格、銷量等參數(shù)進行有效控制的手段。同時,也對研究人口出生政策起到側面的支撐作用。
1 ?嬰兒用品數(shù)據(jù)采集
1.1 ?準備環(huán)境
Anaconda是一個基于Python語言的數(shù)據(jù)處理和科學計算平臺,已經(jīng)內置了許多非常有用的第三方庫,裝上Anaconda,相當于把Python和一些如Numpy、Pandas、Scrip、Matplotlib 等常用的庫自動安裝好,比常規(guī)Python安裝更容易。
首先,進入官網(wǎng),點擊下載對應安裝包,下載完成后,按照提示步驟,逐一點擊安裝。選擇安裝其他地址的,可以單獨新建一個文件夾來存放跟Anaconda相關數(shù)據(jù),點擊結束后安裝完畢。然后,需要配置環(huán)境變量。找到安裝Anaconda的路徑,包含一個scripts文件,復制該路徑,通過右鍵“我的電腦”,選擇“屬性”,高級系統(tǒng)設置,環(huán)境變量,點擊環(huán)境變量,在系統(tǒng)變量中找到path,選中path,編輯好復制的路徑,粘貼在分號后面,點擊確定,保存后關閉就可以啟動Anaconda。
1.2 ?數(shù)據(jù)采集
1.2.1 ?分析網(wǎng)站頁面
爬取電商平臺的嬰兒用品數(shù)據(jù)之前,為更有效編寫代碼的邏輯,需要對該網(wǎng)站的域名結構和層次劃分清楚。本文以淘寶網(wǎng)為例,進入首頁,搜索輸入“奶瓶”,進入展示頁面,點擊第一個產品,進入“comotomo可么多么原裝進口硅膠奶瓶新生兒套裝韓國官方正品”的銷售頁面,該頁面包含了“累計評價”數(shù)據(jù),其中,本次有效處理提取的數(shù)據(jù)是商品的評論內容、評論時間和商品分類類型。
爬取數(shù)據(jù)前,登錄淘寶網(wǎng),查看可么多么原裝進口硅膠奶瓶的評論,建議選擇谷歌瀏覽器,選擇開發(fā)者工具或者按快捷鍵F12,找到Network選項,打開源代碼頁查找,發(fā)現(xiàn)源代碼頁沒有任何關于商品評論的信息,再去檢查頁進行查找,查找以“l(fā)ist_detail_rate.htm?”開頭的文件,在檢查頁的json數(shù)據(jù)里找到,然后需要向這些數(shù)據(jù)發(fā)送請求。該頁面的檢查頁信息和評論信息如圖1所示。
1.2.2 ?編寫代碼爬取數(shù)據(jù)
(1)導入需要用到的包,代碼如以下所示:
import requests ? # 導入第三方模塊requests庫
import csv
import re # 導入正則表達式庫
import numpy as np ? # 導入科學計算庫
import pandas as pd ? # 導入數(shù)據(jù)分析庫
import time
import random
(2)根據(jù)上面的網(wǎng)頁結構分析,找到真正的需要爬取的頁面URL和Headers頭部信息,包括referer、user-agent和cookie。評論頁面的地址很長,但是可以分析出規(guī)律,比如其中itemId是商品id,sellerid是賣家id,currentPage是頁面號,reply是評論回復等等。編寫的代碼以及運行結果是全部的頁面信息,如圖2所示。
(3)利用正則表達式對全部頁面信息進行提取,得到該款嬰兒用品的評論內容、評論時間和產品類型。多觀察分析幾個URL后,發(fā)現(xiàn)只有currentPage部分不同,表示評論頁碼。因為全部評論內容包含59頁多,需要用到循環(huán)結構實現(xiàn)。循環(huán)之前,先定義3個初始為空的列表,分別表示評論內容、評論時間和商品類型。編寫的關鍵代碼為:
for i in range(1,60):
url2 = ‘https://rate.tmall.com/list_detail_rate.htm?itemId=558660246338&spuId=878404666&sellerId=3296637765&order=3¤tPage=’+str(i)+’&append=0&content=1…’(說明:該url很長,此處省略了后面一部分。)
time.sleep(random.randint(3,9))
data = requests.get(url2,headers = headers).text
pat_content = re.compile(‘”rateContent”:”(.*?)”,”fromMall”’)
pat_time = re.compile(‘”rateDate”:”(.*?)”,”rateContent”’)
pat_type = re.compile(‘”auctionSku”:”(.*?)”,”anony”’)
content.extend(pat_content.findall(data))
content_time.extend(pat_time.findall(data))
type.extend(pat_type.findall(data))
data
dict = {
'評論':content,
'時間':content_time,
'類型':type
}
new_frame = pd.DataFrame(dict)
運行結果得到需要的評論數(shù)據(jù),如圖3所示。
(4)存儲數(shù)據(jù)到csv文件,得到“嬰兒用品評論信息.csv”。Python提供了多種格式的數(shù)據(jù)存儲形式,由于本實驗數(shù)據(jù)量不大,選擇了csv文件格式。以可么多么原裝進口硅膠奶瓶為對象商品評論表,包含1210條原始評論數(shù)據(jù)。
2 ?嬰兒用品數(shù)據(jù)預處理
(1)導入相關包和嬰兒用品評論信息文件內容:
import nltk ? # 導入自然語言工具包
import nltk.book
file_path = open(‘D:/Python/嬰兒用品評論信息.csv’)
file_data = pd.read_csv(file_path)
(2)原始評論數(shù)據(jù)中有些是重復的,比如“此用戶沒有填寫評論!”,需要進行去重復處理。去掉重復評論剩余1086條數(shù)據(jù)。去除重復評論代碼為:
file_data = file_data.drop_duplicates()
(3)為了方便后期分別對評論內容進行詞頻統(tǒng)計,對商品的類型評論條數(shù)進行展示,將文檔分解成評論內容和產品類型兩個csv文件。
3 ?嬰兒用品數(shù)據(jù)分析及可視化
(1)對文本內容的評論分析需要導入Python中的自然語言工具包ntlk,利用jieba庫進行中文分詞。導入代碼為:
import jieba#導入jieba庫
from nltk.book import *
cut_words = jieba.lcut(str(file_data[‘評論’].values),cut_all=False)
(2)加載停用詞列表,對中文分詞去除停用詞,比如評論中的“你”“他”“的”“地”“得”等詞語,刪除停用詞后,從輸出的結果中可以大致看出評價的特征信息,不過后期還需要統(tǒng)計詞語出現(xiàn)的次數(shù),才能進一步知曉用戶對該款嬰兒用品的喜惡。部分代碼為:
with open(‘D:/Python/停用詞表.txt’,encoding=’ utf-8’) as f:
stop_words = f.read()
new_data = []
for word in cut_words:
if word not in stop_words:
new_data.append(word)
(3)詞頻統(tǒng)計和產品分類評價統(tǒng)計。部分代碼如下:
import matplotlib.pyplot as plt ?# 導入模塊
import numpy as np
%matplotlib inline
%config InlineBackend.figure_format = ‘svg’
freq_list = FreqDist(new_data)
most_common_words = freq_list.most_common()
most_common_words
plt.figure(“分類統(tǒng)計”,figsize=(10,7))
plt.rcParams[‘font.sans-serif’] = [‘SimHei’]
plt.rcParams[‘axes.unicode_minus’] = False
new_x = np.linspace(0,9,12)
plt.xticks(new_x)
plt.ylim(0,30)
movie_name = [‘十字嘴’,’丫字嘴’,’粉色’,’藍色’,’250ml+150ml大小套’,’250ml’,’150ml’,’含重力球’,’不含重力球’]
y = [11.92,12.97,13.42,12.07,3.45,19.96,1.48,20.14,4.58]
plt.xticks(range(0,9),movie_name,)
plt.xticks(rotation=45)
index = np.arange(9)
plt.bar(index,y,0.5,color=[“r”,”g”,”b”],align=”center”)
通過調用nltk庫中的FreqDist類,對評論內容中每個詞語出現(xiàn)的次數(shù)進行詞頻統(tǒng)計,再把主要詞語的次數(shù)以柱狀圖展示出來。同時,對評論數(shù)據(jù)中類型字段進行分類統(tǒng)計,如十字嘴和丫字嘴的類型評論次數(shù)相差不大,但是,有重力球和不含重力球、250 ml和150 ml的商品類型評論次數(shù)相差明顯。詞頻統(tǒng)計柱狀圖和商品分類評價百分比柱狀圖如圖4、圖5所示。
(4)制作詞云圖。根據(jù)上一步中用戶評價的特征信息,使用wordcloud模塊進行詞云展示。將出現(xiàn)頻率高的評價詞匯進行放大顯示,頻率較低的詞語縮小顯示。代碼為:
from wordcloud import WordCloud
from matplotlib import pyplot as plt
wc=WordCloud(font_path=’D:/simhei.ttf’,background_color=’white’,width=1000,height = 800).generate(“ “.join(new_data))
plt.imshow(wc)
plt.axis(“off”)
plt.show()
從詞云圖中可以直觀地看出,“寶寶”“質量”“喝”“牌子”和“不錯”等詞語最為突出,表明用戶對該款嬰兒用品的質量和品牌總體感覺不錯,以寶寶是否愛喝作為重要的評判點。運行得到的詞云圖如圖6所示。
4 ?結 ?論
首先,通過本文研究發(fā)現(xiàn):該款嬰兒用品銷售量,在不同的產品參數(shù)方面有所不同,用戶對寶寶是否愛喝、商品質量、是否有重力球和品牌等方面有較強的體驗感。合理運用Python在Anaconda環(huán)境下的科學計算庫、文本分析庫以及數(shù)據(jù)可視化等庫,可以高效便捷地完成簡單數(shù)據(jù)的采集,并且對原始數(shù)據(jù)進行預處理和可視化展示,對嬰兒用品商家提供銷售數(shù)據(jù)支持,也從側面反映二胎、三胎政策影響下的嬰兒用品需求變化。
然后,為了完善嬰兒用品詞匯資源庫,后續(xù)研究尚需要對其他商品的評論數(shù)據(jù)進行補充,對評論內容的文本情感分析和相似度分析進行思考和探索。
參考文獻:
[1] 呂云翔,李伊琳,王肇一,等.Python數(shù)據(jù)分析實戰(zhàn) [M].北京:清華大學出版社,2018.
[2] 陳紅波,劉順祥.數(shù)據(jù)分析從入門到進階 [M].北京:機械工業(yè)出版社,2019.
[3] 李培.基于Python的網(wǎng)絡爬蟲與反爬蟲技術研究 [J].計算機與數(shù)字工程,2019,47(6):1415-1420+1496.
[4] 章蓬偉,賈鈺峰,邵小青,等.基于文本情感分析的電商產品評論數(shù)據(jù)研究 [J].微處理機,2020,41(6):58-62.
[5] 聶晶.Python在大數(shù)據(jù)挖掘和分析中的應用優(yōu)勢 [J].廣西民族大學學報(自然科學版),2018,24(1):76-79.
[6] 鄭晶晶.融入Python應用的學生考勤數(shù)據(jù)管理分析 [J].數(shù)字技術與應用,2021,39(2):83-84+89.
[7] 郝海妍,潘萍.Python技術在數(shù)據(jù)分析中的應用 [J].電子技術與軟件工程,2020(12):179-181.
作者簡介:謝美英(1984—),女,漢族,湖南漣源人,講師,碩士研究生,研究方向:軟件技術、數(shù)據(jù)挖掘。