通用搜索引擎的處理是互聯(lián)網(wǎng)網(wǎng)頁,目前網(wǎng)頁數(shù)量以百億計,所以搜索引擎首先面臨的問題就是:如何能夠設(shè)計出高效的下載系統(tǒng),以將如此海量的網(wǎng)頁數(shù)據(jù)傳送到本地,在本地形成互聯(lián)網(wǎng)網(wǎng)頁的鏡像備份。
網(wǎng)絡(luò)爬蟲即起此作用,它是搜索引擎系統(tǒng)中很關(guān)鍵也很基礎(chǔ)的構(gòu)件。本章主要介紹與網(wǎng)絡(luò)爬蟲相關(guān)的技術(shù),盡管爬蟲技術(shù)經(jīng)過幾十年的發(fā)展,從整體框架上已相對成熟,但隨著互聯(lián)網(wǎng)的不斷發(fā)展,也面臨著一些有挑戰(zhàn)性的新問題。
通用爬蟲框架
一個通用的爬蟲框架流程。首先從互聯(lián)網(wǎng)頁面中精心選擇一部分網(wǎng)頁,以這些網(wǎng)頁的鏈接地址作為種子URL,將這些種子URL放入待抓取URL隊列中,爬蟲從待抓取URL隊列依次讀取,并將URL通過DNS解析,把鏈接地址轉(zhuǎn)換為服務(wù)器對應(yīng)的IP地址。然后將其和網(wǎng)頁相對路徑名稱交給網(wǎng)頁下載器,網(wǎng)頁下載器負(fù)責(zé)頁面內(nèi)容的下載。對于下載到本地的網(wǎng)頁,一方面將其存儲到頁面庫中,等待建立索引等后續(xù)處理;另一方面將下載網(wǎng)頁的URL放入抓取URL隊列中,這個隊列記載了爬蟲系統(tǒng)已經(jīng)下載過的網(wǎng)頁URL,以避免網(wǎng)頁的重復(fù)人抓取。對于剛下載的網(wǎng)頁,從中抽取所包含的所有鏈接信息,并在已抓取URL隊列中檢查,如果發(fā)現(xiàn)鏈接還沒有被抓取過,則將這個URL放入URL放入待抓取URL隊列末尾,在之后 的抓取調(diào)度中會下載這個URL對應(yīng)的網(wǎng)頁。如此這般,形成循環(huán),直到待抓取URL隊列為空,這代表著爬蟲系統(tǒng)已將能夠抓取的網(wǎng)頁盡數(shù)抓完,此時完成一輪完整的抓取過程。