• 
    

    
    

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

      ?

      基于Python的校園網(wǎng)搜索引擎研究

      2018-05-08 13:20左衛(wèi)剛
      電子技術(shù)與軟件工程 2018年22期
      關(guān)鍵詞:爬蟲分詞搜索引擎

      左衛(wèi)剛

      摘要 隨著數(shù)字化校園的發(fā)展,校園網(wǎng)數(shù)據(jù)量呈幾何倍增長,信息的查找和定位變得更為困難。本文以大學(xué)校園網(wǎng)為研究對象,在分析了網(wǎng)絡(luò)搜索引擎的原理、核心模塊的基礎(chǔ)上,采用基于Python的Scrapy爬蟲和Whoosh索引庫等技術(shù),完成了linux平臺下校園網(wǎng)搜索引擎原型系統(tǒng)的構(gòu)建。實(shí)驗(yàn)結(jié)果顯示,本文所提出的搜索引擎原型系統(tǒng),有效解決了使用通用搜索引擎所產(chǎn)生的校園網(wǎng)信息收錄不完全及索引更新不及時等問題。

      【關(guān)鍵詞】校園搜索引擎 網(wǎng)絡(luò)爬蟲 ScrapyWhoosh URL去重 布隆過濾器 中文分詞

      1 引言

      大數(shù)據(jù)時代的來臨意味著將產(chǎn)生海量的數(shù)據(jù)信息,這些信息被廣泛分布在互聯(lián)網(wǎng)的不同節(jié)點(diǎn)上,如何從中獲取到我們真正需要的信息成為難題。目前用戶獲取信息的主要方式是使用傳統(tǒng)的互聯(lián)網(wǎng)搜索引擎,但因不用領(lǐng)域和不同背景的用戶的檢索目的和需求往往不同,使得通用搜索引擎返回的查詢結(jié)果不是我們真正所關(guān)心和需要的。

      近年來,校園信息化建設(shè)不斷推進(jìn),校園網(wǎng)絡(luò)信息呈現(xiàn)爆發(fā)式增長,校園內(nèi)信息的查找和定位面臨同樣的困境。校園網(wǎng)有其特殊性,比如校園內(nèi)有些站點(diǎn)使用二級或三級域名,甚至不綁定域名直接使用IP訪問等特點(diǎn)。用戶在使用通用搜索引擎來進(jìn)行全域搜索或站內(nèi)搜索就存在信息無法被通用搜索引擎收錄和收錄時間嚴(yán)重滯后等問題,顯然通用搜索引擎的在面對校園網(wǎng)的這些特殊性,效果并不理想。

      本文以大學(xué)校園網(wǎng)為研究對象,介紹搜索引擎中的一些關(guān)鍵技術(shù),通過使用基于Python語言的S crapy開源爬蟲框架,對搜索引擎的爬蟲模塊進(jìn)行開發(fā),指出Scrapy框架原有的URL去重方法存在的缺陷,提出了一種使用布隆過濾器對S crapy爬蟲框架的URL去重功能進(jìn)行改進(jìn)的方案。同時,根據(jù)實(shí)際經(jīng)驗(yàn),提出了兩種防止爬蟲被ban的策略。利用基于Python語言的Whoosh索引檢索庫,對本系統(tǒng)索引檢索模塊進(jìn)行開發(fā)。針對Whoosh對中文分詞效果不好的問題,提出了使用jieba開源分詞組件來對Whoosh的中文分詞功能進(jìn)行改進(jìn)。探索性地研究Linux平臺下面向校園網(wǎng)的搜索引擎。

      2 網(wǎng)絡(luò)爬蟲

      互聯(lián)網(wǎng)就像一張大的蜘蛛網(wǎng),網(wǎng)絡(luò)爬蟲通過各種遍歷算法從互聯(lián)網(wǎng)上下載用戶需要的信息,我們通常把互聯(lián)網(wǎng)看做一張無限大的蜘蛛網(wǎng),而蜘蛛網(wǎng)中每一個交叉點(diǎn)就是互聯(lián)網(wǎng)上的一個節(jié)點(diǎn),各個節(jié)點(diǎn)之間通過超鏈接連在一起。網(wǎng)絡(luò)爬蟲可以以互聯(lián)網(wǎng)中的任何一個節(jié)點(diǎn)出發(fā),使用遍歷算法,到達(dá)互聯(lián)網(wǎng)中的任何其他節(jié)點(diǎn),被訪問到的節(jié)點(diǎn)根據(jù)用戶需求對節(jié)點(diǎn)內(nèi)信息進(jìn)行比對判斷,把需要的信息從網(wǎng)頁中下載下來,并進(jìn)行格式化呈現(xiàn)給用戶。

      2.1 爬取策略

      針對海量的網(wǎng)絡(luò)信息,搜索引擎常用的網(wǎng)絡(luò)爬蟲策略主要有以下幾種:

      2.1.1 寬度優(yōu)先策略

      寬度優(yōu)先算法(Breadth First Search),又稱為廣度優(yōu)先。它的主體思想是:從V頂點(diǎn)出發(fā),依次訪問V頂點(diǎn)沒有被訪問過的相鄰點(diǎn),然后再從這些相鄰點(diǎn)依次訪問它們的相鄰點(diǎn),并遵循先被頂點(diǎn)訪問的相鄰點(diǎn)先于其他被訪問的相鄰點(diǎn),這些相鄰點(diǎn)繼續(xù)訪問其所有的相鄰點(diǎn),如此反復(fù)直到所有的頂點(diǎn)都被訪問到。

      下面以圖l為例,來說明寬度優(yōu)先搜索過程。

      圖1以VI為起點(diǎn),首先訪問V3、V4、V6。V3、V4、V6被訪問過之后,再依次訪問V3、V4、V6的相鄰點(diǎn)。訪問V3的相鄰點(diǎn)V2,V4沒有相鄰點(diǎn),訪問V6的相鄰點(diǎn)V7。訪問完V2河V7后,再訪問V7的相鄰點(diǎn)V5。如此以來,整個的訪問序列為:VI→ V3→ V4→ V6→ V2→V7→ V5

      2.1.2 深度優(yōu)先策略

      深度優(yōu)先搜索(Depth First Search)和廣度優(yōu)先搜索不同,深度優(yōu)先搜索是一個遞歸的過程,比較類似于樹的先序遍歷。它的主體思想是:

      深度優(yōu)先算法類似于“一條路走到黑”。對于一個從未被訪問過的圖,假設(shè)從其V點(diǎn)出發(fā)開始訪問,第一步是訪問與V頂點(diǎn)直接相連的所有頂點(diǎn),待其所有的頂點(diǎn)均被訪問過以后,再從剛才被訪問過的頂點(diǎn)開始依次訪問與它們直接相連的頂點(diǎn),重復(fù)上述訪問過程,直到圖中的所有頂點(diǎn)均被訪問到為止。圖2為深度優(yōu)先搜索過程。

      圖2中首先訪問V1,然后訪問VI的相鄰點(diǎn)V3、V4、V6。假設(shè)圖中的頂點(diǎn)是按照VI、V2、V3、V4、V5、V6的順序存儲的,因?yàn)樵诖鎯rV3在V4和V6的前面,所以先訪問V3,接下來應(yīng)該訪問V3的相鄰點(diǎn)V2和V4,因?yàn)閂2在V4之前存儲,所以先訪問V2。V2被訪問過之后,訪問V2未被訪問過后的相鄰點(diǎn),但是V2沒有,返回訪問V4也是沒有。于是返回起始點(diǎn)VI,繼續(xù)訪問Vl的另一個相鄰點(diǎn)V6。訪問V6的相鄰點(diǎn)V7,訪問V7的相鄰點(diǎn)V5所以整個的訪問序列為:V1→ V3→ V2→ V4→V6→V7→V5。

      在互聯(lián)網(wǎng)中,每一個網(wǎng)頁都是一個節(jié)點(diǎn),寬度優(yōu)先搜索引擎和深度優(yōu)先搜索都可以訪問到所有節(jié)點(diǎn)。但是實(shí)際中每個網(wǎng)頁都有不同的重要性,這兩種算法只是可以抓取頁面并排入隊(duì)列,無法有效判定頁面的優(yōu)先級。

      2.1.3 非完全PageRank策略

      PageRank算法借鑒了學(xué)術(shù)界評判學(xué)術(shù)論文的通用方法。如何評價網(wǎng)絡(luò)中海量信息的重要性,假如一個網(wǎng)站被很多的其他網(wǎng)站做了鏈接,則我們認(rèn)為此網(wǎng)站很重要。這就是SEO中通常所說的PR值,我們在衡量某個網(wǎng)站的重要性時通常會看其PR值,網(wǎng)站在做外鏈時喜歡與比其PR值高的網(wǎng)站做交換鏈接,這樣以來,搜索引擎就會認(rèn)為這個網(wǎng)站也是可信賴的,就會賦予其較高的PR值,這樣在相關(guān)的搜索結(jié)果中排名就會比較靠前。圖3為非完全PageRank策略圖。

      在此我們假設(shè)PR值的計(jì)算以3為基數(shù)單位,初始狀態(tài)中已經(jīng)有{P1、P2、P3}3各頁面被下載到了本地,它們的指向鏈接有{P4, P5,P6),這3頁面也是等待爬蟲爬取的集合。如何判斷其爬行的次序,我們通常將已經(jīng)下載的和待爬取的這6個頁面形成一個新的集合,計(jì)算這個集合的PR值,按照PR值得大小次序進(jìn)行爬取。這里假設(shè)待爬行的次序?yàn)镻4,P5,P6,p4下載完畢后,下載P5,P5被爬取后獲取P5的鏈接Ps,此時賦予P8 一個臨時的PR值,如果P8的PR值大于P6,就優(yōu)先下載P8。如此往復(fù),不斷循環(huán),直到上圖中所有頁面都被爬取到。這就是非完全PageRank策略的計(jì)算思路。

      2.2 Scrapy應(yīng)用

      Scrapy是一個高效的WEB爬蟲框架,它完全基于Python開發(fā)而來,常被用于抓取網(wǎng)站信息,并從中提取出結(jié)構(gòu)化數(shù)據(jù)。Scrapy框架簡單而強(qiáng)大,可用于數(shù)據(jù)挖掘和自動化測試等。我們將使用Scrapy框架來編寫本文構(gòu)建的校園網(wǎng)搜索引擎的爬蟲模塊。

      2.2.1 Scrapy中URL去重問題

      Scrapy自帶的去重方法是通過RFPDupeFilter類來實(shí)現(xiàn)的,在抓取小型網(wǎng)站數(shù)據(jù)時完全夠用,但在面對大型網(wǎng)站時存在內(nèi)存消耗大等問題,這時采用布隆過濾器( BloomFilter)來改善內(nèi)存消耗過大的問題。布隆過濾器在開源社區(qū)已經(jīng)有相應(yīng)的類庫pybloom。

      2.2.2 Scrapy爬蟲防止被禁止策略

      爬蟲模塊設(shè)計(jì)完成后,爬蟲將對網(wǎng)站進(jìn)行爬取。因大部分網(wǎng)站都有防止爬蟲的策略,為了防止被ban,可采取以下兩種策略:

      (1)在爬蟲的配置文件中將參數(shù)downloaddelay的值設(shè)置為1秒以上,鑒于校園網(wǎng)信息的更新并不是很頻繁,隨這樣會致使抓取的頻率降低,但不受大的影響。

      (2)根據(jù)實(shí)際需求編寫user agent中間件,替換掉原來的中間件。

      3 索引與檢索

      網(wǎng)絡(luò)爬蟲爬過的網(wǎng)站數(shù)據(jù),經(jīng)過處理后將其添加進(jìn)索引。索引就像是我們?nèi)粘I钪袝哪夸?,有了目錄我們就可以更快的找到想要看的?nèi)容。索引的基礎(chǔ)其實(shí)是集合論中的布爾運(yùn)算,都是建立在布爾運(yùn)算的基礎(chǔ)之上的。

      3.1 正反向索引

      搜索引擎索引有正向索引和反向索引。正向索引簡而言之就是將所爬取的信息匯總成關(guān)鍵詞集合,爬蟲爬取信息的同時需要保存與關(guān)鍵詞相關(guān)的很多信息,比如關(guān)鍵詞的具體位置、關(guān)鍵詞在信息中出現(xiàn)的次數(shù)等。用戶在搜索某個關(guān)鍵詞時,首先通過遍歷算法查找包含了此關(guān)鍵詞的信息,這在一定程度上致使效率低下。

      反向索引常用于搜索引擎中,與正向索引完全不同,它是通常意義下索引的倒置。反向索引能夠較好地實(shí)現(xiàn)從關(guān)鍵詞到文檔的映射,通過反向索引可以很快地根據(jù)關(guān)鍵詞獲取到需要查詢的數(shù)據(jù)信息。

      3.2 Whoosh

      索引與檢索模塊可通過開源社區(qū)的Whoosh實(shí)現(xiàn)。Whoosh是完全基于Python的全文索引與檢索編程庫。Whoosh構(gòu)架良好,其包含的諸多模塊都可以根據(jù)用戶的實(shí)際需求進(jìn)行替換,因其沒有二進(jìn)制包,不存在繁瑣的編譯,程序也就不會無故崩潰。

      在使用Whoosh時要先建立索引對象,索引中包含索引模式,并以字段的形式存在:

      上述代碼建立了索引的模式,title,url,content字段對應(yīng)索引查找目標(biāo)文件的一部分信息,索引內(nèi)容包括每個字段。字段建立索引后,就能被搜索和保存。索引模式建立之后,再建立索引存儲目錄。便可供用戶搜索查詢。

      3.3 中文分詞

      Whoosh本身的分詞功能是針對英文的,對中文的分詞支持不友好,在本系統(tǒng)的開發(fā)中我們使用jieba中文分詞,它是目前開源社區(qū)中比較活躍的項(xiàng)目,其采用了動態(tài)規(guī)劃查找最大概率路徑,基于前綴詞典實(shí)現(xiàn)了高效的詞圖掃描。jieba分詞可將句子最精確的切開,適合文本分析,在此基礎(chǔ)上,對長詞再次切分,提高召回率,適合于搜索引擎分詞。通過與Whoosh的結(jié)合來提高系統(tǒng)對中文進(jìn)行分詞的能力。

      4 實(shí)驗(yàn)分析

      搜索質(zhì)量的好壞需要進(jìn)行科學(xué)的搜索質(zhì)量評估。用戶輸入關(guān)鍵詞到獲取到需要的準(zhǔn)確信息,整個過程速度越快,結(jié)果越準(zhǔn)確,說明搜索引擎的質(zhì)量越高。本節(jié)將進(jìn)行相關(guān)測試,以驗(yàn)證搜索系統(tǒng)各方面的性能。

      4.1 相關(guān)性量化評價

      搜索引擎結(jié)果的好壞與否,體現(xiàn)在結(jié)果的相關(guān)性( Relevance)上。查準(zhǔn)率(Precisionratio,簡稱為P)和查全率(Recall ratio,簡稱為R)是信息檢索效率評價的兩個重要定量指標(biāo)。要評價搜索引擎的性能水平,就必須進(jìn)行多次檢索。每進(jìn)行一次檢索,都計(jì)算其查準(zhǔn)率和查全率,并將其在平面坐標(biāo)圖上標(biāo)示出來。通過大量的檢索,就可以得到檢索系統(tǒng)的性能曲線。Precision/Recall曲線以每一次計(jì)算的查全率為橫坐標(biāo),每一次計(jì)算的查準(zhǔn)率為縱坐標(biāo)。經(jīng)過100次檢索得到,由圖4可得出:我們所研究的校園網(wǎng)搜索引擎在查全率和查準(zhǔn)率之間達(dá)到了較好的動態(tài)平衡。

      通常情況下,我們也使用ROC曲線來定量評價搜索引擎。ROC曲線的橫坐標(biāo)為不相關(guān)信息量(false positive rate),縱坐標(biāo)為相關(guān)信息量(true positive rate)。圖5曲線也是由100次檢索得到,由圖5可知,在ROC空間繪制的ROC曲線凸向西北方向,效果較好。

      4.2 收錄及時性評價

      大學(xué)校園中有海量的信息資源,搜索引擎收錄的及時性和完整性非常重要。通過30余個關(guān)鍵字的測試發(fā)現(xiàn):通用搜索引擎的收錄滯后在7-15天,使用IP訪問的四個站點(diǎn)的信息沒有被通用搜索引擎收錄。而我們構(gòu)建的搜索引擎可按照需求更改爬行頻率,信息收錄非常及時。我們亦可隨時將網(wǎng)站添加到系統(tǒng)的爬蟲待爬隊(duì)列中,IP訪問的網(wǎng)站信息也得到較好的收錄。

      實(shí)驗(yàn)證明,本文所構(gòu)建的搜索引擎原型系統(tǒng),解決了使用通用搜索引擎索引更新頻率無法控制,對校園網(wǎng)消息收錄不完全的問題。更適合校園網(wǎng)搜索的個性化需求。

      5 結(jié)語

      本文研究的校園網(wǎng)搜索引擎,有效解決了校園網(wǎng)內(nèi)信息不能被通用搜索引擎有效收錄或收錄不及時等問題,并完成了以下工作:針對S crapy網(wǎng)絡(luò)爬蟲框架自帶的網(wǎng)頁去重功能存在的缺陷,從理論上提出了使用布隆過濾器解決問題的方案;根據(jù)校園網(wǎng)特點(diǎn),提出兩種防止爬蟲被禁止的方案;使用開源的jieba技術(shù)與Whoosh索引庫相結(jié)合,有效提高了中文分詞能力。

      參考文獻(xiàn)

      [1]史寶明,賀元香,吳崇正,主題搜索引擎中爬蟲搜索策略的研究[J].計(jì)算機(jī)工程與應(yīng)用,2013 (08):56-58.

      [2]黃榮懷,張進(jìn)寶,胡永斌,智慧校園:數(shù)字校園發(fā)展的必然趨勢[J].開放教育研究,2012,18 (04):12-17.

      [3]李志義,網(wǎng)絡(luò)爬蟲的優(yōu)化策略探略[J].現(xiàn)代情報(bào),2011,31 (10):31-34.

      [4]王燕,智慧校園建設(shè)總體架構(gòu)模型及典型應(yīng)用分析[J].中國電化教育,2014 (09):88-92.

      [5]于娟,劉強(qiáng),主題網(wǎng)絡(luò)爬蟲研究綜述[J].計(jì)算機(jī)工程與科學(xué),2015 (02):36-39.

      猜你喜歡
      爬蟲分詞搜索引擎
      利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
      基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
      分詞在英語教學(xué)中的妙用
      利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
      網(wǎng)絡(luò)搜索引擎亟待規(guī)范
      Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
      基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
      廣告主與搜索引擎的雙向博弈分析
      論英語不定式和-ing分詞的語義傳承
      聂拉木县| 聂荣县| 固始县| 拉萨市| 新巴尔虎右旗| 太仆寺旗| 临泽县| 阳西县| 霍山县| 台中市| 佳木斯市| 西乌珠穆沁旗| 宜都市| 文安县| 丰县| 侯马市| 东乌珠穆沁旗| 德阳市| 正阳县| 开封县| 景德镇市| 广平县| 柳河县| 华坪县| 河西区| 广德县| 隆昌县| 那曲县| 肥东县| 姚安县| 普洱| 保康县| 崇左市| 嘉鱼县| 敦煌市| 平山县| 中江县| 轮台县| 平乡县| 庆安县| 镇巴县|