Scrapy爬取網(wǎng)易嚴(yán)選制作可視化大屏!
↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能
后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包

需求分析




網(wǎng)頁(yè)分析





發(fā)送請(qǐng)求


????#?名稱
????name?=?scrapy.Field()
????#?等級(jí)
????level?=?scrapy.Field()
????#?評(píng)分
????star?=?scrapy.Field()
????#?時(shí)間
????rls_time?=?scrapy.Field()
????#?顏色
????color?=?scrapy.Field()
????#?內(nèi)存
????storage?=?scrapy.Field()
????#?評(píng)論
????content?=?scrapy.Field()ic(response.json())瀏覽器成功響應(yīng)給我們信息,這樣看起來(lái)結(jié)構(gòu)一目了然。

phone_list?=?phone_info['data']['commentList']
#?打印所需信息
for?phone?in?phone_list:
????#?名稱
????item['name']?=?phone['frontUserName']
????#?等級(jí)
????item['level']?=?phone['memberLevel']
????#?評(píng)分
????item['star']?=?phone['star']
????#?時(shí)間
????rls_time?=?phone['createTime']
????item['rls_time']?=?time.strftime('%Y-%m-%d?%H:%M:%S',?time.localtime(rls_time/1000)).split('?')[0]
????#?顏色
????item['color']?=?phone['skuInfo'][0].split(':')[1]
????#?內(nèi)存
????item['storage']?=?phone['skuInfo'][1].split(':')[1]
????
????#?評(píng)論
????item['content']?=?phone['content']
????
????yield?item

數(shù)據(jù)保存

class?ExcelPipeline:
??op.Workbook()
??self.wb.active
??ws.append(['用戶名稱',?'會(huì)員等級(jí)',?'手機(jī)評(píng)分',?'評(píng)論時(shí)間',?'手機(jī)顏色',?'手機(jī)內(nèi)存',?'評(píng)論'])
??self.wb.save('../網(wǎng)易.xlsx')
??print('網(wǎng)易數(shù)據(jù)成功保存!')

數(shù)據(jù)清洗

我們?cè)诖耸褂胮andas對(duì)數(shù)據(jù)進(jìn)行讀取然后去重復(fù)和去除空值處理。
隨機(jī)抽取五條數(shù)據(jù)展示如下:
pd.set_option('display.max_columns',?None)???#?顯示完整的列
pd.set_option('display.max_rows',?None)??#?顯示完整的行
pd.set_option('display.expand_frame_repr',?False)??#?設(shè)置不折疊數(shù)據(jù)
#?讀取數(shù)據(jù)
rcv_data?=?pd.read_excel('../網(wǎng)易.xlsx')
#?刪除重復(fù)記錄和缺失值
rcv_data?=?rcv_data.drop_duplicates()
rcv_data?=?rcv_data.dropna()
#?抽樣展示
print(rcv_data.sample(5))
'''
??用戶名稱??會(huì)員等級(jí)??手機(jī)評(píng)分????????評(píng)論時(shí)間???手機(jī)顏色??手機(jī)內(nèi)存??????????????????????評(píng)論
??7????趙****豪?????5?????5??2021-03-05?????黑色??128G????????????????沒(méi)買2天又便宜了
??42???用****4?????5?????5??2021-06-23??返紅包黑色??128G????????????手機(jī)非常好用,老婆很喜歡
??268??獨(dú)****息?????6?????5??2021-06-04??返紅包綠色??256G?????????????發(fā)貨很快,第二天就到了
??144??1****5?????5?????5??2021-02-27?????黑色??128G?????????????????沒(méi)啥可說(shuō)的?好
??97???用****4?????5?????5??2021-06-05??返紅包白色??128G??發(fā)貨快,物流也給力,包裝保護(hù)的好,正品沒(méi)問(wèn)題
'''
詞云可視化

詞云圖展示如下:看來(lái)Iphone12依舊還是很香的,雖然13出來(lái)了
但是依舊值得入手!




