vscrawler適合抓取封堵的爬蟲框架
VSCrawler是一個適合用作抓取的爬蟲框架,在更多場景傾向于功能擴展性而犧牲使用簡便性。這讓VSCrawler非常強大,讓他可以靈活的應(yīng)對目標(biāo)網(wǎng)站的反爬蟲策略。為了方便描述,文檔中可能使用VS替代VSCrawler作為VSCrawler簡寫。
vscrawler有挺多特點
1. 多用戶登錄,天生支持多用戶登錄,各個用戶資源隔離維護。
2.數(shù)據(jù)完整性保證,vs保證即使爬蟲宕機也會盡力序列化爬蟲任務(wù)。
3.任務(wù)調(diào)度,vs目前不支持其他爬蟲框架schedular角色的定制,不過vs本身的任務(wù)調(diào)度很完善,支持自定義消重規(guī)則、斷點續(xù)爬、重試規(guī)則定制、重復(fù)抓取(在消重之上封裝了可重入的特性)
4.抽取器,vs結(jié)合其他爬蟲框架的實現(xiàn),封裝了整套抽取器體系。包括css query && xpath(SipSoup,自JsoupXpath和Xsoup發(fā)展而來)、鏈?zhǔn)匠槿。险齽t、xpath、css query、字符串處理函數(shù)、jsonpath)、字符串函數(shù)(基于表達式描述字符串邏輯,配合字符串函數(shù)表達式可以實現(xiàn)無編碼支持字符串局部清洗處理)、表格處理(在css 和xpath特征都不明顯的html文檔上面使用很方便)
5.熱發(fā)控制,vs有一個熱發(fā)配置文件,只有配置文件配置項修改了,vs內(nèi)部組件便可以感知到配置變更,同時執(zhí)行對象更新操作。比如可以動態(tài)修改執(zhí)行工作線程數(shù)量
6.代理規(guī)則,vs設(shè)計之前我便有一套完善的代理ip池系統(tǒng)(dungproxy),ip池本身就有基于順序懲罰模型的權(quán)值輪詢隊列,基于ip質(zhì)量自動探測的方式調(diào)度ip使用順序,實現(xiàn)了在免費的劣質(zhì)ip源上架構(gòu)穩(wěn)定代理服務(wù)的系統(tǒng)。目前vs默認集成了dungproxy,當(dāng)然ip系統(tǒng)也是完全可以替換的
7.mq模型的事件循環(huán)系統(tǒng),vs內(nèi)置一個EventLoop,用來實現(xiàn)各個組件低耦合的通信。對于vs的深度定制幾乎不需要依靠各種生命周期回調(diào),只需要訂閱感興趣的消息,然后就可以自動接收各種消息,同時也可以發(fā)送各種消息。
8.非URL種子,目前大多數(shù)爬蟲的種子都是URL,vs對種子的定義減少了這個限定,這樣可以基于某些條件構(gòu)建種子任務(wù)(如抓取航班數(shù)據(jù),可以通過所有城市編碼;如抓取企業(yè)信息,可以通過企業(yè)編號列表)
致謝:
感謝webmagic,vs基礎(chǔ)結(jié)構(gòu)參考了webmagic,vs的SipSoup參考了webmagic中的XSoup
感謝SeimiCrawler,vs的SipSoup參考了JsoupXpath
感謝WebCollector,vs的種子管理參考了WebCollector的伯克利數(shù)據(jù)庫
文檔:
vs官網(wǎng)文檔:http://vscrawler.virjar.com/
項目地址:
開源中國:https://gitee.com/virjar/vscrawler
github:https://github.com/virjar/vscrawler
