999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Scrapy框架的校園搜索引擎設(shè)計

2020-05-18 02:41:13馬威
科技創(chuàng)新與應(yīng)用 2020年14期
關(guān)鍵詞:搜索引擎

馬威

摘? 要:近年來隨著數(shù)字化校園建設(shè)進(jìn)度的加快,高校校園網(wǎng)站中的信息不斷增加。校園網(wǎng)用戶量和問題數(shù)量的增加導(dǎo)致查找和索引信息變得困難,用戶搜索服務(wù)的準(zhǔn)確率得不到保障。文章基于Scrapy框架對校園搜索引擎進(jìn)行設(shè)計,利用URL去重策略來提升校園信息的查詢效率,使搜索結(jié)果達(dá)到滿意期望值。

關(guān)鍵詞:搜索引擎;Scrapy框架;URL去重

中圖分類號:TP391.3 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2020)14-0084-02

Abstract: In recent years, with the acceleration of the construction of digital campuses, the information on the campus websites of universities has been increasing. The increase in the number of users and questions on the campus network makes it difficult to find and index information, and the accuracy of user search services cannot be guaranteed. This article designs the campus search engine based on the Scrapy framework. The search engine uses the URL deduplication strategy to improve the query efficiency of campus information, and makes the search results meet the satisfied expectations.

Keywords: search engine; Scrapy framework; URL deduplication

引言

在現(xiàn)今信息化的社會中,人們可以通過網(wǎng)絡(luò)獲得大量的信息。對于校園數(shù)字化建設(shè)來說,大量的冗雜信息給校園網(wǎng)站內(nèi)信息的查找與定位帶來困難。目前大多校園網(wǎng)站都是采用普通的站內(nèi)搜索來查詢信息,難以滿足日益增長的需求。

針對上述問題,為了給學(xué)校打造一個高效、清凈的信息環(huán)境,本文將基于Scrapy框架對校園搜索引擎進(jìn)行相關(guān)設(shè)計。建立校園搜索引擎的可行性主要有以下幾個方面:(1)校園站的網(wǎng)絡(luò)鏈接相對較少,站點層次分明,數(shù)據(jù)抓取進(jìn)程的計算量也較少,能加快服務(wù)器的響應(yīng)速度。(2)所需硬件和軟件配置不高,便于控制項目開發(fā)成本,有利于項目實施。(3)參考體系成熟的相關(guān)模型和算法,加以改進(jìn)優(yōu)化后應(yīng)用到設(shè)計中。

由上述分析可知,建立校園搜索引擎是符合客觀實際需求并且可行的。

1 建立搜索引擎流程分析

1.1 分析搜索引擎框架

建立搜索引擎首要工作是分析設(shè)計流程,本文選用Python 語言中的Scrapy爬蟲框架作為數(shù)據(jù)抓取的核心,接著使用Whoosh建立搜索引擎的索引庫,最后使用Flask設(shè)計Web查詢界面。

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

網(wǎng)絡(luò)爬蟲是一種自動抓取網(wǎng)頁信息的程序,搜索引擎通過爬蟲抓取網(wǎng)頁信息,網(wǎng)絡(luò)爬蟲是搜索引擎的核心。網(wǎng)絡(luò)爬蟲從初始網(wǎng)頁的URL開始,在抓取網(wǎng)頁信息的進(jìn)程中,不停地將所在頁面抓取的子URL放入待抓取URL隊列,所有的抓取信息將會以文件的形式被存儲到數(shù)據(jù)庫。

廣度優(yōu)先遍歷又叫層次遍歷,從網(wǎng)頁的初始URL開始抓取,將網(wǎng)頁的子URL提取到待抓取隊列,已抓取過的URL存儲在一個表里。每次處理新URL前先詢問是否已存在表中,若存在就說明該URL已抓取過,對此URL不再做處理,否則進(jìn)行下一步處理。這種遍歷算法存儲了網(wǎng)頁中所有的URL,所占用存儲空間較大,程序運(yùn)行速度較快。