詞頻可視化

#?詞頻設(shè)置
all_words?=?[word?for?word?in?result.split('?')?if?len(word)?>?1?and?word?not?in?stop_words]
wordcount?=?Counter(all_words).most_common(10)
'''
('非常',?'不錯(cuò)',?'手機(jī)',?'好好',?'很快',?'發(fā)貨',?'喜歡',?'正品',?'物流',?'速度')
(65,?48,?45,?36,?32,?32,?31,?30,?29,?29)
'''

評(píng)分可視化

我們使用pandas提取手機(jī)評(píng)分?jǐn)?shù)據(jù)以及頻率,數(shù)據(jù)可視化展示如下:
從圖中可以非常直觀的看出蘋果12的受歡迎程度。
#?劃分價(jià)格區(qū)間
rcv_data['手機(jī)評(píng)分']?=?pd.cut(rcv_data['手機(jī)評(píng)分'],?[0,?1,?2,?5],?labels=['差評(píng)',?'中評(píng)',?'好評(píng)'])
#?統(tǒng)計(jì)數(shù)量
stars?=?rcv_data['手機(jī)評(píng)分'].value_counts()
stars1?=?stars.index.tolist()??#?人氣值分類
stars2?=?stars.tolist()???#?人氣值分類對(duì)應(yīng)數(shù)量
'''
['好評(píng)',?'差評(píng)',?'中評(píng)']
[308,?9,?2]
'''

購(gòu)機(jī)時(shí)間可視化

#?提取時(shí)間月份
rcv_data['評(píng)論時(shí)間']?=?rcv_data['評(píng)論時(shí)間'].map(lambda?x:?x.split('-')[1])
rcv_data['評(píng)論時(shí)間']?=?pd.cut(rcv_data['評(píng)論時(shí)間'],?['00',?'01',?'02',?'03',?'04',?'05',?'06',?'07',?'08',?'09'],?labels=['一月',?'二月',?'三月',?'四月',?'五月',?'六月',?'七月',?'八月',?'九月'])
#?統(tǒng)計(jì)數(shù)量
dates?=?rcv_data['評(píng)論時(shí)間'].value_counts()
dates1?=?dates.index.tolist()??#?月份分類
dates2?=?dates.tolist()??#?月份分類對(duì)應(yīng)數(shù)量
'''
['六月',?'三月',?'四月',?'九月',?'二月',?'七月',?'一月',?'五月',?'八月']
[95,?66,?34,?33,?22,?20,?18,?16,?15]
'''從圖中可以很直觀的看到大家的下單日期大多集中在六月份
年終獎(jiǎng)6月發(fā)嗎


內(nèi)存大小可視化

接下來(lái)我們對(duì)手機(jī)內(nèi)存進(jìn)行可視化分析,看看大家喜歡的內(nèi)存是多大?
storage?=?rcv_data['手機(jī)內(nèi)存'].value_counts()
storage1?=?storage.index.tolist()??#?內(nèi)存種類
storage2?=?storage.tolist()??#?內(nèi)存種類對(duì)應(yīng)數(shù)量
'''
['128G',?'256G',?'64G']
[221,?81,?18]
'''64太小,256浪費(fèi)
128G才是真愛(ài)?。?/span>


手機(jī)顏色可視化

#?顏色分布
rcv_datas?=?rcv_data[rcv_data['手機(jī)顏色'].str.len()==2]
colors?=?rcv_datas['手機(jī)顏色'].value_counts()
colors1?=?colors.index.tolist()??#?內(nèi)存種類
colors2?=?colors.tolist()??#?內(nèi)存種類對(duì)應(yīng)數(shù)量
'''
['白色',?'黑色',?'紅色',?'綠色',?'藍(lán)色',?'紫色']
[73,?56,?31,?30,?23,?15]
'''
推薦閱讀
評(píng)論
圖片
表情
