• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2019-02-11 07:08:53歐陽(yáng)瀚
      時(shí)代農(nóng)機(jī) 2019年9期
      關(guān)鍵詞:商品信息爬蟲(chóng)代理

      樊 闖,歐陽(yáng)瀚,黃 薇,李 燕

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

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

      目前網(wǎng)上購(gòu)物是一種極其普及的消費(fèi)模式,然而由于網(wǎng)上購(gòu)物平臺(tái)的價(jià)格具有臨時(shí)性與變動(dòng)的不透明性,導(dǎo)致商家與消費(fèi)者處于信息不對(duì)稱的位置。商品價(jià)格具有時(shí)效性,運(yùn)用爬蟲(chóng)技術(shù)可以爬取的特定時(shí)間的特定數(shù)據(jù)并圖表化,因此可以借助網(wǎng)絡(luò)爬蟲(chóng)技術(shù)讓消費(fèi)者能夠?qū)λ?gòu)商品的價(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 爬蟲(chóng)穩(wěn)定性需求

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

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

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

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

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

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

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

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

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

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

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

      商品信息抓取模塊的爬蟲(chóng)主要負(fù)責(zé)增量的抓取商品信息。在避免爬取重復(fù)的數(shù)據(jù)同時(shí)也要保證盡可能實(shí)時(shí)同步到京東商城的商品數(shù)據(jù)。程序?qū)⒚看伟l(fā)出HTTP request 的信息保存成為指紋,指紋使用Redis 中的set 類型進(jìn)行存儲(chǔ),每次爬取網(wǎng)頁(yè)之前都會(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ù)庫(kù)中的商品價(jià)格信息。由于價(jià)格接口有嚴(yán)格的反爬蟲(chóng)策略,需要依賴大量的代理IP 來(lái)對(duì)價(jià)格接口進(jìn)行訪問(wèn),該模塊的爬蟲(chóng)從商品信息表中獲得商品ID,不斷添加商品在某個(gè)時(shí)間點(diǎn)的固定價(jià)格。

      4 結(jié) 語(yǔ)

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

      猜你喜歡
      商品信息爬蟲(chóng)代理
      中國(guó)商品信息服務(wù)平臺(tái)
      商品信息
      軍事文摘(2023年18期)2023-10-31 08:11:40
      利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
      基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
      代理圣誕老人
      備戰(zhàn)雙十一
      代理手金寶 生意特別好
      利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      復(fù)仇代理烏龜君
      明星| 新郑市| 南开区| 沙坪坝区| 米林县| 仲巴县| 麻阳| 新河县| 高尔夫| 道孚县| 尼玛县| 灯塔市| 阜宁县| 金昌市| 澄江县| 广丰县| 北京市| 楚雄市| 荔浦县| 定陶县| 曲阳县| 大田县| 安徽省| 连平县| 蕉岭县| 林口县| 托克托县| 九龙县| 嘉兴市| 鄄城县| 金阳县| 太保市| 北安市| 屏东市| 东台市| 普格县| 兴业县| 东至县| 神农架林区| 三门峡市| 弥渡县|