孫建言 馬雨欣 武文杰


摘要:通過Python和Scrapy框架的使用,實現了一個對電商商品和商品評價信息的爬取系統,文中詳細地介紹了該系統的設計過程,能夠完成需求中的功能,并且對所有爬取下來的數據進行了分析,對商品的不同品牌各類信息進行比對。
關鍵詞:網絡爬蟲;Python;數據分析
中圖分類號:G434? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)26-0061-03
開放科學(資源服務)標識碼(OSID):
Abstract: Through the use of Python and Scrapy framework, a crawling system for commercial mobile phone products and commodity evaluation information is realized. The design process of the system is introduced in detail, which can complete the functions in demand. All the crawled data are analyzed and the information of different brands of products is compared.
Key words: network crawler; Python; data analysis
1 引言
近年來,隨著電商行業的興起和物流產業的飛速發展,人們網上購物日益普遍。電商平臺商品琳瑯滿目良莠不齊,加上商家往往夸大商品效果,甚至采用刷單手段增加商品人氣,往往造成消費者不能理性選擇優質商品。
人們早已意識到互聯網中的數據是有待開采的巨大金礦,這些數據將會改善我們的生活,網絡爬蟲的出現以及相應人才的增多正是基于對數據價值的重視。目前已經存在很多基于網絡爬蟲的比貨網站,但大多數都只是爬取商品的參數的比較,難以站在消費者的角度上去比較商品之間的優劣。
本課題目的是通過爬蟲技術,使得在電商購買商品時能從各參數和用戶體驗方面給消費者一個客觀、可靠、可信的購機推薦。
2 關鍵性開發技術
2.1 Python
Python是一種開源的面向對象的腳本語言。Python由于其易理解性、易讀性以及簡潔性,以及對云計算、大數據與人工智能開發有很好的支持,因此越來越受到大眾的喜歡。它的代碼重用性很高,Python的模塊庫龐大到恐怖,幾乎無所不包。因此,沒有特殊要求的網絡爬蟲,最好選擇使用Python。
2.2 Scrapy
Scrapy是一個使用Python語言編寫的開源網絡爬蟲框架,目前由Scrapinghub Ltd維護。Scrapy具有簡單易用、靈活易拓展、開發社區活躍,并且是跨平臺的等優點。在Linux、MaxOS以及Windows平臺都可以使用。Scrapy是Python語言下最流行的網絡爬蟲框架,開發者只需要對幾個特定的模塊進行開發就能寫出一個穩定高效的網絡爬蟲。所以本爬蟲程序選擇了這個框架。
2.3 Django
Django項目是Python語言的定制框架,它源自一個在線新聞Web站點,于2005年以開源的形式被釋放出來。Django框架的核心組件包括用于創建模型的對象關系映射、為最終用戶設計完美的管理界面、一流的URL設計、設計者友好的模板語言、緩存系統。Django鼓勵快速開發,并遵循MVC設計理念。它的主要目的是簡便、快速地開發數據庫驅動的網站。它強調代碼的復用,還有許多功能強大的第三方插件,甚至可以很方便地開發出自己的工具包,這使Django具有很強的可拓展性。
2.4? Ajax
AJAX(Asynchronous JavaScript and XML,異步JavaScript和XML)是使用JavaScript向服務器發出請求,并獲取返回信息,但是AJAX技術與傳統方式不同的是,使用AJAX不會刷新整個頁面。這種技術拓展了Web應用的功能,豐富了Web客戶端表現的能力,體現出了特別好的交互性。大型網站一般都會用這種技術。
3? 爬蟲框架分析
在從網站中提取數據時,沒有 "一刀切" 的方法。很多時候都會采取臨時方法,如果開始為執行的每個小任務編寫代碼,那么使用Scrapy框架是最佳的選擇,因為其提供了一系列方便的應用模板。
Scrapy 使用了Twisted異步網絡庫來處理網絡通訊,并從數據流的角度揭示了Scrapy工作原理,整體架構大致如圖1所示。
其中,各個組件的介紹如下表所示。
4系統整體模塊設計
各個模塊功能簡述如下:
爬蟲模塊:主要是用來爬取數據,爬取京東商城上的手機商品信息的數據,包括手機的標題、手機的品牌、手機的價格、手機的圖片鏈接、手機的參數。爬完這些信息后,接下來會對每個商品的評價的進行爬取,這里需要說明的是京東商品的評價只展示一百頁,一百頁之后就無法獲取數據了。
數據分析模塊:主要是對爬取的評論進行分析,采用了結巴中文分詞包,對評論進行分詞,再通過構造的stop字典、情感字典、程度詞字典等,對每條評論進行情感極性判斷,最終計算出每個商品積極情感率。
數據展示模塊:主要是對爬取的商品信息以及數據分析的結果和pygal對獲取的數據進行各種繪圖,最終通過ajax與django后端交互在網頁中顯示出來。
由于分析網頁評論加載方式,發現是和價格加載方式一樣,通過json接口,而各商品評論直接json接口的主要區別也在于商品的id,于是就設計了如下爬蟲方案: