Python分布式抓取和分析京東商城評價(jià)
互聯(lián)網(wǎng)購物現(xiàn)在已經(jīng)是非常普遍的購物方式,在互聯(lián)網(wǎng)上購買商品并且使用之后,很多人都會回過頭來對自己購買的商品進(jìn)行一些評價(jià),以此來表達(dá)自己對于該商品使用后的看法。商品評價(jià)的好壞對于一個商品的重要性顯而易見,大部分消費(fèi)者都以此作為快速評判該商品質(zhì)量優(yōu)劣的方式。所以,與此同時,有些商家為了獲得好評,還會做一些 “好評優(yōu)惠” 或者 “返點(diǎn)” 活動來刺激消費(fèi)者評價(jià)商品。
既然商品評價(jià)對于消費(fèi)者選購商品而言至關(guān)重要,那么我想試試可以從這些評價(jià)信息中獲取到怎樣的價(jià)值,來幫助消費(fèi)者快速獲取到關(guān)于該商品的一些重要信息,給他們的購物帶來更加可靠地保證?
所以,我認(rèn)為,一種快速、全面、高提煉度和高對比度的信息獲取和展示方式將會非常必要。 于是,我采用分布式快速抓取京東的評價(jià)信息,然后使用 pandas 對抓取到的數(shù)據(jù)進(jìn)行分析。
話不多說先附上使用地址
體驗(yàn)地址:http://awolfly9.com/jd/
想要分析京東商城的商品評價(jià)信息,那么需要做些什么呢
- 采用分布式抓取,盡量在短時間內(nèi)抓取需要分析的商品足夠多的評價(jià)信息
- 將抓取到的評價(jià)信息都存儲到數(shù)據(jù)庫
- 從數(shù)據(jù)庫中取出所有數(shù)據(jù)進(jìn)行數(shù)據(jù)分析
- 生成好評的詞云,并且獲取關(guān)鍵字
- 生成中評的詞云,并且獲取關(guān)鍵字
- 生成差評的詞云,并且獲取關(guān)鍵字
- 分析購買該商品不同顏色的比例,生成柱狀圖
- 分析購買該商品不同配置的比例,生成柱狀圖
- 分析該商品的銷售數(shù)量和評論數(shù)量和時間的關(guān)系,生成時間則線圖
- 分析該商品不同省份購買的的比例,生成柱狀圖
- 分析該商品不同渠道的銷售比例,生成柱狀圖
- 利用 Django 搭建后臺,將數(shù)據(jù)抓取和數(shù)據(jù)分析連起來
- 前端顯示數(shù)據(jù)抓取和分析結(jié)果
分布式抓取京東商城的評價(jià)信息
采用分布式抓取的目的是快速的在短時間內(nèi)盡量抓取足夠多的商品評價(jià),使分析結(jié)果更精確
- 找出評價(jià)請求 URL 規(guī)律,獲取到如下 URL 組合鏈接
- 利用 Chrome 插件 Postman 測試鏈接是否可用,發(fā)現(xiàn)京東獲取評價(jià)信息并沒有驗(yàn)證 Cookie 之類的反爬措施
- 開始編碼利用 scrapy 抓取京東商城的商品評價(jià)信息并存入數(shù)據(jù)庫以備使用
數(shù)據(jù)分析
- 從數(shù)據(jù)庫中取出相應(yīng)數(shù)據(jù),開始分析
- 使用 python 的擴(kuò)展庫 wordcloud 分別提取好評、中評、差評的關(guān)鍵字,并且生成相應(yīng)的詞云圖片
- 分析該商品不同顏色的銷量占比,并且生成柱狀圖,例如 iphone7 的不同顏色金色、玫瑰金色、銀色、黑色、亮黑色、還有***出的紅色的占比
- 分析該商品不同配置的銷量占比,并且生成柱狀圖,例如 iphone7 32G 、 64G、128G 存儲
- 分析該商品銷售和評論時間并且生成折線圖,分析出商品在什么時間最暢銷
- 分析用戶購買該商品的渠道,例如用戶通過京東 Android 客戶端、微信京東購物、京東 iPhone 客戶端購物的比例,并且生成柱狀圖
- 分析購買該商品的用戶的地域省份。例如北京、上海、廣州那個城市在京東上購買 iPhone7 的人更多
- 將以上分析結(jié)果都存儲保留
Django 后臺 WEB
使用 Django 搭建一個簡易的后臺 jd_analysis,將分布式抓取數(shù)據(jù)和數(shù)據(jù)分析連起來,并且將分析結(jié)果返回前端顯示。
- jd_analysis 提供一個接口接受用戶請求分析的京東商城商品的 URL 鏈接
- jd_analysis 接受到商品鏈接后開啟爬蟲進(jìn)程開始抓取需要分析的商品的名稱和評價(jià)數(shù)量
- 組合出完整的評價(jià)鏈接插入到 redis 中,實(shí)現(xiàn)分布式爬蟲抓取,盡可能在短時間內(nèi)抓取足夠多的該商品評價(jià)信息(我現(xiàn)在是 30s 時間大概可以抓取 3000 條評價(jià)信息)
- 主服務(wù)器等待一定的抓取時間,例如主服務(wù)器等待 30s,30s 后一定要給前端返回分析結(jié)果,所以等 30s 后清空 redis 中該商品的鏈接,從服務(wù)器沒有讀取不到需要抓取的鏈接也就自動關(guān)閉
- 開啟分析進(jìn)程,開始分析抓取到的所有數(shù)據(jù),并且生成圖標(biāo)等信息
前端展示
在客戶端***次請求時,生成一個 GUID,并且存儲在 cookie 中。然后開啟一個定時器,帶上 GUID 不斷的向 jd_analysis 后臺請求結(jié)果。jd_analysis 后臺利用請求的 GUID 從 redis 中獲取抓取信息和分析結(jié)果的所有內(nèi)容,返回給前端。前端顯示請求到的結(jié)果。
***附上兩張效果圖
購買和評論時間折線圖
購買渠道柱狀圖
大功告成
以上就是完整的抓取京東商品的評價(jià)信息并且使用 pandas 分析評價(jià)然后利用 Django 搭建后臺前端顯示抓取和分析結(jié)果的所有步驟。