999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Scrapy的電商數據分析系統設計與實現

2020-06-13 07:43:26李依潼王驥任肖麗
電子技術與軟件工程 2020年2期
關鍵詞:可視化數據庫用戶

文/李依潼 王驥 任肖麗

(廣東海洋大學電子與信息工程學院 廣東省湛江市 524088)

1 引言

電子商務的興起促進了商業模式變革,物聯網、云計算的出現推動信息爆發式增長,這是電商時代,亦是大數據時代,如何利用海量信息產生更多效益,成為商業競爭的核心[1][2]。獲取有效數據是大數據研究的重點,網絡爬蟲技術是獲取互聯網海量數據的關鍵手段之一。

網絡爬蟲是對不同網頁進行下載和分析,經過存儲、相關度計算、排序,再將關鍵詞展現到用戶面前[1]。本文以爬取京東購物網站網頁數據為例,設計一個基于Scrapy框架的數據分析系統。在Python 3.7編程語言的Scrapy框架下搭建Web爬蟲,爬取京東網站搜索結果前兩頁商品信息、總體評價和每件商品前20頁評論,然后采用MongoDB實現持久化數據存儲,再利用Python生態的Numpy、Pandas數據處理工具包對數據進行清洗、轉換、分組、計算,最終基于Matplotlib實現分析結果可視化。通過反饋回的商品信息與解析結果,為商家制定個性化的營銷策略提供依據。

2 關鍵技術

2.1 Web爬蟲

爬蟲也稱網絡信息爬取技術,通過網頁鏈接地址URL向服務器發送請求獲取網頁信息內容。Web 爬蟲

是一個自動訪問的互聯網程序,用來檢索Web頁面、提取必要信息、存入本地數據庫[3]。

網絡爬蟲基本工作流程如下[4]:

(1)選取精心挑選的種子URL;

(2)將種子URL放入待抓取URL隊列;

(3)從待抓取URL隊列取出待抓取URL,DNS解析后得到目標主機Ip;

(4)下載URL對應的網頁并存儲進已下載的網頁庫中。同時,將這些URL放進已抓取URL隊列;

(5)分析已抓取URL隊列中的URL,獲取必要的數據存入數據庫;

(6)分析其他URL,將URL放入待抓取URL隊列,進入下一個循環。

2.2 Scrapy

Scrapy框架是使用Python開發的一種快速、開源的爬蟲程序,可在運行在Windows、Linux等多種主流操作平臺,采用基于Twisted的下載器,提供了豐富的中間接口及較強的目錄約束,編寫代碼清晰、可擴展性好、可移植性強、可維護性高,用戶只需在Scrapy 框架基礎上定制開發模塊即可實現高效的爬蟲應用[5][6]。Scrapy框架由調度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)、實體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)五大組件構成。爬蟲執行流程如下[7][8]:

表1:工程目錄下文件和文件夾作用

圖1:系統整體架構

(1)Spiders將待爬取網頁URL經Scrapy Engine交給Scheduler;

(2)Scheduler處理后經Scrapy Engine和Downloader Middleware交給Downloader;

(3)Downloader向Internet發送請求,接收Response,將Response經Scrapy Engine和Scrapy Middelwares交給Spiders;

(4)Spiders處理提取Response后經Scrapy Engine交給Pipeline保存;

(5)提取URL重復上述步驟,直到無URL請求或達到停止條件。

2.3 數據處理及可視化

數據清洗和處理采用Numpy和Pandas兩個庫,NumPy是Python科學計算的基礎包,作為算法和庫之間傳遞數據的容器,它提供了快速數組處理能力;Pandas能夠進行復雜精細索引,它提供了大量處理結構化數據的函數,更加便捷地完成重塑、切塊、聚合、選取數據子集等操作[9][10]。

數據可視化使用Matplotlib圖形庫,它是用Python 語言編寫的二維圖形庫,充分利用了Python簡潔優美和面向對象的特點,便于繪出直方圖、功率譜、條形圖、散點圖等,Matplotlib提供的相關API,使得圖表可以嵌入Tkinter畫布中。Matplotlib繪制的圖形使用Python標準Tk GUI工具包接口分析數據,再利用Tkinter庫編寫程序的GUI,即可實現數據的可視化呈現。

