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

基于電商平臺(tái)的商品歷史價(jià)格查詢系統(tǒng)的設(shè)計(jì)

2019-02-11 07:08:53歐陽瀚
時(shí)代農(nóng)機(jī) 2019年9期
關(guān)鍵詞:數(shù)據(jù)庫用戶信息

樊 闖,歐陽瀚,黃 薇,李 燕

(武昌理工學(xué)院,湖北 武漢430223)

1 系統(tǒng)設(shè)計(jì)背景

目前網(wǎng)上購物是一種極其普及的消費(fèi)模式,然而由于網(wǎng)上購物平臺(tái)的價(jià)格具有臨時(shí)性與變動(dòng)的不透明性,導(dǎo)致商家與消費(fèi)者處于信息不對(duì)稱的位置。商品價(jià)格具有時(shí)效性,運(yùn)用爬蟲技術(shù)可以爬取的特定時(shí)間的特定數(shù)據(jù)并圖表化,因此可以借助網(wǎng)絡(luò)爬蟲技術(shù)讓消費(fèi)者能夠?qū)λ徤唐返膬r(jià)格變化信息有較好的知情權(quán),并針對(duì)爬取的不同時(shí)段的價(jià)格信息,為客戶生成一個(gè)方便觀察的價(jià)格波動(dòng)走勢(shì)圖,有助于指導(dǎo)用戶養(yǎng)成理性消費(fèi)習(xí)慣,該系統(tǒng)同時(shí)也節(jié)約了用盲目搜索比對(duì)商品信息所浪費(fèi)的大量時(shí)間。

1.1 爬蟲穩(wěn)定性需求

一個(gè)高可用的代理是爬蟲穩(wěn)定性的保障,因此爬蟲的調(diào)度程序需要周期性保持穩(wěn)定更新IP 代理池。為了保證爬蟲的可用性,需要合理的監(jiān)控程序,才能保證爬蟲有效運(yùn)行。文本結(jié)構(gòu)信息是一個(gè)不太穩(wěn)定隨時(shí)在更改的結(jié)構(gòu),導(dǎo)致爬蟲穩(wěn)定需要高度依賴人進(jìn)行維護(hù)。人工對(duì)程序進(jìn)行問題排查效率偏低且耗費(fèi)大量人力,因此良好的模塊化異常捕獲和及時(shí)地發(fā)現(xiàn)程序運(yùn)行的異常是維護(hù)爬蟲穩(wěn)定性的關(guān)鍵。

Web 服務(wù)大體分為三個(gè)模塊。分別為用戶模塊,負(fù)責(zé)用戶的登陸管理、注冊(cè);個(gè)人信息的管理模塊;價(jià)格查詢模塊。在主體的價(jià)格查詢模塊中,可以查詢京東商城書籍信息,并且可以對(duì)其進(jìn)行訂閱和收藏,訂閱的用戶可以收到商品價(jià)格變動(dòng)的通知。管理員模塊可以實(shí)現(xiàn)用戶管理及監(jiān)控爬蟲系統(tǒng)。

1.2 網(wǎng)絡(luò)爬蟲模塊

網(wǎng)絡(luò)爬蟲系統(tǒng)是為了有效率的獲取價(jià)格數(shù)據(jù),減少人工手動(dòng)收集的繁瑣過程而實(shí)現(xiàn)的。其主要模塊分為三個(gè)模塊,一個(gè)是主要的對(duì)京東數(shù)據(jù)的爬取模塊,包括數(shù)據(jù)下載和解析功能。二是為京東爬蟲進(jìn)行支持的代理IP 池模塊,它負(fù)責(zé)動(dòng)態(tài)的維護(hù)一個(gè)可用的IP 池。最后一個(gè)是負(fù)責(zé)對(duì)整個(gè)爬蟲進(jìn)行調(diào)度的調(diào)度模塊,負(fù)責(zé)分發(fā)任務(wù),定時(shí)增量更新數(shù)據(jù)等調(diào)度任務(wù)。

1.3 數(shù)據(jù)庫模塊

本系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)中針對(duì)爬取出來的商品的歷史價(jià)格,將其序列化到一個(gè)字段進(jìn)行存儲(chǔ);用戶與商品信息有兩個(gè)多對(duì)多的關(guān)系,任意用戶可以收藏任意個(gè)商品,某個(gè)商品也可以被任意多個(gè)用戶關(guān)注收藏,用戶和商品是多對(duì)多的表關(guān)系。

2 系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)

