亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于農(nóng)業(yè)的MVC設(shè)計(jì)模式的網(wǎng)絡(luò)蜘蛛的實(shí)現(xiàn)

        2016-11-19 08:41:24楊本輝
        農(nóng)家科技下旬刊 2016年4期

        楊本輝

        摘 要:利用PHP語(yǔ)言開(kāi)發(fā)的基于農(nóng)業(yè)的MVC設(shè)計(jì)模式的網(wǎng)絡(luò)蜘蛛??梢詫?shí)現(xiàn)采集,能夠把各類(lèi)的互聯(lián)網(wǎng)信息或者數(shù)據(jù)采集到自己的數(shù)據(jù)庫(kù)中,然后再進(jìn)行一系列的處理。本文介紹的是整個(gè)網(wǎng)絡(luò)蜘蛛從無(wú)到有的過(guò)程。利用MVC的架構(gòu)思想開(kāi)發(fā)出具有模塊化、易于多人開(kāi)發(fā)、易于維護(hù)性、易于拓展和易于二次開(kāi)發(fā)的特性的農(nóng)業(yè)網(wǎng)絡(luò)蜘蛛。

        關(guān)鍵詞:PHP;MVC;農(nóng)業(yè)網(wǎng)絡(luò)蜘蛛

        一、引言

        農(nóng)業(yè)(Agriculture)是利用動(dòng)植物的生長(zhǎng)發(fā)育規(guī)律,通過(guò)人工培育來(lái)獲得產(chǎn)品的產(chǎn)業(yè)。農(nóng)業(yè)屬于第一產(chǎn)業(yè),研究農(nóng)業(yè)的科學(xué)是農(nóng)學(xué)。農(nóng)業(yè)的勞動(dòng)對(duì)象是有生命的動(dòng)植物,獲得的產(chǎn)品是動(dòng)植物本身。農(nóng)業(yè)提供支撐國(guó)民經(jīng)濟(jì)建設(shè)與發(fā)展的基礎(chǔ)產(chǎn)品。

        傳統(tǒng)農(nóng)業(yè)發(fā)展到今天,生產(chǎn)力與生產(chǎn)資料已經(jīng)不能匹配時(shí)代的發(fā)展。特別作為人類(lèi)的精華,很多的農(nóng)業(yè)相關(guān)寶貴的知識(shí),不能夠很好地傳承與發(fā)展。而知識(shí)的傳承性,關(guān)系到人類(lèi)的興衰。如果知識(shí)不能很好的傳承,那么后世的人類(lèi)就必須重新去研究、探索、總結(jié)。無(wú)疑,農(nóng)業(yè)相關(guān)前人知識(shí)的研究不止要傳承下去,而且還要很好的傳承下去。

        互聯(lián)網(wǎng)是一種現(xiàn)今先進(jìn)生產(chǎn)力的技術(shù)集,它集合了IT、網(wǎng)絡(luò)、大數(shù)據(jù)、人工智能等各種技術(shù)。它是人類(lèi)的先進(jìn)生產(chǎn)力與生產(chǎn)資料。農(nóng)業(yè)與互聯(lián)網(wǎng)的結(jié)合將對(duì)傳統(tǒng)農(nóng)業(yè)帶來(lái)全新的血液。結(jié)合互聯(lián)網(wǎng)的高速處理、持久存儲(chǔ)以及快速獲取的能力,互聯(lián)網(wǎng)將把農(nóng)業(yè)知識(shí)進(jìn)行極好的傳承,最終將會(huì)在講來(lái)把農(nóng)業(yè)推向一個(gè)新的高度。

        二、網(wǎng)絡(luò)蜘蛛的定義與原理

        網(wǎng)絡(luò)蜘蛛即Web Spider,是一個(gè)很形象的名字。如果把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來(lái)爬去的蜘蛛。那么網(wǎng)絡(luò)蜘蛛到底是做什么的呢?

        其實(shí)網(wǎng)絡(luò)蜘蛛就是一種獲取互聯(lián)網(wǎng)數(shù)據(jù)到特定數(shù)據(jù)庫(kù)系統(tǒng)中的一種程序工具,它的作用就是不斷的獲取互聯(lián)網(wǎng)的內(nèi)容,通過(guò)特有的過(guò)濾技術(shù),最終把內(nèi)容獲取到數(shù)據(jù)庫(kù)系統(tǒng)中,最終供用戶(hù)來(lái)檢索信息以及資源。

        從架構(gòu)層面上來(lái)說(shuō):網(wǎng)絡(luò)蜘蛛是有很多種設(shè)計(jì)模式的,每種模式都有不同的應(yīng)用方向。常見(jiàn)的設(shè)計(jì)模式可以分為幾類(lèi)。

        1. 深度優(yōu)先。深度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會(huì)從 起始頁(yè)開(kāi)始,一個(gè)鏈接一個(gè)鏈接跟蹤下去,處理完這條線(xiàn)路之后再轉(zhuǎn)入下一個(gè)起始頁(yè),繼續(xù)跟蹤鏈接。這個(gè)方法有個(gè)優(yōu)點(diǎn)是網(wǎng)絡(luò)蜘蛛在設(shè)計(jì)的時(shí)候比較容易。

        2. 廣度優(yōu)先。廣度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會(huì)先抓取起始網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè),然后再選擇其中的一個(gè)鏈接網(wǎng)頁(yè),繼續(xù)抓取在此網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè)。這是最常用的方式,因?yàn)檫@個(gè)方法可以讓網(wǎng)絡(luò)蜘蛛并行處理,提高其抓取速度。

        3.通用方式。網(wǎng)站內(nèi)容多種多樣,結(jié)構(gòu)也是各有不同,如何做到精準(zhǔn)抓取呢。這就需要一個(gè)通用的結(jié)構(gòu)體系。通用方式的結(jié)構(gòu)體系可以分為以下三個(gè)步驟:

        (1) Url網(wǎng)址規(guī)則獲取

        (2) Listing列表頁(yè)面獲取

        (3) Content最終內(nèi)容頁(yè)面獲取

        4.幾種方式的對(duì)比。無(wú)論是深度優(yōu)先,還是廣度優(yōu)先,在獲取內(nèi)容上通常是獲取一個(gè)超鏈接地址后一個(gè)一個(gè)的爬行,在有些我們不得不對(duì)特定的網(wǎng)站進(jìn)行內(nèi)容抓取的時(shí)候就沒(méi)有方法了。在這一種情況下,我們所需要的其實(shí)是精準(zhǔn)的抓取而不是一個(gè)接一個(gè)的“爬取”。所以深度優(yōu)先和廣度優(yōu)先在這一類(lèi)型的情況下是不適用的。通用方式就是解決這種情況的。通用方式會(huì)按照用戶(hù)需求有選擇的獲取內(nèi)容。

        三、農(nóng)業(yè)網(wǎng)絡(luò)蜘蛛程序國(guó)內(nèi)外現(xiàn)狀

        1.國(guó)外情況。國(guó)外的IT水平相對(duì)較高,我們可以在國(guó)外看到一些不錯(cuò)的網(wǎng)絡(luò)蜘蛛。

        (1)Larbin。larbin是一種開(kāi)源的網(wǎng)絡(luò)爬蟲(chóng)/網(wǎng)絡(luò)蜘蛛,由法國(guó)的年輕人 Sébastien Ailleret獨(dú)立開(kāi)發(fā)。larbin目的是能夠跟蹤頁(yè)面的url進(jìn)行擴(kuò)展的抓取,最后為搜索引擎提供廣泛的數(shù)據(jù)來(lái)源 。

        (2)Spiderman。Spiderman 是一個(gè)基于微內(nèi)核+插件式架構(gòu)的網(wǎng)絡(luò)蜘蛛,它的目標(biāo)是通過(guò)簡(jiǎn)單的方法就能將復(fù)雜的目標(biāo)網(wǎng)頁(yè)信息抓取并解析為自己所需要的業(yè)務(wù)數(shù)據(jù)。

        (3)OpenWebSpider。OpenWebSpider是一個(gè)開(kāi)源多線(xiàn)程Web Spider(robot:機(jī)器人,crawler:爬蟲(chóng))和包含許多有趣功能的搜索引擎。

        2.國(guó)內(nèi)情況。國(guó)內(nèi)的爬蟲(chóng)程序一般數(shù)量不多,質(zhì)量也不好,大多數(shù)程序是對(duì)于國(guó)外開(kāi)源程序的引用,以及二次開(kāi)發(fā),所以不做多講。

        四、程序具體實(shí)現(xiàn)(程序設(shè)計(jì)簡(jiǎn)介)

        1. 文件結(jié)構(gòu)。對(duì)于一個(gè)程序的實(shí)現(xiàn),文件結(jié)構(gòu)是十分重要的。良好的文件結(jié)構(gòu)常常意味著程序功能的合理。本程序的文件結(jié)構(gòu)圖如圖1所示:

        圖1 文件結(jié)構(gòu)圖

        Fig.1 The file structure diagram

        2. 網(wǎng)絡(luò)蜘蛛的設(shè)計(jì)與流程。此農(nóng)業(yè)網(wǎng)絡(luò)蜘蛛是一個(gè)通用的采集程序,采用的是通用方式,基于MVC開(kāi)發(fā)思想,基于語(yǔ)言PHP,所需要的數(shù)據(jù)庫(kù)是開(kāi)源的輕量級(jí)數(shù)據(jù)庫(kù)sqlite,運(yùn)行的宿主操作系統(tǒng)是Linux。由于考慮到程序的通用性,所以每一個(gè)基礎(chǔ)的模塊是獨(dú)立封裝的,好比一個(gè)一個(gè)的零件。這樣的好處就是用戶(hù)可以根據(jù)自己的需求來(lái)組裝功能,這樣可以使得程序更加通用。程序的設(shè)計(jì)圖如圖2所示:

        程序總共分為4個(gè)模塊,分別會(huì)在下一段說(shuō)明。

        (1)用戶(hù)模塊。用戶(hù)模塊主要負(fù)責(zé)管理整個(gè)程序的登錄用戶(hù),比如用戶(hù)的增刪改查。還有密碼以及權(quán)限的配置。

        (2) 配置模塊。配置模塊主要負(fù)責(zé)把用戶(hù)的一些設(shè)置信息存儲(chǔ)起來(lái)以方便供后續(xù)程序使用。

        (3)采集模塊。采集模塊是整個(gè)網(wǎng)絡(luò)蜘蛛的核心模塊,整個(gè)蜘蛛的采集性能都是由這個(gè)模塊實(shí)現(xiàn)。其中這個(gè)模塊中有幾個(gè)核心問(wèn)題的處理方式如下:

        ① 采集重復(fù)怎么辦。采集重復(fù)在網(wǎng)絡(luò)爬蟲(chóng)中是普遍存在的。由于我們獲取源網(wǎng)站的數(shù)據(jù)的數(shù)據(jù)量都不小,而大多數(shù)時(shí)候我們?cè)诓杉痩isting列表的url的時(shí)候的時(shí)候,由于源網(wǎng)站的數(shù)據(jù)庫(kù)可能會(huì)有一些插入操作別人在同時(shí)進(jìn)行。所以這個(gè)時(shí)候取出的數(shù)據(jù)難免會(huì)和之前的數(shù)據(jù)想重復(fù),這個(gè)其實(shí)是一個(gè)很正常的問(wèn)題。

        解決采集重復(fù)的方法需要我們利用數(shù)據(jù)庫(kù)的一些特性,把一些字段設(shè)置為unique,最終用replace into(sqlite的sql語(yǔ)句)進(jìn)行插入。

        ②采集出錯(cuò)、中斷怎么辦。采集過(guò)程中出錯(cuò)或者中斷是正常的,原因有很多,可是很多時(shí)候就只是僅僅由于網(wǎng)絡(luò)的不問(wèn)題,或者我們采集的源服務(wù)器不穩(wěn)定。而無(wú)論什么原因,這樣肯定會(huì)造成數(shù)據(jù)的丟失。而這個(gè)時(shí)候怎么辦呢。

        解決方法實(shí)際上是在數(shù)據(jù)表里面添加一個(gè)字段專(zhuān)門(mén)來(lái)記錄數(shù)據(jù)寫(xiě)入是否成功。成功就為1不成功就為0。

        (4)過(guò)濾模塊。由于各種原因,我們可能要對(duì)現(xiàn)有的一些采集數(shù)據(jù)進(jìn)行一些過(guò)濾,或者一些替換。在這種情況下,可能就要使用到過(guò)濾模塊,過(guò)濾模塊常常用于一些非法內(nèi)容的替換,或者一些無(wú)用內(nèi)容的過(guò)濾。

        (5)發(fā)布模塊。等到數(shù)據(jù)從采集模塊獲取了以后,數(shù)據(jù)是存放在網(wǎng)絡(luò)蜘蛛的數(shù)據(jù)庫(kù)中。但是這樣的數(shù)據(jù)是無(wú)法直接導(dǎo)入到現(xiàn)有的一些主流的建站程序的。我們還必須要開(kāi)發(fā)一個(gè)中間件來(lái)適應(yīng)相應(yīng)的cms,從而達(dá)到可以把數(shù)據(jù)導(dǎo)入其他開(kāi)源程序的目的。

        (6)插件模塊。由于程序的功能很多時(shí)候不可能一下子考慮的十分全面,并且在程序開(kāi)發(fā)中我們十分有必要使程序能夠拓展第三方的程序以使程序更加強(qiáng)大、健壯。所以特別多出一個(gè)插件模塊,主要負(fù)責(zé)整個(gè)程序新功能的拓展。而這個(gè)拓展一般由其他開(kāi)發(fā)人員按照本程序提供的接口實(shí)現(xiàn)。

        (7)欄目模塊。由于采集的內(nèi)容種類(lèi)繁多,所以必須要有一個(gè)模塊來(lái)使程序采集來(lái)的數(shù)據(jù)按照要求進(jìn)行歸類(lèi),進(jìn)行管理。

        (8) 內(nèi)容模塊。內(nèi)容模塊主要網(wǎng)絡(luò)蜘蛛負(fù)責(zé)采集來(lái)的內(nèi)容的增刪改查操作。這樣可以有效的管理采集來(lái)的資源。

        五、本程序的優(yōu)勢(shì)

        1.基于linux+nginx+PHP+sqlite??紤]到本程序的性能以及開(kāi)發(fā)的便利性,本程序采用的編程語(yǔ)言是目前最為流行的網(wǎng)絡(luò)編程語(yǔ)言PHP。

        Sqlite是一個(gè)輕量級(jí)的數(shù)據(jù)庫(kù),存儲(chǔ)效率高,數(shù)據(jù)以單文件的方式存儲(chǔ),節(jié)省系統(tǒng)資源占用,是一個(gè)十分優(yōu)秀的開(kāi)源輕量級(jí)數(shù)據(jù)庫(kù)。本程序的開(kāi)發(fā)所存儲(chǔ)的數(shù)據(jù)都將使用sqlite數(shù)據(jù)庫(kù)存儲(chǔ)。

        2.基于MVC。MVC是一種思維規(guī)范,沒(méi)有明確的定義,只有一個(gè)需要遵循的思考方式,所以說(shuō),MVC是有不同的種類(lèi)的,因?yàn)檫@取決于某一種MVC框架作者的思想。一般來(lái)說(shuō)現(xiàn)在中國(guó)的互聯(lián)網(wǎng)流行的MVC實(shí)際上可以概括為:模型(Model),視圖(View)和控制Controller)。本程序的設(shè)計(jì)圍繞以下幾個(gè)方面作為思考:

        (1) 各施其職,互不干涉。

        (2) 有利于開(kāi)發(fā)中的分工。

        (3) 有利于組件的重用。

        六、存在的客觀問(wèn)題

        面向?qū)ο蟮脑O(shè)計(jì)思想注定程序是比較龐大的,效率相比面向過(guò)程偏低。

        對(duì)于一個(gè)程序來(lái)說(shuō),性能是很重要的。不過(guò)對(duì)于面向?qū)ο蟮某绦蛟O(shè)計(jì)都會(huì)有一個(gè)致命的弱點(diǎn)就是程序的性能不高。因?yàn)榱己玫耐卣剐砸约澳K化的MVC開(kāi)發(fā)思想多多少少都是會(huì)以損失一些程序性能為代價(jià)的。

        七、結(jié)語(yǔ)

        本網(wǎng)絡(luò)蜘蛛基于MVC的開(kāi)發(fā)思想,使用PHP開(kāi)發(fā)語(yǔ)言,能夠廣泛應(yīng)用于各個(gè)行業(yè)的信息以及資源獲取,從而用作分析或者其它目的。本網(wǎng)路蜘蛛從編寫(xiě)到成熟歷時(shí)3個(gè)月,中間大小修改大約50次。測(cè)試數(shù)據(jù)數(shù)目超過(guò)500萬(wàn)次。

        參考文獻(xiàn):

        [1] 開(kāi)源中國(guó). larbin. [EB/OL]. http://www.oschina.net/p/larbin. 2013-03-14.

        [2] 開(kāi)源中國(guó).spiderman. [EB/OL]. http://www.oschina.net/p/spiderman.2013-3-14.

        [3] 開(kāi)源中國(guó).openwebspider.[EB/OL].http://www.oschina.net/p/openwebspider. 2013-3-14.

        [4] 開(kāi)源中國(guó).snoopy. [EB/OL].http://www.oschina.net/p/snoopy.2013-03-14.

        [5] ChoJ,Garcia-MolinaH,PageL.Efficient crawling throughURL ordering. Proceedings of the7thACM-WWW InternationalConference . 1998.

        [6] 郭海燕.搜索引擎中網(wǎng)絡(luò)爬蟲(chóng)技術(shù)研究[D]. 西安電子科技大學(xué) 2009.

        [7] 李學(xué)勇,譚義紅,田立軍,歐陽(yáng)柳波,李國(guó)徽.ε-貪婪策略在網(wǎng)絡(luò)蜘蛛搜索策略中的應(yīng)用[J].湖南工程學(xué)院學(xué)報(bào)(自然科學(xué)版). 2004,(02).

        [8] 李學(xué)勇,歐陽(yáng)柳波,李國(guó)徽.基于模擬退火機(jī)制的網(wǎng)絡(luò)蜘蛛搜索策略[J].湖南理工學(xué)院學(xué)報(bào)(自然科學(xué)版).2004,(02).

        [9] 龍宇巍,王永成,許歡慶.定題搜索引擎Robot的設(shè)計(jì)與算法[J].計(jì)算機(jī)仿真.2004,(04).

        [10] 華偉臣,張秀瓊.網(wǎng)絡(luò)蜘蛛搜索研究[J].樂(lè)山師范學(xué)院學(xué)報(bào). 2006,(05) .

        91国产自拍精品视频| 亚洲妇女水蜜桃av网网站| 中文字幕乱码亚洲无线精品一区 | 国产真实夫妇交换视频| 久久精品国产热| 国产精品高清亚洲精品| 91精品人妻一区二区三区久久久 | 久久一区二区av毛片国产| 肉色丝袜足j视频国产| 国产精品人妻一码二码尿失禁| 亚洲AⅤ无码国精品中文字慕| 精品国精品自拍自在线| 亚洲综合第一页中文字幕| 无码国产69精品久久久久孕妇 | 国产中文色婷婷久久久精品| 色婷婷综合久久久中文字幕| 亚洲熟妇无码av另类vr影视 | 免费毛儿一区二区十八岁| 黄色a级国产免费大片| 久久精品国产亚洲5555| 亚洲蜜臀av一区二区三区漫画| 久久黄色视频| 日韩精品无码av中文无码版| 久国产精品久久精品国产四虎| 精品老熟女一区二区三区在线| 欧美大屁股xxxx高潮喷水| 香蕉久久人人97超碰caoproen| 天堂av无码大芭蕉伊人av孕妇黑人| 黄色影院不卡一区二区| 国产精品久久国产精品99| 国产精品精品| 中文字幕一区二区在线| 熟女体下毛荫荫黑森林| 欧美日韩一卡2卡三卡4卡 乱码欧美孕交 | 国产爽快片一区二区三区| 久久亚洲精品成人av无码网站| 无码国产精品一区二区免费16| 国产三级三级三级看三级日本| 校园春色人妻激情高清中文字幕| 国内精品久久久久影院一蜜桃| 在线视频青青草猎艳自拍69|