2.4 數據庫

爬蟲獲取的數據不包含復雜關系,且數據模型經常變動,因此相較于傳統的關系型數據庫,本文選取非關聯數據庫MongoDB。MongoDB是由C++編寫的基于分布式文件存儲的數據庫,支持數據結構松散,查詢語言功能強大,可以存儲復雜的數據類型。同時,MongoDB使用集合的概念存儲數據,不會過多檢測約束關系及數據合法性,存取效率高,對于Web中IO密集型的數據源優勢巨大。

3 系統設計

3.1 系統總體架構

系統主要包括數據來源的爬蟲模塊及數據處理與可視化模塊。首先啟動Scrapy爬蟲對目標網站進行爬取,Piplines接收數據并存儲在MongoDB數據庫中。啟動數據處理和可視化GUI程序,啟動后彈出窗口包含三個頁面,分別是商品總體數據、用戶數據和商品列表頁。商品總體數據展示品牌占比、不同價位的評論分布情況、同類型商品描述詞頻;用戶數據展示用戶身份、用戶下單設備等;列表頁展示爬取到的商品分析數據,雙擊會彈出好評、中評、差評占比,不同時間段的評論分布,用戶情感詞云,評論詞頻。系統總體架構如圖1所示。

3.2 爬蟲模塊

3.2.1 項目初始化

選取京東網站作為爬取目標,用scrapy startproject

JD_Spider生成爬蟲項目,項目根目錄為JD_Spider。在根目錄下創建表1所示的文件或文件夾。

3.2.2 數據實體模型

Scrapy需建立實體模型來描述爬取數據[11]。設計的實體模型包括商品信息模型、店鋪信息模型及評論信息模型。其中商品信息模型描述商品名稱、品牌、價格; 店鋪信息模型描述店鋪名、店鋪ID; 評論信息模型描述評論內容、評論時間。MongoDB允許不同集合間出現關聯關系,使得數據庫存儲結構清晰,模型關系如圖2所示。

3.2.3 爬取策略制定

京東評論數量和商品數量巨大,本文只爬取部分數據,爬取最大頁數通過settings.py設置,每次爬取完一個頁面page+1。爬取商品搜索結果時,提取訪問詳情頁URL,使用Ajax技術加載商品評論及整體評價,讓爬蟲向對方服務器發送請求,得到數據反饋后再提取數據。

3.2.4 反爬蟲處理機制

提高爬取成功率需讓爬蟲模擬瀏覽器行為。瀏覽器每次向服務器發送請求時會攜帶User-Agent頭部信息,在middlewares.py文件的中間件內部定義一個包含常用瀏覽器信息的數組:

圖2:爬蟲數據模型關系

圖3:爬蟲執行流程

隨后在中間件鉤子函數process_request中,使用隨機取值方法取出一個列表項,通過request對象設置請求頭,最后在settings.py設置啟用該中間件,即可使爬蟲模擬瀏覽器。當訪問商品詳情頁時,服務器會檢測Referrer請求頭,該請求頭值為跳轉詳情頁之前的上一頁面。當請求詳情URL時,在Scrapy的Request中設置Referer為當前URL,即可以獲取商品詳情頁的數據。

為防止爬取某頁面時突然中止,將每個商品id保存到數組中,當頁面爬取完成時調用對應URL,并將id作為參數向服務器發送請求加載剩下的數據進行解析,再翻頁處理、爬取下一頁。爬蟲執行流程如圖3所示。

表2:目錄下文件和文件夾作用

圖4:界面架構

圖5:數據處理及可視化模塊運行流程

3.3 數據處理和可視化模塊

3.3.1 項目初始化

創建名為Analysis目錄文件夾,在該目錄下新建如表2所示的文件或文件夾。

3.3.2 界面設計