深度優(yōu)先遍歷是抓取網(wǎng)頁初始URL之前先搜索出一條單獨的鏈。深度優(yōu)先遍歷沿著網(wǎng)頁的子URL抓取到無URL可抓為止,接著返回至某一個網(wǎng)頁URL,再選擇該網(wǎng)頁中的其他URL抓取信息。深度優(yōu)先遍歷不保留網(wǎng)頁的所有URL,抓取后的URL會自動從數(shù)據(jù)庫中刪除,這種遍歷算法的空間復(fù)雜度較小,占用空間也相對較少,本次設(shè)計選用這種遍歷算法。

非完全PageRank 策略是一種基于PageRank的抓取策略。該策略的工作原理是將已抓取的網(wǎng)頁和待抓取的網(wǎng)頁相加,在集合中進(jìn)行PageRank計算,然后把待抓取URL 隊列中的網(wǎng)頁按照PageRank計算結(jié)果從高到低排序得到一組序列,該序列就是程序后續(xù)所要依次抓取的URL列表。

1.3 搜索引擎的索引

搜索引擎的索引是關(guān)鍵詞與網(wǎng)頁文件之間的一種對應(yīng)關(guān)系,其核心是進(jìn)行布爾集合運(yùn)算。目前存在兩種索引:正向索引和倒排索引。

正向索引是文章生成的關(guān)鍵詞的集合,抓取信息時會記錄關(guān)鍵詞的所在位置以及出現(xiàn)頻率等信息。正向索引的結(jié)構(gòu)是每個文檔都對應(yīng)其出現(xiàn)的關(guān)鍵字列表(關(guān)鍵詞,出現(xiàn)位置,出現(xiàn)次數(shù)),正向索引需要遍歷掃描所有正向索引文件才知道哪些文檔帶有某個關(guān)鍵詞,搜索效率相對較低。

反向索引與正向索引相反,其數(shù)據(jù)結(jié)構(gòu)是“單詞-文檔矩陣”,是關(guān)鍵詞對應(yīng)含有此關(guān)鍵詞的文檔集合。反向索引不但能記錄擁有相應(yīng)關(guān)鍵詞文件的序列,而且能記錄關(guān)鍵詞頻率以及相應(yīng)文檔頻率、關(guān)鍵詞出現(xiàn)位置等信息。在排序時這些信息都會被分別加權(quán)處理,產(chǎn)生最終的排序結(jié)果。

Whoosh是Python語言中的開源索引庫,Whoosh提供許多函數(shù)和類應(yīng)用于建立文檔索引,通過查詢輸入關(guān)鍵詞對文檔進(jìn)行搜索。

使用whoosh建立索引具備以下優(yōu)點:(1)運(yùn)行速度相比solr和elasticsearch較快,使用python語言解析,不用再使用其他編譯器。(2)使用BM25F作為排序算法,更方便自定義。(3)占用存儲空間較小。(4)支持存儲任意的python面向?qū)ο蟆?/p>

whoosh索引的概念比solr和elasticsearch更簡單易懂,不需要深入研究分布式爬蟲,適用于搜索引擎的初學(xué)者。

1.4 Web查詢界面

查詢結(jié)果的排序規(guī)則與單文本詞匯頻率指數(shù)(TF)和逆文本詞匯頻率指數(shù)(IDF)相關(guān)。單文本詞匯頻率是根據(jù)網(wǎng)頁長度對網(wǎng)頁中關(guān)鍵詞的出現(xiàn)次數(shù)做歸一化處理,即關(guān)鍵詞的次數(shù)除以網(wǎng)頁的總詞數(shù)。利用IDF提供的關(guān)鍵詞再加權(quán)重,那么網(wǎng)頁以及查詢有關(guān)的計算就從以前對詞頻的計算變成加權(quán)的求和。

TF-IDF=TF*IDF

TF-IDF和關(guān)鍵詞在文檔中的出現(xiàn)次數(shù)成正比,與該詞在整個語言中的出現(xiàn)次數(shù)成反比。

Web查詢界面設(shè)計使用Flask框架。查詢界面內(nèi)的索引模塊會根據(jù)查詢語句進(jìn)行檢索排序,然后將查詢結(jié)果返回給界面展示,用戶就會得到查詢信息的相關(guān)內(nèi)容。

2 在搜索引擎中應(yīng)用Scrapy爬蟲框架

2.1 Scrapy框架工作原理

