『IR 信息檢索入門必看』#6 網絡信息檢索(簡明)

訪問博客查看 本文 最新內容,排版更美觀ヾ(?ω?`)o 如有錯誤歡迎指出~

IR 信息檢索系列筆記:

隨著互聯網的興起,Web 的增多,網絡信息檢索成為 IR 中的一大主題。

簡要介紹以下幾個相關概念:

  • 最廣的是 Network ,一個物理層面的廣義網絡
  • 其次,是互聯網。因特網和其他類似的由計算機相互連接而成的大型網絡系統都可算是互聯網,Internet 是互聯網中最大的一個。
  • 再者,是 Internet,即因特網。由許多小的子網互聯而成的一個邏輯網,每個子網中連接著若干臺計算機(主機)。
  • 最后,是 Web,也稱 World Wide Web,即萬維網。它使用超文本技術將遍布全球的各種信息資源鏈接起來,以便于用戶訪問。Web 只是 Internet 上的一個應用層服務

網絡信息檢索 | Web Search

Goal | 目標

Provide information discovery for large amounts of open access material on the web.

Challenges | 挑戰

  • Volume of material -- several billion items, growing steadily

  • Items created dynamically or in databases (deep web, about 150 times of web pages of surface web)

  • Great variety -- length, formats, quality control, purpose, etc.

  • Inexperience of users -- range of needs

  • Economic models to pay for the service -- 訂閱、廣告、許可

Strategies | 策略

  • Subject hierarchies (分類目錄) + human indexing -- 1st Generation
  • Web crawling (網頁爬取) + automatic indexing -- 2nd Generation
  • Human directed web crawling and automatic indexing -- Mixed models

Components | 組成

  • Web crawler: URL Server + Crawler + Store Server
  • Indexing system: URL Resolver + Indexer + Pagerank (離線網頁排名算法)
  • Search system: Sorter + Searcher (在線檢索服務)

網絡爬蟲 | Web crawler

Web crawler,也稱 Web spider,用于下載網頁的一種程序。只要給出 seed URLs (Uniform Resource Locator) 的初始集,就可以遞歸地(recursively)根據集合中的鏈接下載更多的頁面。有兩種特殊的爬蟲:

  • Focused web crawler,針對特定類別的網站的專業爬蟲,需要分類方法支持。

  • Deep web crawler,針對動態網頁的深網爬蟲,需要腳本模擬動作支持。

對于所有的爬蟲,最重要的是抓取一個頁面中的鏈接,擴充初始集。

此外,一個爬蟲,還要考慮性能(爬取大量頁面)、禮貌性(避免過載服務器、違法操作)、應對故障(破損鏈接、超時、爬蟲陷阱)、搜索策略(DFS/BFS),存儲網頁(并行文件系統)等。

禮貌性 | Politeness

「惡意爬蟲」往往會在短時間內大量訪問同一個站點,造成 DDoS 攻擊(Distributed denial of service attack,分布式拒絕服務攻擊),進而導致網站的癱瘓。此外,還存在非法爬取私人信息、非法收集數據等行為。

為了在法律上限制爬蟲,有以下的協議:

Robots Exclusion Protocol:網站管理者可以注明該網站的哪些路徑是不可被爬蟲訪問的,這些協議會體現在 http://.../robots.txt 中。

Robots META tag:HTML 作者可以注明該頁面中的文件不可被索引,或該頁面不可被用于解析以獲得更多鏈接。只需要在 HTML 文本中添加以下命令:

<meta name="robots" content="noindex, nofollow">

爬蟲性能 | Performance

爬蟲面向的信息往往是極龐大的,超過了一臺機器的性能范圍。現實中,通常采用并行分布式爬蟲,將任務量劃分到各臺機器。那么如何分配任務才能使得各臺機器承受的壓力均勻呢?

Distributing the Workload

首先可以將機器編號 0 至 N-1,再對一個 URL 的主域名(Domain name)做哈希,得到一個 0 至 N-1 的值,并分配到對應機器。這樣做的好處有:

  • 同一域名只在一臺機器上訪問,這樣就可以防止多臺機器同時訪問了同一域名(避免對其造成 DoS 攻擊)。
  • 不需要主服務器的分配,減少了機器間的溝通,主域名下的子域名全在同一臺機器中。
  • 每臺機器有獨立的 DNS cache (域名緩存),可以提高查詢效率。

Software Hazards

此外,要提高爬蟲的性能,還要實現軟件故障的處理:

  • 過慢、無應答的 DNS/HTTP 服務器
  • 過大、無限大的頁面(自動填充型)
  • 無限的鏈接(隨時間變化的路徑)
  • 破損的 HTML 頁面

Extract Links

抓取頁面中的鏈接、解析頁面中的鏈接也會遇到許多難題:

  • 相對路徑、絕對路徑
  • CGI (Common Gateway Interface, 公共網關接口) 動態生成的頁面
  • Server-side 服務端腳本
  • 隱藏在 JavaScript 代碼中的鏈接

爬蟲架構 | Crawler Architecture

接下來介紹一種經典的分布式爬蟲架構 High performance large scale web spider architecture

爬蟲架構
  • URL Manager

存放所有訪問過的 URL 記錄,以及待訪問隊列。

  • Pool of data collector

數據收集池,按照 URL Manager 分配的序列訪問網頁,內部通常由多臺機器多線程地收集網頁數據。

  • Set of filters

實現數據統計、頁面索引、鏈接提取的功能,并返回新的連接到 URL Manager。

  • Storage manager

負責壓縮、解壓縮、存儲、檢索數據。

  • Communicator

通信器,將新找到的頁面和找到它的頁面連接,完成 URL 去重等任務。

工作流程

URL 隊列 | URL Frontier

URL Frontier 維護了一個包含大量 URL 的隊列,并且每當有爬蟲線程尋找 URL 的時候,它都會按照某種順序重新排序。以何種順序返回隊列中的 URL,需要有兩個方面的考慮:

  • 第一個要考慮的是具有很高更新頻率的高質量頁面,即頁面的優先級。一個頁面的優先級權值應該是由它的改變頻率和它本身網頁質量(使用一些恰當的質量評估方法)共同決定的。
  • 第二個要考慮的就是禮貌策略:我們必須避免在很短的時間間隔內重復抓取同一個主機。因此,如果URL隊列被設計成簡單的優先級隊列的話,可能會造成對某一主機的大量的訪問請求。
URL隊列工作流程

上圖展示了一個基于禮貌性和權值策略的URL隊列的實現。它的目標是確保:

  • 每次只有一個連接去訪問一臺主機;
  • 連續對同一個主機的訪問請求之間存在幾秒鐘的等待時間;
  • 具有高優先級的頁面將會被優先爬取。

其中有兩個重要的子模塊,前部分的 Front 隊列集合 F,以及后部分的 Back 隊列集合 B。這兩種隊列均是 FIFO 隊列。

Front 隊列實現了對權值相關處理,而 Back 隊列實現了對禮貌策略的相關處理。在一條 URL 被添加到隊列的過程中,它將會先后穿越 Front 和 Back 隊列。

首先,權值計算器會給該 URL 分配一個介于 1 和 F 之間的整數權值,再進入相應的 Front 隊列,具有很高更新頻率的文檔(如新聞頁面)將會被賦予一個很高的權值(通過啟發式方法)。而后高權值對應的 Front 隊列也會更高頻率的吞吐 URL。

此外,我們需要維護一個,堆里存放著的條目對應每一個 Back 隊列,該條目記錄著該隊列所對應的主機可以再次被連接的最早時間。注意:每個隊列僅對應一個主機,即滿足分布式的要求。

請求獲取 URL 的爬蟲線程會抽取出堆頂元素(時間最早者),然后一直等到相應時間后訪問之。從而避免訪問頻率過高。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容