使用Tkinter開發界面,界面窗口包括商品整體數據、用戶數據、商品列表三部分,默認頁是商品數據頁,通過UI頂部按鈕切換。在UI主類Application中定義了一個屬性frames,數據結構為字典,然后將三個頁面存儲進字典中并讓其重疊,僅最上面可見,通過改變各頁面的z軸順序切換頁面。圖表的顯示由Tkinter畫布和Matplotlib相結合繪制。界面架構如圖4所示。

3.3.3 商品整體數據

(1)廠商占比。讀取數據庫中Products集合,由Pandas將其轉換為DataFrame,調用grouby函數按brand分組,然后對commentCount列調用sum函數求和,統計出各品牌評論總數,再處理DataFrame提取品牌(brand)和評論數(commentCount)并作為元組返回,最后通過Matplotlib在Tkinter中繪制。

(2)商品描述詞頻。統計前十的描述詞,Pandas讀取商品信息后獲取description信息并轉換為列表數據,然后使用Jieba中文分詞工具對商品描述進行精確分詞,再用Pandas將其轉換為DataFrame,調用agg并結合Numpy的size統計相關詞頻并排序,取前10結果轉換為字典返回,通過Matplotlib在Tkinter中繪制。

(3)商品評價數量隨價格變動。Pandas讀取商品數據,將price字段換為數值類型,分別統計0-1000、1000-2000、2000-3000、3000-5000、5000-6000、6000以上的評論數并返回數據,在通過Matplotlib在Tkinter中繪制。

3.3.4 用戶數據

(1)用戶身份。Pandas讀取所有評論,groupby函數按userLevelName字段分組,調用size求和統計并返回數據,通過Matplotlib在Tkinter中繪制。

(2)下單設備構成。Pandas讀取評論后按userClient

Show字段分組,占比小于1%的字段相加,歸為Others并返回數據,通過Matplotlib在Tkinter中繪制。

3.3.5 商品列表

(1)商品列表顯示。Tkinter的treeview組件從數據庫讀取商品數據顯示在列表中,列表添加雙擊事件,事件觸發時顯示對該商品的數據可視化。

(2)好、中、差評占比。從數據庫中讀取數據并返回,通過Matplotlib在Tkinter中繪制。

(3)評論數量隨時間變動。Pandas讀取數據后轉換為datetime對象,再轉化成year-month形式,按時間分組排序返回數據,通過Matplotlib在Tkinter中繪制。

(4)評論詞頻和詞云。Pandas讀取評論內容后轉化為list,Jieba對評論精確分詞,排除停用詞并統計詞頻返回,在main.py文件中調用函數得到詞頻,選出排名前十的詞繪制詞頻統計表。詞云使用WordCloud讀取詞頻,將詞云顯示出來。

數據處理和可視化模塊工作流程如圖5所示。

4 系統功能測試和市場分析

4.1 爬蟲測試

settings.py設置關鍵詞為“手機”,最大商品頁數為2,最大評論頁數為20。排除預約階段的產品,啟動爬蟲等待一段時間,爬蟲運行完畢打開MongoDB可視化工具,連接數據庫找到爬蟲保存的數據。抓取到的商品數量為46個,評論數量為9800條,店鋪數量為18家。該結果對于設置最大頁數2頁、最大評論頁數20頁、排除部分預約商品而言完全符合預期。

4.2 市場分析

4.2.1 商品整體數據分析

爬蟲執行完成后,數據庫已存在必要數據,設置好待連接的數據庫,啟動程序顯示商品數據的可視化分析。圖6分別為前兩頁廠商評論數占比和商品描述詞頻。分析可見,Apple、華為、小米占據了銷售前三甲,手機網絡、機身、拍照功能、內存和配置是廠商宣傳的賣點。

圖6:廠商評論占比及商品描述詞頻

4.2.2 用戶數據分析

抓取的9800條評論中,數量最大的是PLUS會員。PLUS會員是京東推出的會員服務,這類用戶注重購物體驗,常購物且更樂于發表評論。評論用戶身份組成如圖7所示。

