【實戰好文】|爬取京東書籍評論並分析

本篇做者:小鄭同窗html

上週的贈書活動中,收到了樓主送的《利用Python進行數據分析》一書非常欣喜,在這裏感謝樓主! 書籍是從京東送來的,因而萌生了一個想法,打算從京東上爬取用戶的評論,看看用戶對該書的大體評價(雖然我知道這本書是很實用的,確定大多好評)並嘗試作一些分析,看還有沒有什麼有趣的現象~~python

要點:
用到的庫:
pandas,numpy,requests,jieba,wordclould
工具:
Pycharm/Spyder
Python:3.6正則表達式

1.爬蟲對象瀏覽器


上京東搜索了一下,彈出了好多的商品,要找確定就找那個評論數最多的,有4600+條評論,足夠來分析了.
【實戰好文】|爬取京東書籍評論並分析
2.網頁分析微信


和大多數狀況同樣,能夠先利用瀏覽器的開發者工具,對網頁的元素進行查看,看評論區是放在哪裏,以便咱們爬蟲。因而通過一番觀察,發現了這個:
【實戰好文】|爬取京東書籍評論並分析iphone

  • 哈哈,太簡單了吧,評論都是在<dic class=」p-commnet」></div>裏面,因而二話不說,立刻代碼寫起來,通過一番正則匹配,確認再三無誤後,獲得的結果倒是空的,究竟怎麼回事
  • 正則表達式確定沒錯呀,就那麼點(由於這裏得不到結果,就不貼上代碼了)原來被京東給騙了,京東商品評論信息是由JS動態加載的,因此直接抓取商品詳情頁的URL並不能得到商品評論的信息
  • 所以須要先找到存放商品評論信息的文件,那麼該如何查看呢?咱們能夠從js那裏找到相關文件,而後從中獲取一個真正的URL.
    【實戰好文】|爬取京東書籍評論並分析

點進去,能夠看到這個:ide

【實戰好文】|爬取京東書籍評論並分析

這個URL纔是咱們要找的,那麼第二頁的評論又是怎麼樣的URL,一樣的,咱們看一下相關的js文件,能夠看到:
【實戰好文】|爬取京東書籍評論並分析工具

發現不一樣頁數的評論只需改一下page後面的數字就好了(這裏從0開始),複製後打開是這樣的:
【實戰好文】|爬取京東書籍評論並分析學習

3.爬蟲過程3d


接下來就要開始爬蟲了,評論一共4600+,每一頁是10條,我這裏一共爬了400頁的評論,大概是4000條。由於原始URL較長,我把它拆成3部分,並設置了每次爬取後休眠0.2秒,爬取過程也不算複雜,直接上代碼:

【實戰好文】|爬取京東書籍評論並分析
這裏爬完後我直接寫入了TXT文件裏,下次再用就不用爬取了,直接讀取文件就行,省點時間。爬取結果是一個接近6M的txt文件.

4.評論信息可視化


1).此次爬蟲目的,是想要獲取用戶的評論信息.
那麼首先先來看看評論中的主要關鍵詞都有什麼,這裏將會用結巴分詞來處理,而且會進行詞雲可視化。先從以前的文件中讀出數據,並用正則表達式獲取咱們要的評論信息:

html=open("JD_spider.txt",encoding='gb18030').read()
print (html)

2).過濾數據
這裏不展現初次篩選的結果,可是這裏的輸出裏面還有些「雜質」,包含了一些img字段的,因而要二次處理,並放入列表中:

【實戰好文】|爬取京東書籍評論並分析
而後就能夠用結巴分詞來獲取評論中的關鍵詞了:
【實戰好文】|爬取京東書籍評論並分析
看一下結果:

{'不錯': 0.40207175434791953, 'Python': 0.16516135518025193, '數據分析': 0.14994788647273546, '京東': 0.12511940634626167, 'hellip': 0.09666796964961805, '學習': 0.09155126893924828, 'python': 0.09132451404084518, '好書': 0.08208335052285655, '本書':
...
0.040101087416086145, '入門': 0.037098712017513205, '物流': 0.03442644384797887, '實用': 0.03373438604258838, '快遞': 0.03260293097472572, '經典': 0.0324224192260768, '速度': 0.0321156918440187, '東西': 0.03161500710010808}

若是以爲這樣的話很差看,咱們能夠圖像化,在此基礎上進行詞雲可視化
【實戰好文】|爬取京東書籍評論並分析

【實戰好文】|爬取京東書籍評論並分析

5.其餘數據可視化


京東的商品評論中包含了不少其餘有用的信息,接下來將要把這些信息從頁面代碼中提取出來,整理成數據表以便進行後續的分析工做.

1).正則對每一個字段進行提取
對於特殊的字段在經過替換等方式進行提取和清洗,先從文本讀出數據,而後在進行匹配:
【實戰好文】|爬取京東書籍評論並分析

2).保存數據爲dataframe
而後咱們將其綜合爲一個dataframe,方便後面的分析
【實戰好文】|爬取京東書籍評論並分析

3).幾個有趣的分析圖
限於篇幅,我列出了一部分可視乎分析的圖,具體的細節能夠看文末的源碼
【實戰好文】|爬取京東書籍評論並分析
從圖中能夠直接讀出,16年11月份達到了最高值,是該書評論最多的一個月份,是否是和雙11的降價有關呢?雖然這裏的評論數不等同於銷量,但多少應該是有所聯繫的.
【實戰好文】|爬取京東書籍評論並分析

不難看出,在同等的時間段裏,客戶端的使用都要高於PC端。這個能夠理解,由於手機確實比在電腦上評論方便得多,隨時隨地均可以在手機評論,購買。

【實戰好文】|爬取京東書籍評論並分析

從用戶客戶端分佈狀況來看,其中使用Android的用戶要高於iphone用戶。因爲微信購物和QQ購物在原始數據中單獨被分了出來,沒法肯定使用設備型號,所以只能單獨進行對比。使用微信購物渠道的用戶要高於QQ購物,這點也符合當下狀況

結論:來自小鄭同窗


  • 終於寫完了,雖然顯示了有2000+的文字,前先後後也是花了幾天的時間,但我仍是以爲又不夠好的地方,多是來自於爬取到數據,多是來自於處理的過程,也多是分析的結論,但願能拋磚引玉,獲得你們的指點。

  • 在寫這篇文章過程當中,《利用Python進行數據分析》真的給我不少的幫助(畫圖,數據重採樣等等),我十分建議想學習數據分析的同窗,應該讀一讀這本書
  • 另外,我也建議你們有時間多寫寫文章,記錄下知識點,由於在這個過程當中,我體會到一點就是,當你寫下來的時候,你每每會學到更多的東西,把知識理解得更透徹
相關文章
相關標籤/搜索