root權限:html
sudo nautilusjava
一:準備工做:
1.
安裝gcc: sudo apt-get install gcc
安裝g++: sudo apt-get install g++
安裝xutils-dev:sudo apt-get install xutils-dev
安裝make: sudo apt-get install make
2.
到官網下載larbin.tar.gz
安裝:
1.解壓larbin的包:
2.進入到 larbin目錄下:cd /home/shaoweinan/larbin-2.6.3
3.修改adns文件夾的internal.h文件569-571行:
adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,
vbuf vb, parsedomain_flags flags,
const byte dgram, int dglen, intcbyte_io, int max);
改成:
adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,
vbuf vb, adns_queryflags flags,
const byte dgram, int dglen, intcbyte_io, int max);
4.複製/usr/include/c++/的iostream文件到larbin的src目錄下,並更名爲iostream.h,在文件中添加一句using namespace std;
5.修改編譯選項配置:vi options.h
修改輸出選項: 將//#define SIMPLE_SAVE前的//取消掉,在#define DEFAULT_OUTPUT前加//
(註釋的其實至關清楚的)
6.檢查系統是否知足編譯要求:./configure
7.編譯:make
8.運行:進入larbin目錄:./larbin
9.ctrl+c 終止程序ios
2、Larbin的配置說明
larbin的正常使用須要配置options.h和larbin.config這兩個文件。若是修改了options.h,則須要從新make一下。若是隻修改了larbin.conf則不須要從新make。
一、larbin.conf文件c++
###############################################
//客戶端標記,當對其餘網站抓取時,被抓取的網站知道是什麼抓取的web
UserAgent larbin_2.6.3服務器
############################################
# What are the inputs and ouputs of larbin
# port on which is launched the http statistic webserver
# if unset or set to 0, no webserver is launchedcookie
//用於運行的http web服務器的端口號(larbin運行時訪問http://localhost:8081/,設置爲http_port 8081).若是將端口設爲0,則不會啓動web服務器。經過這個能夠查看爬行結果。less
httpPort 8081dom
# port on which you can submit urls to fetch
# no input is possible if you comment this line or use port 0fetch
//你要爬取url的端口。若是註釋掉或設爲0,則可能沒有任何輸入。若是經過手動或者程序提交爬取的//urls,則必須練就到計算機的TCP端口1976,即設爲:inputPort 1976,能夠添加爬行的url。
#inputPort 1976
############################################
# parameters to adapt depending on your network
# Number of connexions in parallel (to adapt depending of your network speed)
//並行爬取網頁的數量,根據本身環境的網速調解,若是超時太多,則要下降這個並行數量
pagesConnexions 100
# Number of dns calls in parallel
//並行DNS域名解析的數量。
dnsConnexions 5
# How deep do you want to go in a site
//對一個站點的爬取的深度
depthInSite 5
# do you want to follow external links
//不容許訪問外部連接。若是設置則只可訪問同一主機的鏈接
#noExternalLinks
# time between 2 calls on the same server (in sec) : NEVER less than 30
//訪問同一服務器的時間間隔。不可低於30s,建議60s
waitDuration 60
# Make requests through a proxy (use with care)
//是否用代理鏈接,若是用,則要設置、能夠不用盡可能不要用,這個選項要謹慎
#proxy www 8080
##############################################
# now, let's customize the search
# first page to fetch (you can specify several urls)
//開始爬取的URL
startUrl http://slashdot.org/
# Do you want to limit your search to a specific domain ?
# if yes, uncomment the following line
//這個選項設置了,則不能夠爬行指定的特殊域名
#limitToDomain .fr .dk .uk end
# What are the extensions you surely don't want
# never forbid .html, .htm and so on : larbin needs them
//不想要的擴展名文件。必定不要禁止.html、.htm.larbin爬取的就是它們。禁止也是無效的
forbiddenExtensions
.tar .gz .tgz .zip .Z .rpm .deb
.ps .dvi .pdf
.png .jpg .jpeg .bmp .smi .tiff .gif
.mov .avi .mpeg .mpg .mp3 .qt .wav .ram .rm
.jar .java .class .diff
.doc .xls .ppt .mdb .rtf .exe .pps .so .psd
end
二、options.h
2.1 輸出模式
// Select the output module you want to use
//默認模式。什麼也不輸出,不要選擇這個
#define DEFAULT_OUTPUT // do nothing...
//簡單保存,存在save/dxxxxx/fyyyyy文件中,每一個目錄下2000個文件
//#define SIMPLE_SAVE // save in files named save/dxxxxxx/fyyyyyy
//鏡像方式存儲。按網頁的層次存儲,能夠做爲網頁的字典。
//#define MIRROR_SAVE // save in files (respect sites hierarchy)
//狀態輸出。在網頁上進行狀態輸出,能夠查看http://localhost:8081/output.html查看結果
//#define STATS_OUTPUT // do some stats on pages
這些模式被定製在src/type.h中,能夠在src/interf/useroutput.cc中定製本身的輸出模式。
這個文件中還有不少相關配置,更改後,須要從新編譯。
2.2 特定查詢
// Set up a specific search
//設置特定的查詢
//#define SPECIFICSEARCH
//內容類型
//#define contentTypes ((char *[]) { "audio/mpeg", NULL })
//文件擴展。用於查詢速度,不涉及類型,類型由上一個決定
//#define privilegedExts ((char *[]) { ".mp3", NULL })
2.3 設置完要設置特定文件的管理
#define DEFAULT_SPECIFIC //默認管理方式。 做爲html有限制除了被解析。
// 存儲特定文件。 容許將文件存儲在硬盤上 文件能夠很大在src/types.h 能夠具體設置。
#define SAVE_SPECIFIC
//動態存儲模式。對於較大的文件動態的分配buffer。
#define DYNAMIC_SPECIFIC
能夠經過"src/fetch/specbuf.cc" and "src/fetch/specbuf.h" 定義特定文件的管理方式。
2.4 你要爬蟲作什麼
//不繼續子連接。不設置此項則html頁不被解析連接也不會爬子連接。經過輸入系統添加url時頗有用
#define FOLLOW_LINKS
//每一個網頁中包含的子連接的列表。在"useroutput.cc" 用page->getLinks() 訪問此信息。
#define LINKS_INFO
//url標籤。設置此項url有一個int(默認爲0)。使用輸入系通通時應該給定一個int。能夠經過其獲取u//rl。能夠重定向。
#define URL_TAGS
//不容許重複。若是設置則遇到相同網頁但已遇到過期則無論。
#define NO_DUP
//結束退出。沒有url可爬取時是否退出。設置則退出。
#define EXIT_AT_END
//抓取網頁中的圖片。設置了此項則要更新larbin.conf中禁止項。
#define IMAGES
//抓取任何類型網頁無論其的類型。設置要更新larbin.conf。
#define ANYTYPE
//要larbin管理cookies。只簡單實現但頗有用。
#define COOKIES
2.5 其餘選項說明
#define CGILEVEL 1 //定於選項及其參數。用於對爬行的url的限制。
#define MAXBANDWIDTH 200000 //larbin使用的帶寬大小。不設置則不限帶寬。
#define DEPTHBYSITE //當url連接到其餘站點時新rul的深度是已被初始化的。
2.6 效率和特徵
//是否爲輸入制定一個專用線程。當你在useroutput.cc定義本身的代碼時必須設置此項。
#define THREAD_OUTPUT
//重啓位置記錄表。設置此項時能夠從上次終止處繼續爬取。使用-scratch 選項從上次結束處重啓。
#define RELOAD
2.7 Larbin怎麼工做
#define NOWEBSERVER //不啓動服務器。不運行線程時頗有用
#define GRAPH //是否在狀態也使用柱狀圖。
#define NDEBUG //不啓動調試信息。
#define NOSTATS //不啓動狀態輸出。
#define STATS //啓動狀態輸出。運行時每一個一段時間就會輸出抓取的狀態。
#define BIGSTATS //在標準輸出上顯示每一個被抓去的網頁名字。會下降larbin速度
#define CRASH //用於報告嚴重的bugs用。以gmake debug模式編譯時使用。
3、larbin的配置簡潔版
larbin的正常使用須要配置options.h和larbin.config這兩個文件。若是修改了options.h,則須要從新make一下。若是隻修改了larbin.conf則不須要從新make。
下面報一下個人兩個配置文件裏的內容
larbin.conf
httpPort 8099
inputPort 1976
pagesConnexions 100
dnsConnexions 5
waitDuration 60
startUrl http://qdbje.blog.163.com (網上文章中有使用www.baidu.com做爲startUrl的,但個人實驗代表以此做爲種子url,larbin爬不到結果……)
limitToDomain .com .cn .hk end
forbiddenExtensions.tar .gz .tgz .zip .Z .rpm .deb
.ps .dvi .pdf.png .jpg .jpeg .bmp .smi .tiff .gif
.mov .avi .mpeg .mpg .mp3 .qt .wav .ram .rm
.jar .java .class .diff
.doc .xls .ppt .mdb .rtf .exe .pps .so .psd
end
options.h
#ifndef LARBIN_CONFIG
#define LARBIN_CONFIG
#include "config.h"
#define SIMPLE_SAVE
#define FOLLOW_LINKS
#define CGILEVEL 1
#define DEPTHBYSITE
#define RELOAD
#define CRASH
#endif
4、Larbin的使用
運行 ./larbin (或「nohup ./larbin &」,可以使larbin在後臺運行)
停止 Ctrl+C
重起 ./larbin -scratch
備註:關於larbin配置文件詳解,轉自:http://terry831010.blog.163.com/blog/static/69161171201227111635189/ 感謝做者。