4.2.3 單一商品數據分析

切換到商品列表頁,買家評論和評論趨勢是評論數據中的重要信息。以華為P30為例,雙擊該記錄,彈出該商品的數據可視化圖表如圖8所示。分析可見,用戶非常認可這款產品,好評率達98.1%,差評1.2%;評論數在2019年8-10月最高,一定程度反映商品發布幾個月后打折促銷,銷量較高。

商品詞頻和詞云反映用戶體驗,如圖9所示。分析可見,用戶體驗主要體現在系統流暢度、外觀、信號方面。

圖7:評論用戶身份組成

圖8:評論占比及高品評論變化趨勢

圖9:評論詞頻和用戶印象詞云

5 結束語

數據是企業無形的競爭力,大數據處理已彰顯不可估量的價值。本文基于爬蟲技術,以京東網站的手機數據作為數據源,采用Python語言下Scrapy框架開發爬蟲程序,爬取數據存入非關聯數據庫MongoDB,通過實例演示數據挖掘并將數據以直觀、易讀的方式可視化呈現。一方面可以讓消費者直觀享受消費過程,另一方面幫助銷售商提煉用戶信息、把控用戶喜好、培養用戶習慣,實現精準營銷。

猜你喜歡
可視化數據庫用戶
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
基于CGAL和OpenGL的海底地形三維可視化
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 一级毛片免费高清视频| 2020国产精品视频| 国产91久久久久久| 亚洲伦理一区二区| 一级毛片免费不卡在线| 青青国产视频| 国产丰满大乳无码免费播放| 精品久久久久久中文字幕女| 伊人色综合久久天天| 国产欧美日韩91| 日本欧美视频在线观看| 国产精品99一区不卡| 亚洲欧洲日韩久久狠狠爱 | 欧美成人精品在线| 91免费在线看| 色婷婷成人| 亚洲天堂精品在线| 亚洲欧洲一区二区三区| 日韩午夜片| 中文毛片无遮挡播放免费| 亚洲乱亚洲乱妇24p| 国产va视频| 四虎精品黑人视频| 欧美另类第一页| 小说区 亚洲 自拍 另类| 91亚洲精选| 97视频在线精品国自产拍| 99热这里只有精品在线播放| 欧美天天干| 久久成人18免费| 久久精品无码国产一区二区三区| 亚洲日本精品一区二区| 曰AV在线无码| 麻豆AV网站免费进入| 青青青视频免费一区二区| 五月婷婷精品| 国产精品第| 国产精品九九视频| 日本亚洲国产一区二区三区| 亚洲女同欧美在线| 一边摸一边做爽的视频17国产 | 蜜桃视频一区| 欧美性精品| 国产一级做美女做受视频| 国产伦精品一区二区三区视频优播| 凹凸国产分类在线观看| 伊人久久综在合线亚洲2019| 国产日本视频91| 亚洲欧美日韩成人在线| 亚洲精品日产AⅤ| 欧美黑人欧美精品刺激| 国产亚洲欧美日韩在线一区| 亚洲色偷偷偷鲁综合| 亚洲人成影视在线观看| 毛片免费网址| 日日噜噜夜夜狠狠视频| 国产精品第页| 国产精品护士| 精品伊人久久大香线蕉网站| 国产精品午夜福利麻豆| 精品91视频| 天天色天天操综合网| 国产一区二区三区在线精品专区| 日韩精品亚洲精品第一页| 人妻一区二区三区无码精品一区| 爱做久久久久久| 不卡国产视频第一页| 亚洲综合久久一本伊一区| 免费看的一级毛片| 青青草91视频| 国产日韩欧美中文| 第九色区aⅴ天堂久久香| 亚洲精品va| 色婷婷亚洲综合五月| 67194亚洲无码| a级高清毛片| 超薄丝袜足j国产在线视频| 国内精品九九久久久精品| 国产精品yjizz视频网一二区| 亚洲精品午夜无码电影网| 久久精品国产国语对白| 欧美精品影院|