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