網頁抓取/數據抽取/信息提取工具包MetaSeeker的網絡爬蟲的原理

網絡爬蟲種類繁多,下面進行很粗略的分類並說明網頁抓取/數據抽取/信息提取工具包MetaSeeker中的爬蟲屬於哪一類。node

若是按照部署在哪裏分,能夠分紅:正則表達式

1,服務器側:通常是一個多線程程序,同時下載多個目標HTML,能夠用PHP, Java, Python(當前很流行)等作,通常綜合搜索引擎的爬蟲這樣作。可是,若是對方討厭爬蟲,極可能封掉服務器的IP,服務器IP又不容易改,另外耗用的帶寬也是挺貴的。編程

2,客戶端:很適合部署定題爬蟲,或者叫聚焦爬蟲。作一個與Google,百度等競爭的綜合搜索引擎成功的機會微乎其微,而垂直搜訴或者比價服務或 者推薦引擎,機會要多得多,這類爬蟲不是什麼頁面都取的,而是隻取關心的頁面,並且只取頁面上關心的內容,例如提取黃頁信息,商品價格信息,還有提取競爭 對手廣告信息的。這類爬蟲能夠部署不少,並且能夠頗有侵略性,對方很難封鎖。服務器

網頁抓取/數據抽取/信息提取工具包MetaSeeker中的爬蟲屬於客戶端定題爬蟲(更詳細的產品特色),能夠低成本大量部署,因爲客戶端IP地址是動態的,因此很難被目標網站封鎖。網絡

咱們只說定題爬蟲,普通爬蟲要簡單的多,網上不少,若是從怎樣提取數據上分,還能夠分紅兩類:數據結構

1,經過正則表達式提取內容,HTML文件就是一個文本文件,直接使用正則表達式在指定地方提取內容便可,"指定地方"不必定是絕對定位,例如,能夠參照HTML的標籤訂位,更準確多線程

2,利用DOM提取內容,HTML文件先轉成DOM數據結構,再遍歷這個結構提取內容。工具

有人會問,爲何還要用DOM方式,轉了一道?有不少DOM方式的存在理由:首先,DOM結構的分析都不用本身作,有現成的庫,編程並無變複雜; 第二,能夠實現很複雜可是很靈活的定位規則,而正則表達式很難寫;第三,若是定位是要考慮HTML文件結構,用正則表達式不容易解析,HTML文件常常有 錯,若是將這個任務交給現成的庫,要容易不少。第四,假設還要解析Javascript的內容,正則表達式無能爲力了,固然DOM方式本身也無能爲力,但 是能夠利用某個平臺的能力,就有可能提取AJAX網站內容。還有不少緣由。網站

網頁抓取/數據抽取/信息提取工具包MetaSeeker中的爬蟲就就採用了DOM方式,它利用Mozilla平臺的能力,只要是Firefox看到的東西,它都能提取。搜索引擎

相關文章
相關標籤/搜索