系統(tǒng)采用Django 框架進(jìn)行爬蟲模塊的設(shè)計(jì),通過WSGI(Web Server Gateway Interface)與Web 服務(wù)器通信。框架中的ORM 建立起數(shù)據(jù)模型到關(guān)系型數(shù)據(jù)庫的映射,將每個(gè)表都映射到一個(gè)Python 類對(duì)象,每條數(shù)據(jù)則被映射為一個(gè)模型類的實(shí)例對(duì)象。Template 模塊用來輸出頁面響應(yīng),將來自model數(shù)據(jù)渲染成為網(wǎng)頁。當(dāng)接受到一個(gè)URL,控制器根據(jù)正則表達(dá)式去匹配URLconfs。根據(jù)規(guī)則將請(qǐng)求分配給對(duì)應(yīng)的視圖函數(shù),如果需要調(diào)度數(shù)據(jù)庫,視圖函數(shù)不會(huì)直接操作數(shù)據(jù)庫,而是會(huì)去操作對(duì)應(yīng)數(shù)據(jù)模型,數(shù)據(jù)模型通過ORM 與真實(shí)的數(shù)據(jù)庫保持映射關(guān)系,數(shù)據(jù)經(jīng)過數(shù)據(jù)模型層處理后,得到的信息經(jīng)過Template,Template 對(duì)數(shù)據(jù)進(jìn)行渲染最終生成完整的HTML 頁面。

在商品信息相關(guān)模塊中使用輕量級(jí)的Bootstrap 做為前端框架,Django 做為后端框架。搜索關(guān)鍵字通過使用ElasticSearch 倒排索引的數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),對(duì)所有商品名進(jìn)行中文分詞,建立快速搜索索引,可以遠(yuǎn)快于直接對(duì)關(guān)系型數(shù)據(jù)庫like 操作符的搜索效率。商品信息圖的繪制采用了后臺(tái)的Plotly 繪圖庫來渲染繪制HTML 形式的統(tǒng)計(jì)圖表,再由Django 的Template 將圖標(biāo)并入到網(wǎng)頁模版中返回給用戶。此方式雖然加大了服務(wù)器的壓力,但瀏覽器的加載過程用戶體驗(yàn)好。

后端管理員模塊使用的是Django 原生的admin APP。該工具簡(jiǎn)潔快速的實(shí)現(xiàn)了對(duì)網(wǎng)站數(shù)據(jù)的修改查閱和更新,同時(shí)也能對(duì)用戶本身的信息進(jìn)行更新,Django 基于其本身的model 來快速的構(gòu)建后端管理模塊,通過簡(jiǎn)單的配置就可以自動(dòng)的生成后端頁面,既能方便對(duì)數(shù)據(jù)進(jìn)行修改,同時(shí)也能做到用戶級(jí)別的后臺(tái)權(quán)限管理。

3 系統(tǒng)的工作流程

網(wǎng)絡(luò)爬蟲的工作流程由代理IP 池模塊、商品信息抓取模塊、商品價(jià)格抓取模塊組成。

代理IP 池模塊有兩類獨(dú)立的周期性任務(wù),一類爬蟲負(fù)責(zé)周期性的從多個(gè)提供免費(fèi)代理IP 的網(wǎng)站抓取有效的代理IP。爬蟲將IP 信息從網(wǎng)頁中進(jìn)行提取,并且對(duì)代理IP 進(jìn)行驗(yàn)證是否生效,將無效的代理IP廢棄掉,有效的代理IP 存入Redis 中,并設(shè)置時(shí)間為一天的生命周期,這些爬蟲在每天固定時(shí)間進(jìn)行代理IP 采集。另一類程序則以更頻繁的頻率對(duì)代理IP 池中的代理IP 進(jìn)行測(cè)試,篩掉無效或延遲太久的代理IP,避免主爬蟲因?yàn)檫@些無效或者抵消的代理IP 影響爬取速度,同時(shí)根據(jù)代理IP 的延遲信息對(duì)代理IP進(jìn)行評(píng)分,評(píng)分信息也會(huì)儲(chǔ)存在Redis 中,主爬蟲可以根據(jù)IP 的評(píng)分,優(yōu)先采用優(yōu)質(zhì)的代理IP。

