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
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