【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫
詳細可參考
(1)書箱:《這就是搜索引擎》《自己動手寫網(wǎng)絡(luò)爬蟲》《解密搜索引擎打樁實踐》
(2)【搜索引擎基礎(chǔ)知識1】搜索引擎的技術(shù)架構(gòu)?
(3)【搜索引擎基礎(chǔ)知識2】網(wǎng)絡(luò)爬蟲的介紹
(一)搜索引擎的開發(fā)一般可分為以下三大部分
1、數(shù)據(jù)采集層:一般使用爬蟲獲取互聯(lián)網(wǎng)的數(shù)據(jù),重要的開源項目有Heritrxi
2、數(shù)據(jù)分析處理層:將從互聯(lián)網(wǎng)上獲取到的數(shù)據(jù)進行提取歸類、分詞、語義分析得出索引得內(nèi)容,等待用戶查詢使用,重要的開源項目有Lucene
3、視圖層:也用戶的交互界面,如一個網(wǎng)站的首頁
其基本架構(gòu)可參考下圖:
(二)網(wǎng)絡(luò)爬蟲的簡介
詳細請參見 ?【搜索引擎基礎(chǔ)知識2】網(wǎng)絡(luò)爬蟲
下面例子將簡單實現(xiàn)寬度優(yōu)先搜索策略。
?廣度優(yōu)先搜索策略
????? 寬度優(yōu)先遍歷策略的基本思路是,將新下載網(wǎng)頁中發(fā)現(xiàn)的鏈接直接插入待抓取URL隊列的末尾。也就是指網(wǎng)絡(luò)爬蟲會先抓取起始網(wǎng)頁中鏈接的所有網(wǎng)頁,然后再選擇其中的一個鏈接網(wǎng)頁,繼續(xù)抓取在此網(wǎng)頁中鏈接的所有網(wǎng)頁。該算法的設(shè)計和實現(xiàn)相對簡單。在目前為覆蓋盡可能多的網(wǎng)頁, 一般使用廣度優(yōu)先搜索方法。也有很多研究將廣度優(yōu)先搜索策略應(yīng)用于聚焦爬蟲中。其基本思想是認為與初始URL在一定鏈接距離內(nèi)的網(wǎng)頁具有主題相關(guān)性的概率很大。另外一種方法是將廣度優(yōu)先搜索與網(wǎng)頁過濾技術(shù)結(jié)合使用,先用廣度優(yōu)先策略抓取網(wǎng)頁,再將其中無關(guān)的網(wǎng)頁過濾掉。這些方法的缺點在于,隨著抓取網(wǎng)頁的增多,大量的無關(guān)網(wǎng)頁將被下載并過濾,算法的效率將變低。
?????? 還是以上面的圖為例,抓取過程如下:
????? ?? 廣度搜索過程:
??????????????????????????
??????? 首先訪問頁面v1 和v1 的鄰接點v2 和v3,然后依次訪問v2 的鄰接點v4 和v5 及v3 的鄰接點v6 和v7,最后訪問v4 的鄰接點v8。由于這些頂點的鄰接點均已被訪問,并且圖中所有頂點都被訪問,由些完成了圖的遍歷。得到的頂點訪問序列為:
和深度優(yōu)先搜索類似,在遍歷的過程中也需要一個訪問標志數(shù)組。并且,為了順次訪問路徑長度為2、3、…的頂點,需附設(shè)隊列以存儲已被訪問的路徑長度為1、2、… 的頂點。
(1)采用廣度優(yōu)先的原因:
重要的網(wǎng)頁往往離種子站點距離較近;萬維網(wǎng)的深度沒有我們想象的那么深,但卻出乎意料地寬(中文萬維網(wǎng)直徑長度只有17,即任意兩個網(wǎng)頁之間點擊17次后便可以訪問到);
寬度優(yōu)先有利于多爬蟲合作抓取;
(2)廣度優(yōu)先的存在不利結(jié)果:
容易導致爬蟲陷入死循環(huán),不該抓取的反復抓取;
應(yīng)該抓取的沒有機會抓取;
(3) 解決以上兩個缺點的方法是深度抓取策略(Depth-First Trsversal)和不重復抓取策略?
(4)為了防止爬蟲無限制地寬度優(yōu)先抓取,必須在某個深度上進行限制,達到這個深度后停止抓取,這個深度就是萬維網(wǎng)的直徑長度。當最大深度上停止抓取時,那些深度過大的未抓取網(wǎng)頁,總是期望可以從其他種子站點更加經(jīng)濟地到達。限制抓取深度會破壞死循環(huán)的條件,即使出現(xiàn)循環(huán)也會在有限次后停止。?
(5)評價:? ?寬度(廣度)優(yōu)先,兼顧深度的遍歷策略,可以有效保證抓取過程中的封閉性,即在抓取過程(遍歷路徑)中總是抓取相同域名下的網(wǎng)頁,而很少出現(xiàn)其他域名下的網(wǎng)頁。
總結(jié)
以上是生活随笔為你收集整理的【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【搜索引擎基础知识3】搜索引擎相关开源项
- 下一篇: 【搜索引擎基础知识2】网络爬虫