商品信息抓取模塊的爬蟲主要負(fù)責(zé)增量的抓取商品信息。在避免爬取重復(fù)的數(shù)據(jù)同時(shí)也要保證盡可能實(shí)時(shí)同步到京東商城的商品數(shù)據(jù)。程序?qū)⒚看伟l(fā)出HTTP request 的信息保存成為指紋,指紋使用Redis 中的set 類型進(jìn)行存儲(chǔ),每次爬取網(wǎng)頁之前都會(huì)進(jìn)行指紋的計(jì)算,如果指紋已經(jīng)存在于Redis中了,那么該次請(qǐng)求將會(huì)直接丟棄,每次請(qǐng)求處理成功會(huì)將指紋存于Redis 中。從而實(shí)現(xiàn)了商品信息的增量更新。

商品價(jià)格抓取模塊會(huì)周期性的監(jiān)控?cái)?shù)據(jù)庫中的商品價(jià)格信息。由于價(jià)格接口有嚴(yán)格的反爬蟲策略,需要依賴大量的代理IP 來對(duì)價(jià)格接口進(jìn)行訪問,該模塊的爬蟲從商品信息表中獲得商品ID,不斷添加商品在某個(gè)時(shí)間點(diǎn)的固定價(jià)格。

4 結(jié) 語

網(wǎng)絡(luò)爬蟲技術(shù)保障了數(shù)據(jù)來源的穩(wěn)定可靠,多個(gè)爬蟲分布式協(xié)同工作,爬蟲之間使用Redis 作為通信中間件,在Celery 的調(diào)度之下,爬蟲有序的周期性的被調(diào)度。整個(gè)系統(tǒng)保持了一個(gè)松散的結(jié)構(gòu),保證了架構(gòu)設(shè)計(jì)上的低耦合,同時(shí)在Celery 的管理之下整個(gè)爬蟲系統(tǒng)又保證了爬蟲的協(xié)同調(diào)度。

猜你喜歡
數(shù)據(jù)庫用戶信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數(shù)據(jù)庫
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫
數(shù)據(jù)庫
如何獲取一億海外用戶
展會(huì)信息
主站蜘蛛池模板: 国产高清在线丝袜精品一区 | 久青草国产高清在线视频| 狼友av永久网站免费观看| 国产呦精品一区二区三区下载 | 免费观看成人久久网免费观看| 亚洲欧洲一区二区三区| 国产成人一区二区| 欧美综合成人| 国产97视频在线| 国产精品女主播| 亚洲激情99| 免费在线观看av| 国产精品流白浆在线观看| 亚洲自偷自拍另类小说| 99久久精品免费看国产电影| 亚洲精品无码不卡在线播放| 黄色国产在线| 国产99精品久久| 九色综合视频网| 一区二区三区国产精品视频| 午夜精品久久久久久久99热下载| 99无码中文字幕视频| 成人午夜亚洲影视在线观看| 在线亚洲精品自拍| 国产精品无码作爱| 国产欧美性爱网| 强乱中文字幕在线播放不卡| 人妻无码中文字幕第一区| 青草免费在线观看| 久久精品一品道久久精品| 久久99精品久久久久久不卡| 亚洲人成网站18禁动漫无码| 114级毛片免费观看| 玩两个丰满老熟女久久网| 国产精品手机在线观看你懂的 | 成人在线不卡| 久久免费观看视频| 内射人妻无套中出无码| 欧美一区二区三区不卡免费| jizz在线观看| 亚洲精品成人片在线播放| 一本大道视频精品人妻| 91网站国产| 亚洲人成网站色7777| 中国毛片网| 亚洲乱伦视频| 日韩中文无码av超清| 99在线视频免费观看| 国产婬乱a一级毛片多女| 不卡午夜视频| 99精品国产电影| 激情無極限的亚洲一区免费| 美女被狂躁www在线观看| 亚洲第一视频免费在线| 国产精品手机在线观看你懂的| 91精品专区国产盗摄| 在线亚洲小视频| 538国产视频| 最新国产精品鲁鲁免费视频| 欧美精品亚洲精品日韩专区| 乱系列中文字幕在线视频| 秋霞午夜国产精品成人片| 久久久久亚洲精品无码网站| 久久精品只有这里有| 亚欧成人无码AV在线播放| 日韩久久精品无码aV| 亚洲精品手机在线| 亚洲熟女中文字幕男人总站| 亚洲精品无码人妻无码| 精品1区2区3区| 国产免费好大好硬视频| 欧美国产日韩在线播放| 日韩无码黄色| 亚洲一区第一页| 一本大道香蕉久中文在线播放 | 欧美精品在线看| 久久久亚洲国产美女国产盗摄| 亚洲第一区欧美国产综合 | 国产在线欧美| 亚洲乱码在线视频| 扒开粉嫩的小缝隙喷白浆视频| 亚洲aⅴ天堂|