夏志富,王晗璐,李玉平,曹 磊,夏 斌
(1. 上海海事大學(xué) 信息工程學(xué)院,上海 201306; 2. 同濟大學(xué) 電子與信息工程學(xué)院,上海 201804)
?
基于Django框架的智能商務(wù)監(jiān)控系統(tǒng)的設(shè)計*
夏志富1,王晗璐1,李玉平1,曹磊2,夏斌1
(1. 上海海事大學(xué) 信息工程學(xué)院,上海 201306; 2. 同濟大學(xué) 電子與信息工程學(xué)院,上海 201804)
摘要:隨著電子商務(wù)的迅速發(fā)展,商品在電商平臺的排名變化信息愈來愈受到大家的關(guān)注。市場上現(xiàn)有的排名查詢工具主要是基于C/S構(gòu)架,因為電商平臺的變化,需要頻繁更新軟件,使用較為不便。為了方便用戶對商品排名信息的查詢設(shè)計出一種基于B/S框架的排名查詢工具。該工具實現(xiàn)了同一商品的多關(guān)鍵詞實時排名查詢,并且能夠讓用戶自定義產(chǎn)品監(jiān)控列表并對列表中的產(chǎn)品排名變化情況進行長期監(jiān)控。本系統(tǒng)構(gòu)架采用Django來設(shè)計,主要功能采用Python 2.7 語言來開發(fā),云端采用穩(wěn)定便捷的亞馬遜公司的AWS云計算平臺進行服務(wù)器端的部署和搭建,經(jīng)過上線測試后發(fā)現(xiàn)系統(tǒng)達到了良好的效果。
關(guān)鍵詞:電子商務(wù); 爬蟲; 文本相似度; 云計算
引用格式:夏志富,王晗璐,李玉平,等. 基于Django框架的智能商務(wù)監(jiān)控系統(tǒng)的設(shè)計[J].微型機與應(yīng)用,2016,35(12):21-23,27.
0引言
電子商務(wù)的興起促進了跨境貿(mào)易的發(fā)展,作為當(dāng)前最流行的跨境電商平臺,阿里巴巴擁有數(shù)量龐大的用戶群體,約有40萬家電子商務(wù)公司入駐阿里巴巴平臺。平臺上每家公司商品的銷量與其商品在阿里平臺上的排名情況緊密相連。商品排名越靠前,關(guān)注度就越高,銷量就會更好。因此提升商品排名是提升銷量的重要手段。
目前關(guān)于阿里國際站的產(chǎn)品排名查詢工具主要有兩類,一類是阿里后臺提供的排名查詢工具,但這個工具只能一次查詢一個關(guān)鍵詞,使用起來不太方便而且沒有自定義關(guān)鍵詞查詢排名功能。另外一類就是由第三方公司提供的排名查詢工具,但主要是C/S構(gòu)架,需要安裝客戶端軟件。因為阿里巴巴服務(wù)器經(jīng)常會有變化,所以客戶端軟件也需要經(jīng)常更新,給用戶使用過程中帶來不便。并且此類軟件不具備長期追蹤產(chǎn)品排名變化的功能,公司不能及時了解自己商品排名變化情況。因此本文設(shè)計了一個基于B/S構(gòu)架的產(chǎn)品排名查詢及監(jiān)控系統(tǒng),用戶通過瀏覽器登錄本系統(tǒng)就可以進行商品排名查詢,并且可以長期追蹤商品排名變化情況。
1系統(tǒng)設(shè)計
1.1系統(tǒng)架構(gòu)
系統(tǒng)基于Django架構(gòu)[1]的MVC模式:分為Model層、View層、Control層,將業(yè)務(wù)邏輯、顯示邏輯和數(shù)據(jù)邏輯以低耦合、高復(fù)用的形式展現(xiàn)出來,便于系統(tǒng)后期的擴展和維護。
在View層,利用Django自帶的模板系統(tǒng)[2]跟前端開源框架Bootstrap結(jié)合,增強用戶的交互體驗和提高前端頁面開發(fā)效率。在Model層,系統(tǒng)采用MySQL關(guān)系型數(shù)據(jù)庫,并利用Django的ORM機制將MySQL中的數(shù)據(jù)以對象接口的方式進行封裝,極大方便了數(shù)據(jù)的查詢和操作。在Control層,系統(tǒng)控制器通過分析請求、邏輯判斷、模型操作以及重定向視圖等將整個系統(tǒng)業(yè)務(wù)流串聯(lián)起來。系統(tǒng)結(jié)構(gòu)及邏輯流程如圖1所示。
圖1 系統(tǒng)組成結(jié)構(gòu)及邏輯流程圖
1.2系統(tǒng)功能結(jié)構(gòu)
該系統(tǒng)功能主要分為三個部分。
(1)顯示邏輯模塊
系統(tǒng)前端靜態(tài)頁面利用前端開源框架Bootstarp實現(xiàn),里面內(nèi)置了豐富的CSS樣式庫,可以快遞開發(fā)優(yōu)美的頁面。系統(tǒng)動態(tài)頁面采用Javascript開源框架Jquery實現(xiàn),能夠很方便地操控鼠標(biāo)點擊事件和后臺數(shù)據(jù)的異步傳輸。
(2)業(yè)務(wù)邏輯模塊
用戶注冊登錄后輸入商品名稱就可以直接檢索出該商品對應(yīng)的3個關(guān)鍵詞,并可以在下拉框中選擇備選商品,或者刪除備選商品。當(dāng)用戶輸入商品名發(fā)生錯誤時可以通過糾錯機制告知用戶,并利用相似度算法[3]自動從數(shù)據(jù)庫中匹配出最相近的商品名,減少用戶輸入時間。在批量導(dǎo)入查詢模塊中,用戶可以上傳txt格式的待查詢商品名文件,系統(tǒng)會自動檢索出其排名結(jié)果,并以Excel格式供用戶下載查看。在管理產(chǎn)品頁面中,用戶可以添加和刪改監(jiān)控的商品并觀察商品排名的變化趨勢,可以按時間段選擇商品在指定日期的排名變化情況。
(3)數(shù)據(jù)邏輯模塊
通過后臺Celery定時任務(wù)設(shè)定閑時爬取數(shù)據(jù)[4],定期自動地通過多線程并發(fā)更新數(shù)據(jù),并在后臺服務(wù)器計算好商品排名的變化情況,以便用戶可以立即從數(shù)據(jù)庫中調(diào)取數(shù)據(jù)查看,無需等待時間。
1.3數(shù)據(jù)處理流程
在查詢頁面中進行商品查詢時,如果用戶是首次查詢某個商品則系統(tǒng)進行實時商品排名查詢,并將排名信息存入數(shù)據(jù)庫。這些信息被保存下來以后,系統(tǒng)后臺設(shè)置了每天定時任務(wù),會在設(shè)定的時間閑時爬取數(shù)據(jù)以更新排名和排名變化情況。當(dāng)用戶輸入以前查詢過的商品名時就可以直接從數(shù)據(jù)庫中調(diào)取其排名和排名變化數(shù)據(jù),這樣可以減少服務(wù)器在同一時間的壓力,提升系統(tǒng)查詢的響應(yīng)速度。系統(tǒng)數(shù)據(jù)處理流程圖如圖2所示。
圖2 系統(tǒng)數(shù)據(jù)處理流程圖
2系統(tǒng)實現(xiàn)
2.1獲取數(shù)據(jù)資源
網(wǎng)絡(luò)爬蟲是獲取數(shù)據(jù)最快速有效的方法,是構(gòu)建搜索引擎最重要的組成部分之一,通過對阿里國際站點爬蟲獲取數(shù)據(jù)是該系統(tǒng)構(gòu)建的基礎(chǔ)。
本系統(tǒng)獲取商品數(shù)據(jù)分為以下流程。
(1)通過用戶輸入的商品名在數(shù)據(jù)庫中檢索出其對應(yīng)的關(guān)鍵詞,根據(jù)其關(guān)鍵詞匹配出對應(yīng)搜索結(jié)果的URL列表集合。
(2)通過Python多線程爬蟲[5]獲取到URL列表集合對應(yīng)的網(wǎng)頁源代碼,并對每個網(wǎng)頁源代碼打好標(biāo)記后裝載于queue隊列中,以便后面將數(shù)據(jù)以原順序展示出來。
(3)取出queue隊列里的網(wǎng)頁源代碼,并使用Xpath解析工具通過多線程方式去解析網(wǎng)頁源代碼得到商品數(shù)據(jù)列表,然后通過原先打好的標(biāo)記對商品數(shù)據(jù)列表按照原網(wǎng)頁索引排序,最終得到以原順序輸出的商品列表,最后通過列表索引計算排名。
2.2數(shù)據(jù)庫設(shè)計
圖3 系統(tǒng)外鍵關(guān)聯(lián)表關(guān)系圖
系統(tǒng)中利用Django ORM對象設(shè)定表之間的外鍵關(guān)聯(lián),建立好數(shù)據(jù)之間的從屬關(guān)系,從而方便通過條件篩選出對應(yīng)的數(shù)據(jù)。本系統(tǒng)創(chuàng)建了8個數(shù)據(jù)表,主要通過loginuser(用戶信息表)和middleuser(查詢中間鍵表)作為橋梁與其他數(shù)據(jù)表建立外鍵關(guān)聯(lián)。通過loginuser表與其他表關(guān)聯(lián)使得用戶的查詢和數(shù)據(jù)信息管理可以通過外鍵把數(shù)據(jù)獨立起來,形成以每個用戶為單元的數(shù)據(jù)塊,以便于信息的維護和查詢速度的優(yōu)化。通過middleuser表和其他表的關(guān)聯(lián)可以使得用戶的下拉輸入框查詢變得容易處理,減少了前端javascript的交互邏輯,并且能夠記錄好用戶備選框中已經(jīng)添加了但還未得到查詢結(jié)果的商品列表,方便用戶下次直接一鍵查詢。
圖4 系統(tǒng)測試樣例圖
系統(tǒng)的外鍵關(guān)聯(lián)表關(guān)系圖如圖3所示。
2.3基于TF-IDF算法的相似度糾錯檢測
2.3.1TF-IDF算法的原理
TF-IDF(Term Frequency-Inverse Document Frequency)是一種用于信息搜索和信息挖掘的常用加權(quán)技術(shù)[3]。TF-IDF模型的主要思想是:用一個具有很強區(qū)分能力的詞w將文章d與其他文章區(qū)分開來,該詞必須具備以下條件:在d文章中有很高的出現(xiàn)頻率并且該詞在其他文檔中較少出現(xiàn)。該模型主要包含了兩個因素:
(1)詞w在文檔d中的詞頻TF(Term Frequency),即詞w在文檔d中出現(xiàn)次數(shù)count(w,d)和文檔d中總詞數(shù)size(d)的比值:
tf(w,d)=count(w,d)/size(d)
(1)
(2)詞w在整個文檔集合中的逆向文檔頻率idf (Inverse Document Frequency)[6],即文檔總數(shù)n與詞w所出現(xiàn)文件數(shù)docs(w,D)比值的對數(shù):
idf=log(n/docs(w,D))
(2)
查詢串q與文檔d的匹配度可以由一個權(quán)重表示,該權(quán)重是通過tf-idf模型為每一個文檔d和由其關(guān)鍵詞w[1]…w[k]組成的查詢串q計算出來的:
tf-idf(q,d)
=sum{i=1..k/tf-idf(w[i],d)}
=sum{i=1..k/tf(w[i],d)*idf(w[i])}
(3)
2.3.2相似度檢測的實現(xiàn)
系統(tǒng)利用Python自然語言處理中的開源框架Gensim可以對文本進行分詞,再對分詞進行向量化處理并自動提取特征,利用這些向量化特征構(gòu)建TF-IDF算法的模型從而計算出兩個文本之間的余弦夾角[7],夾角越小則相似度越高。按照此原理把用戶輸入的商品名與該用戶對應(yīng)的店鋪所有商品名進行TF-IDF算法的相似度對比,對比值放在列表中,取出其最大值,則可得到相似度最大的商品名,實現(xiàn)了用戶的糾錯檢測功能。
3系統(tǒng)測試
通過上線測試和每天監(jiān)控商品排名數(shù)據(jù)的變化情況,發(fā)現(xiàn)系統(tǒng)達到了預(yù)期效果。后臺定時爬蟲任務(wù)的數(shù)據(jù)能夠保證每天的更新,并且正常穩(wěn)定運行。數(shù)據(jù)能夠準(zhǔn)確地反映真實商品的排名情況,并且能夠計算出每天的商品排名變化,通過手動方式查詢對比符合真實情況的排名變化結(jié)果。系統(tǒng)部分測試效果如圖4所示。
4結(jié)論
通過將商品數(shù)據(jù)自動抓取下來,并利用Django框架開發(fā)出一個智能化的商品排名監(jiān)控系統(tǒng),能有效監(jiān)控商品排名及其變化趨勢,大大節(jié)約了眾多店鋪商的手工查詢時間,幫助他們實現(xiàn)更好的收益。本文利用互聯(lián)網(wǎng)技術(shù)簡化了電子商務(wù)平臺上的繁雜性工作,并把相似度算法應(yīng)用于用戶輸入檢測,便于輸入信息的檢索,實現(xiàn)了商務(wù)數(shù)據(jù)監(jiān)控的智能化。本系統(tǒng)能夠?qū)惩怆娚藤Q(mào)易者提供極大的便利,有很強的應(yīng)用價值。
參考文獻
[1] 柴慶龍, 謝剛, 陳澤華, 等. 基于Django框架的故障診斷和安全評估平臺[J].電子技術(shù)應(yīng)用, 2015,43(4):19-21.
[2] 王曉斌,閆果,基于Django開發(fā)的橋梁健康監(jiān)控數(shù)據(jù)查詢的Web應(yīng)用[J].電子技術(shù)與軟件工程,2009,24(4):23-24.
[3] XU W, CALLISON-BURCH C, DOLAN W B. SemEval-2015 task 1: Paraphrase and semantic similarity in Twitter (PIT)[C].Proceedings of the 9th International Workshop on Semantic Evaluation (SemEval), 2015.
[4] DETTINGER R D, KOLZ D P, STEVENS R J, et al. Automated data model extension through data crawler approach[P]. US: US8165989, 2012.
[5] SINGHAL N, DIXIT A, SHARMA A K. Design of a priority based frequency regulated incremental crawler[M]. LAP LAMBERT Academic Publishing, 2014.
[6] ROUL R K, DEVANAND O R, SAHAY S K. Web document clustering and ranking using TF-IDF based Apriori Approach[J]. arXiv Preprint arXiv,2014,10(1):55-56.
[7] 申劍博. 改進的TF-IDF中文本特征詞加權(quán)算法研究[J]. 軟件導(dǎo)刊, 2015,32(4):16-18.
*基金項目:上海市科學(xué)技術(shù)委員會資助項目(14441900300);國家自然科學(xué)基金(61550110252);同濟大學(xué)嵌入式系統(tǒng)與服務(wù)計算教育部重點實驗室開放課題
中圖分類號:TP391.9
文獻標(biāo)識碼:A
DOI:10.19358/j.issn.1674- 7720.2016.12.008
(收稿日期:2016-01-28)
作者簡介:
夏志富(1992-),男,碩士研究生,主要研究方向:云計算與智能信息處理。
王晗璐(1992-),女,碩士研究生,主要研究方向:機器學(xué)習(xí)與智能信息處理。
李玉平(1990-),男,碩士研究生,主要研究方向:腦電信號與睡眠數(shù)據(jù)研究。
The design of intelligent business monitoring system based on the Django framework
Xia Zhifu1,Wang Hanlu1,Li Yuping1,Cao Lei2,Xia Bin1
(1. College of Information Engineering, Shanghai Maritime University, Shanghai 201306, China;2. College of Electronics and Information Engineering, Tongji University,Shanghai 201804, China)
Abstract:With the rapid development of e-business, the changing information of the rank of the commodities becomes more and more important. The existing ranking query tools are mainly based on C/S architecture. Because of the change of the e-commerce platform, users need to frequently updated software, which brings much inconvenience. To provide a convenience query tool for the users, we developed a B/S framework based query tool, which is able to query multi-keywords of one commodity at same time. It allows user to manage the product list and support long term morning for the ranking information. The system architecture is designed with Django and the programming language is Python 2.7. The Amazon’s AWS Cloud computing platform is used as Cloud server in this system. After deployed on AWS, the online test result shows that the proposed system achieved all objectives with good performance.
Key words:e-business; the crawler; text similarity; Cloud computing