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