帕爾哈提吐拉江 希爾扎提庫扎提 新疆師范大學(xué)
大數(shù)據(jù)時代下,網(wǎng)絡(luò)數(shù)據(jù)呈現(xiàn)出爆炸式的增長,由于數(shù)據(jù)在互聯(lián)網(wǎng)中具有廣泛的分散性,這也使數(shù)據(jù)獲取成為一大重要的技術(shù)難題?,F(xiàn)階段,人們在互聯(lián)網(wǎng)中獲取信息時主要是依靠搜索引擎,但由于用戶具有不同的檢索需求,這也造成搜索引擎的檢索結(jié)果并不符合所有用戶的數(shù)據(jù)獲取需求。隨著校園數(shù)字化建設(shè)的深入,校園信息在獲取與定位方面也同樣存在該問題,用戶在利用搜索引擎進(jìn)行檢索時,往往經(jīng)常出現(xiàn)數(shù)據(jù)信息收錄滯后、不全面等問題,而且通用的搜索引擎并不能滿足校園網(wǎng)的數(shù)據(jù)檢索需求,應(yīng)用效果欠佳。為此,本文利用Scrapy 來構(gòu)建Linux 平臺的校園網(wǎng)開源爬蟲框架,以此開發(fā)出對應(yīng)的搜索模塊,通過布隆過濾器來實現(xiàn)URL 去重,以此滿足高校校園網(wǎng)對數(shù)據(jù)信息的檢索要求。
互聯(lián)網(wǎng)類似于一張蜘蛛網(wǎng),用戶在網(wǎng)絡(luò)中獲取信息時,網(wǎng)絡(luò)爬蟲會利用大量的遍歷算法來對其所需信息進(jìn)行下載,在互聯(lián)網(wǎng)中有著大量的節(jié)點(diǎn),這些節(jié)點(diǎn)便相當(dāng)于蜘蛛網(wǎng)中各個蛛絲在交織過程中的交叉點(diǎn),這些網(wǎng)絡(luò)節(jié)點(diǎn)都是利用超鏈接進(jìn)行連接的,而網(wǎng)絡(luò)爬蟲可以任意網(wǎng)絡(luò)節(jié)點(diǎn)為出發(fā)點(diǎn),通過遍歷算法來到達(dá)指定的網(wǎng)絡(luò)節(jié)點(diǎn),在到達(dá)該節(jié)點(diǎn)后會判斷其節(jié)點(diǎn)信息,然后將該節(jié)點(diǎn)信息與用戶需求進(jìn)行對比,以此下載用戶所需的數(shù)據(jù)信息,通過格式化處理后傳輸給指定的用戶。
在互聯(lián)網(wǎng)中,人們在利用搜索引擎來檢索信息時常常采用以下網(wǎng)絡(luò)爬蟲策略:其一是寬度優(yōu)先策略,該策略采用寬度優(yōu)先算法來實現(xiàn),該算法又叫做廣度優(yōu)先,其將V 頂點(diǎn)作為出發(fā)點(diǎn),對該頂點(diǎn)的相鄰點(diǎn)進(jìn)行依次訪問,然后以其相鄰點(diǎn)為二次出發(fā)點(diǎn),對相鄰點(diǎn)的周圍點(diǎn)進(jìn)行依次訪問,并以此類推,直至全部頂點(diǎn)均被訪問為止。比如,V1 是起始出發(fā)點(diǎn),V3、V4、V6 是V1 的相鄰點(diǎn),則寬度優(yōu)先策略會先從V1 頂點(diǎn)出發(fā),依次對V3、V4 與V6 進(jìn)行訪問,然后再對V3、V4 與V6 的周圍相鄰點(diǎn)進(jìn)行訪問,需要注意的是,在對V3 相鄰點(diǎn)進(jìn)行訪問時,V2 與V4 不存在相鄰點(diǎn),而V6 則存在一個相鄰點(diǎn)V7,則該策略會先對V2 進(jìn)行訪問,然后對V7 進(jìn)行訪問,最后再對V7 相鄰點(diǎn)V5 進(jìn)行訪問,則其訪問順序依次為V1、V3、V4、V2、V7、V5;其二是深度優(yōu)先策略,該策略屬于遞歸過程,其以不斷深入為宗旨,在對某個圖進(jìn)行訪問時,如果是以V 為初始訪問點(diǎn),則該策略會首先對與V點(diǎn)進(jìn)行直接連接的頂點(diǎn)進(jìn)行依次訪問,待這些頂點(diǎn)都被訪問后,然后再以這些被訪問點(diǎn)為二次初始點(diǎn)來對與其直接連接的各個頂點(diǎn)進(jìn)行訪問,以此類推,直至全部頂點(diǎn)都被訪問為止。比如,以V1 為出發(fā)點(diǎn),其相鄰點(diǎn)分別為V3、V5、V6,其中V5 與V6 和V1 進(jìn)行直接相連,而V5 不存在相鄰點(diǎn),V6 存在直接連接點(diǎn)V2,V3 則存在直接相連的V4、V7 兩點(diǎn),則采用深度優(yōu)先策略后,其訪問順序依次為V1、V3、V5、V6、V2、V4、V7。對于互聯(lián)網(wǎng)來說,其各個網(wǎng)絡(luò)節(jié)點(diǎn)中都有著對應(yīng)的網(wǎng)頁,通過寬度優(yōu)先策略與深度優(yōu)先策略,可對互聯(lián)網(wǎng)中的所有網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行訪問,進(jìn)而實現(xiàn)對所有網(wǎng)頁的訪問,但因這些網(wǎng)頁的重要性不同,在采取上述兩種策略時,只能實現(xiàn)對頁面的抓取與排列,難以對這些頁面所具有的優(yōu)先級進(jìn)行準(zhǔn)確判定;其三是非完全PageRank 策略,該策略作為一種通用方法,能夠根據(jù)網(wǎng)頁的重要性按照優(yōu)先級進(jìn)行排列,該策略以PR 值來衡量網(wǎng)頁的重要性,當(dāng)網(wǎng)頁的交換鏈接頁面具有更高的PR 值時,則該網(wǎng)頁的可信程度便較高,其PR 值也相對較高,相應(yīng)的在搜索引擎中會具有更高的排名。
Scrapy 作為WEB 爬蟲框架,其是以Python 為基礎(chǔ)進(jìn)行開發(fā)的,Scrapy 主要是對網(wǎng)頁中的信息進(jìn)行抓取,將結(jié)構(gòu)化數(shù)據(jù)從網(wǎng)站中提取出來。在Scrapy 框架中,可利用RFPDupeFilter 類實現(xiàn)去重,這使其非常適用于對小型網(wǎng)站中的數(shù)據(jù)進(jìn)行挖掘與處理,不過當(dāng)網(wǎng)站規(guī)模較大時,可能會出現(xiàn)較大的內(nèi)存消耗,為了解決該問題,可通過布隆過濾器來降低內(nèi)存消耗,在布降過濾器中配置有pybloom 類庫,該類庫可對內(nèi)存消耗問題進(jìn)行有效解決。在對爬蟲模塊進(jìn)行設(shè)計時,考慮到大多數(shù)網(wǎng)站都制定了相應(yīng)的安全策略來應(yīng)對爬蟲,因此在應(yīng)用Scrapy 爬蟲時可按照以下策略來進(jìn)行:第一種策略是把download_delay 的參數(shù)值從原有的1s 設(shè)置為2s 或以上,因校園網(wǎng)的更新數(shù)據(jù)頻率較低,因此不會產(chǎn)生較大的影響。第二種策略是根據(jù)需要,利用user agent 中間件來對原有的中間件進(jìn)行代替。
在高校校園網(wǎng)中,利用Scrapy 爬蟲來對網(wǎng)站數(shù)據(jù)進(jìn)行訪問,通過相應(yīng)的處理可添加到索引目錄之中,這樣用戶在使用校園網(wǎng)時便可以通過索引目錄來快速找到所需內(nèi)容。在索引及檢索中,主要是以布爾運(yùn)算為基礎(chǔ),索引包括兩種方式,一種是正向索引,另一種則是反向索引,其中正向索引是通過Scrapy 爬蟲來對訪問過的網(wǎng)頁信息按照關(guān)鍵詞來進(jìn)行匯總,以此形成相應(yīng)的集合,當(dāng)用戶需要對所需信息進(jìn)行檢索時,只需在檢索目錄中輸入對應(yīng)的關(guān)鍵詞,校園網(wǎng)中的搜索引擎便會利用遍歷算法來對所有包括該關(guān)鍵詞的信息進(jìn)行查找,不過這種索引方式的效率較低。而反向索引則是對索引的倒置,其可較好的映射關(guān)鍵詞至文檔,利用反向索引,能夠幫助用戶更快的利用關(guān)鍵詞來獲取所需信息。在校園網(wǎng)中,其索引及檢索模塊可采用Whoosh 來實現(xiàn),其是以Python 為基礎(chǔ)所建立的檢索編程庫,在Whoosh 中包含有大量的模塊,這些模塊不具備二進(jìn)制包,因此不需要進(jìn)行繁瑣的編譯,從而大幅減少了程序所出現(xiàn)的崩潰問題。在Whoosh 中,需要先對相應(yīng)的索引對象進(jìn)行建立,然后會生成對應(yīng)的索引存儲目錄來為用戶提供檢索服務(wù)。在校園網(wǎng)中,還可利用Whoosh 來進(jìn)行jieba 中文分詞,通過動態(tài)規(guī)劃來篩選出概率最高的路徑,利用前綴詞典來對詞圖進(jìn)行快速掃描,通過jieba 分詞能夠使句子的文本分析變得更加精確,從而賦予校園網(wǎng)更強(qiáng)的中文分詞能力。
綜上所述,本文對Scrapy 在高校校園網(wǎng)搜索引擎中的具體應(yīng)用進(jìn)行了深入的研究,從而為高校在校園網(wǎng)搜索引擎的改進(jìn)中提供了一種科學(xué)的方法,有效解決了數(shù)據(jù)信息收錄滯后、不全面等問題,提高了搜索引擎在高校校園網(wǎng)中的應(yīng)用效果。