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è)計
搜索引擎,不止有百度與谷歌
搜索,也要“深搜熟濾”
主站蜘蛛池模板: 亚洲首页国产精品丝袜| 日韩中文字幕免费在线观看 | 欧美色亚洲| 国产乱人视频免费观看| 亚洲美女一区二区三区| 国产网友愉拍精品| 五月婷婷丁香综合| 色妞永久免费视频| 亚洲成人网在线播放| 白浆免费视频国产精品视频| 国产屁屁影院| 永久成人无码激情视频免费| 九九热精品免费视频| 日韩在线中文| 2021国产在线视频| 亚洲国产成人超福利久久精品| 精品一区二区三区自慰喷水| 亚洲国产成人精品一二区| 91九色视频网| 在线看AV天堂| 99精品国产电影| 亚洲天堂福利视频| 久久久久久尹人网香蕉| 干中文字幕| 老熟妇喷水一区二区三区| 日本欧美中文字幕精品亚洲| a级毛片免费网站| 国产欧美一区二区三区视频在线观看| 日韩视频精品在线| 国产一二三区视频| 亚洲毛片一级带毛片基地| 在线亚洲小视频| 亚洲欧美综合另类图片小说区| 中文字幕首页系列人妻| 97在线观看视频免费| 免费aa毛片| 亚洲天堂日本| 亚洲第一页在线观看| 亚洲VA中文字幕| 国产区精品高清在线观看| 四虎AV麻豆| 国产美女丝袜高潮| 日韩av高清无码一区二区三区| 天天干天天色综合网| 亚洲无线一二三四区男男| 欧美精品xx| 老司机久久99久久精品播放| 欧美一道本| 色国产视频| 国产精品黑色丝袜的老师| 亚洲精品卡2卡3卡4卡5卡区| 国产欧美又粗又猛又爽老| 国产午夜福利亚洲第一| 欧美一区二区三区国产精品| 国产在线观看一区精品| 欧美亚洲一二三区| 久久永久免费人妻精品| 国产女人爽到高潮的免费视频| 国产精品jizz在线观看软件| 国产欧美日韩精品综合在线| 久青草网站| 精品国产Ⅴ无码大片在线观看81| 成人国产精品一级毛片天堂| 在线观看免费AV网| 国产精品私拍在线爆乳| 亚洲黄色片免费看| 国产精品.com| 强乱中文字幕在线播放不卡| 永久免费av网站可以直接看的 | 国产高清无码第一十页在线观看| 青青青草国产| 国产永久在线视频| 国产区精品高清在线观看| 91成人在线免费观看| av无码久久精品| 婷婷亚洲综合五月天在线| 女人18毛片水真多国产| 91精品国产91久无码网站| 永久成人无码激情视频免费| 美女免费黄网站| 国产av一码二码三码无码| 中文字幕在线欧美|