HiSpider(Hitask) is a fast and high performance spider with high speed

weixin_34321977發表於2012-03-21

hispider - High speed Spider for crawling web pages - Google Project Hosting

HiSpider(Hitask) is a fast and high performance spider with high speed

嚴格說只能是一個spider系統的框架, 沒有細化需求, 目前只是能提取URL, URL排重, 非同步DNS解析, 佇列化任務, 支援N機分散式下載, 支援網站定向下載(需要配置hispiderd.ini whitelist).

特徵和用法:

基於unix/linux系統的開發

非同步DNS解析

URL排重

支援HTTP 壓縮編碼傳輸 gzip/deflate

字符集判斷自動轉換成UTF-8編碼

文件壓縮儲存

支援多下載節點分散式下載

支援網站定向下載(需要配置hispiderd.ini whitelist )

可通過http://127.0.0.1:3721/ 檢視下載情況統計,下載任務控制(可停止和恢復任務)

依賴基本通訊庫libevbase 和 libsbase (安裝的時候需要先安裝這個兩個庫)

工作流程:

從中心節點取URL(包括URL對應的任務號, IP和port,也可能需要自己解析)

-> 連線伺服器傳送請求

-> 等待資料頭判斷是否需要的資料(目前主要取text型別的資料)

-> 等待完成資料(有length頭的直接等待說明長度的資料否則等待比較大的數字然後設定超時)

-> 資料完成或者超時, zlib壓縮資料返回給中心伺服器,資料可能包括自己解析DNS資訊, 壓縮後資料長度+壓縮後資料, 如果出錯就直接返回任務號以及相關資訊

-> 中心伺服器收到帶有任務號的資料, 檢視是否包括資料, 如果沒有資料直接置任務號對應的狀態為錯誤, 如果有資料提取資料種link 然後儲存資料到文件檔案.

-> 完成後返回一個新的任務.

Require

zlib http://www.zlib.net/

libiconv http://www.gnu.org/software/libiconv

libchardet 0.0.4+ http://code.google.com/p/libibase/downloads/list

libevbase 0.0.14+ http://code.google.com/p/sbase/downloads/list

libsbase 0.3.1+ http://code.google.com/p/sbase/downloads/list

Compile && install

./configure && make && make install

View running state in Browser

http://127.0.0.1:3721/

Usage

hispiderd is control center hispider is download node

./src/hispiderd -c doc/rc.hispiderd.ini
./src/hispider -c doc/rc.hispider.ini

安裝和使用

普通模式 :

./configure && make && make install

除錯模式(可檢視更多的詳細log) :

./configure --enable-debug && make && make install

hispiderd為中心控制節點程式 配置檔案為doc/rc.hispiderd.ini 配置檔案裡有一個basedir 所有的資料儲存在這個目錄下,hispider.doc為文件儲存檔案
hispider為下載節點程式 配置檔案為doc/rc.hispider.ini 如果兩個節點不在一臺機器上需要配置server_ip 預設埠為3721

執行

./hispiderd -c ../doc/rc.hispiderd.ini
./hispider -c ../doc/rc.hispider.ini

文件儲存格式:

typedef struct _LHEADER
  {
        int ndate;
        int nurl;
        int nzdata;
        int ndata;
      }LHEADER;

順序儲存文件的頭,url,文件壓縮正文, 採用zlib壓縮 ndata為正常長度, nzdata為壓縮

後也就是儲存的實際長度. nurl為url長度實際儲存為url\0 長度為nurl+1

下載地址

hispider http://code.google.com/p/hispider/downloads/list

libchardet 0.0.3+ http://code.google.com/p/libibase/downloads/list

libevbase 0.0.14+ http://code.google.com/p/sbase/downloads/list

libsbase 0.3.1+ http://code.google.com/p/sbase/downloads/list

ChangeLog

相關文章