Scrapy是一個基于Twisted的異步處理框架,是Python語言編寫的爬蟲框架,用戶能根據(jù)自身需求修改配置。Scrapy框架還能應(yīng)用于數(shù)據(jù)挖掘、數(shù)據(jù)分析、數(shù)據(jù)存儲、檢測網(wǎng)絡(luò)異常等應(yīng)用領(lǐng)域。

Scrapy框架組件及其中間件的功能如下:(1)Scrapy引擎:串聯(lián)框架各個模塊,觸發(fā)事務(wù)處理流程,控制系統(tǒng)數(shù)據(jù)處理流程。(2)Scheduler(調(diào)度器):有效處理待抓取URL隊列。接受請求后把下一個待抓取URL返回給調(diào)度器。(3)Downloader(下載器):向網(wǎng)站服務(wù)器發(fā)送訪問頁面請求,再用爬蟲抓取網(wǎng)頁的內(nèi)容。(4)Spiders(爬蟲):選擇抓取的網(wǎng)站和數(shù)據(jù)內(nèi)容,創(chuàng)建網(wǎng)頁解析規(guī)則和域名過濾規(guī)則等。(5)Item Pipeline(項目管道):處理爬蟲抓取的數(shù)據(jù),包括數(shù)據(jù)清洗、URL去重和數(shù)據(jù)存儲等。(6)Middlewares(中間件):處理引擎與下載器之間的請求及響應(yīng),設(shè)置代理ip和用戶代理。

Scrapy爬蟲框架能快捷抓取網(wǎng)站信息,架構(gòu)清晰,模塊之間的耦合程度低,可擴(kuò)展性強(qiáng),幫助用戶靈活地完成各種需求。

2.2 Scrapy框架的網(wǎng)頁URL去重策略

Scrapy框架中URL去重是由RFPDupeFilter類中的request_fingerprint的方法來實現(xiàn)的。

調(diào)度器根據(jù)每一個URL請求的對應(yīng)信息加密得到一個指紋信息,然后將自身維護(hù)的待抓取URL指紋信息和加密指紋信息對比,若指紋信息已存在就說明重復(fù)請求,將該請求從隊列中刪除,若沒有該指紋信息,就把請求對象放入隊列中等待被調(diào)用。

通常request請求時,在參數(shù)中加入dont_filter=False能關(guān)閉去重策略,可以反復(fù)抓取同一網(wǎng)站中不同子URL的網(wǎng)頁信息。在進(jìn)行大量的網(wǎng)頁去重時,也可以使用Bloom Filter算法,就是利用布隆過濾器來節(jié)省占用的內(nèi)存,能夠大幅度降低內(nèi)存使用,只需要使用傳統(tǒng)方法的八分之一到四分之一。

關(guān)于數(shù)據(jù)去重一般有兩種方法:一是使用Python的集合類型在pipeline中添加的去重策略,這種方法操作簡單,不容易引發(fā)錯誤;二是將數(shù)據(jù)存儲到數(shù)據(jù)庫時去重,比如在Mysql中設(shè)置唯一索引或者在Redis中使用集合等,這種方法對爬蟲的工作效率影響較小,但是會增加數(shù)據(jù)庫的工作負(fù)荷。

2.3 Scrapy框架爬蟲防禁止策略

在爬蟲程序運(yùn)行的過程中,會頻繁訪問目標(biāo)網(wǎng)站,甚至?xí)斐赡繕?biāo)網(wǎng)站的服務(wù)器超負(fù)荷運(yùn)行。這樣會導(dǎo)致程序的IP被網(wǎng)站禁止訪問,從而影響數(shù)據(jù)抓取的效率。以下是兩種防止爬蟲被禁止的策略: (1)在編寫爬蟲程序時,將settings.py文件中download_delay的參數(shù)設(shè)置為2秒以上,讓程序抓取數(shù)據(jù)的頻率不要太高。但這樣也會增加程序的運(yùn)行時間。(2)動態(tài)設(shè)置User-Agent代理池。User-Agent是包含瀏覽器、操作系統(tǒng)等信息的一個字符串,代理池的作用是在http請求頭部加入user-agent選項,偽裝成瀏覽器向服務(wù)器端發(fā)包。

3 結(jié)束語

本文通過Scrapy爬蟲框架的使用,設(shè)計一個簡單的校園搜索引擎系統(tǒng)。利用Scrapy爬蟲框架以及Pythn語言擴(kuò)展庫,來實現(xiàn)校園搜索引擎系統(tǒng)穩(wěn)定運(yùn)行,在推廣校園搜索引擎的使用方面存在著積極意義。系統(tǒng)同時也存在一些有待改進(jìn)提升的功能,例如添加抓取校園官方微博以及微信公眾號里的熱點新聞?wù)宫F(xiàn)在查詢界面,這樣用戶就可以及時獲取校園動態(tài),還有改進(jìn)搜索算法、提高搜索結(jié)果智能化等都是需要進(jìn)一步研究的內(nèi)容。

參考文獻(xiàn):

[1]耿大偉.基于Python技術(shù)的校園網(wǎng)搜索引擎的設(shè)計與實現(xiàn)[D].燕山大學(xué),2015.

[2]崔慶才.Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)[M].北京:人民郵電出版社,2019.

[3]董李鵬,高東懷,張迎,等.基于Lucene的校園網(wǎng)智能搜索引擎的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(6):83-86.

[4]姜杉彪,黃凱林,盧昱江,等.基于Python的專業(yè)網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)[J].企業(yè)科技與發(fā)展,2016(8):17-19.

猜你喜歡
搜索引擎
Chrome 99 Canary恢復(fù)可移除預(yù)置搜索引擎選項
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
廣告主與搜索引擎的雙向博弈分析
基于Lucene搜索引擎的研究
知識漫畫
百科知識(2012年11期)2012-04-29 08:30:15
一種自反饋式元搜索系統(tǒng)的設(shè)計
搜索引擎,不止有百度與谷歌
搜索,也要“深搜熟濾”
主站蜘蛛池模板: 国产91蝌蚪窝| 国产精品福利尤物youwu| 五月激激激综合网色播免费| 91在线一9|永久视频在线| 免费在线色| 青青草久久伊人| 亚洲日本精品一区二区| 欧美日韩国产在线人| 国产午夜精品一区二区三| 国产麻豆永久视频| 青青操视频免费观看| 伊人久久青草青青综合| 91蜜芽尤物福利在线观看| 久久77777| 国产精品成| 欧美yw精品日本国产精品| 久久国产精品夜色| 久青草免费在线视频| 97在线免费| 中文字幕久久波多野结衣 | 国产一级无码不卡视频| 亚洲欧美精品一中文字幕| 午夜在线不卡| 午夜欧美在线| 国产综合色在线视频播放线视| 91久久国产热精品免费| 亚洲人成影视在线观看| 五月婷婷综合色| 在线日韩一区二区| 成人av专区精品无码国产| 日韩欧美中文| 四虎AV麻豆| 久久精品日日躁夜夜躁欧美| 欧美精品成人| 国产三级精品三级在线观看| 精品乱码久久久久久久| 国产又色又爽又黄| 久久人搡人人玩人妻精品一| 91在线无码精品秘九色APP| 亚洲国产亚综合在线区| 国产精品成人第一区| 伊人久久大香线蕉综合影视| 日本亚洲欧美在线| 黄色网站不卡无码| 亚洲天堂视频在线观看| 日本手机在线视频| 国产精品久久久精品三级| 91精品国产麻豆国产自产在线| 在线va视频| 999国产精品| 久久精品人人做人人爽97| 国产97视频在线观看| 福利一区三区| 精品无码人妻一区二区| 国产精品亚欧美一区二区| 国内精品久久人妻无码大片高| 国产激爽爽爽大片在线观看| 日韩精品毛片人妻AV不卡| 污视频日本| 永久免费精品视频| 亚洲无码视频喷水| 久久综合激情网| 国产拍在线| 色综合久久88色综合天天提莫| 久久无码av一区二区三区| 57pao国产成视频免费播放| 一本色道久久88综合日韩精品| 玖玖精品在线| 国产精品一老牛影视频| 国产中文在线亚洲精品官网| 精品无码国产一区二区三区AV| 欧美69视频在线| 欧美精品成人| 香蕉伊思人视频| 欧美日在线观看| 亚洲日韩国产精品无码专区| 日本黄色不卡视频| 亚洲免费毛片| 91福利国产成人精品导航| 国产免费网址| 成人在线综合| 午夜性爽视频男人的天堂|