nutch-ajaxNutch 組件擴展
Nutch AJAX page Fetch, Parse, Index Plugin
項目簡介
基于Apache Nutch 2.3 和 Htmlunit, Selenium WebDriver 等組件擴展,實現(xiàn)對于 AJAX 加載類型頁面的完整頁面內(nèi)容抓取,以及特定數(shù)據(jù)項的解析和索引。
According to the implementation of Apache Nutch 2.X, we can't get dynamic HTML information from fetch pages including AJAX requests as it will ignore all AJAX requests.
This plugin will use Htmlunit and Selenium WebDriver to fetch whole page content with necessary dynamic AJAX requests.
It developed and tested with Apache Nutch 2.3, you can try it on other Nutch 2.X version or refactor the source codes as your design.
項目托管同步更新站點列表:
https://github.com/xautlx/nutch-ajax
http://git.oschina.net/xautlx/nutch-ajax
主要特性
-
常規(guī)的HTML頁面抓取: 對于常規(guī)的例如新聞類沒有AJAX特性的頁面可以直接用Nutch自帶的protocol-http插件抓取。
-
常規(guī)的AJAX頁面抓取: 對于絕大部分諸如jQuery ajax加載的頁面,可以直接用htmlunit擴展插件抓取。
-
特殊的AJAX請求頁面抓取: 諸如淘寶/天貓的頁面采用了獨特的Kissy Javascript組件,目前測試htmlunit無法正確解析,因此退而求其次采用效率低一些的Selenium WebDriver方式實現(xiàn)頁面數(shù)據(jù)抓取。
-
基于頁面滾動的AJAX請求頁面抓取: 諸如淘寶/天貓的商品詳情頁面會基于頁面滾動發(fā)起商品描述信息的加載,通過Htmlunit或Selenium WebDriver擴展處理可以實現(xiàn)此類頁面數(shù)據(jù)抓取。
擴展插件說明
-
lib-pinyin: 用于parse或index插件轉(zhuǎn)換中文到拼音提交solr;部署用于solr dataimporthandler組件進(jìn)行拼音轉(zhuǎn)換的transformer擴展插件
-
lib-htmlunit: 基于Htmlunit的多線程處理,緩存控制,請求正則控制等特性擴展插件
-
protocol-s2jh: 基于Htmlunit和Selenium WebDriver實現(xiàn)的AJAX頁面Fetcher插件
-
parse-s2jh: 基于XPath解析頁面元素內(nèi)容; 持久化解析到的結(jié)構(gòu)化數(shù)據(jù),如MySQL,MongoDB等; 對于個別復(fù)雜類型AJAX頁面定制判斷頁面加載完成的回調(diào)判斷邏輯
-
index-s2jh: 追加設(shè)置需要額外傳遞給SOLR索引的屬性數(shù)據(jù); 設(shè)定不需要索引的頁面規(guī)則;
詳細(xì)參考文檔
項目提供一份比較詳細(xì)的“基于Nutch&Solr定向采集解析和索引搜索的整合技術(shù)指南文檔”,可通過以下兩種方式查看參考文檔內(nèi)容:
- 直接獲取項目內(nèi)容后,在document目錄下根據(jù)自己熟悉的編輯器查看對應(yīng)的md或html格式文檔;
- GitHub直接解析md文件,并且能正確處理圖片鏈接,因此可直接在線訪問 https://github.com/xautlx/nutch-ajax/blob/master/document/Apache_Nutch_Solr_Solution_with_AJAX_support.md
運行方式
整個項目基于官方的Apache Nutch 2.3源碼基礎(chǔ)之上添加插件代碼和配置,運行方式和官方指南保持一致,具體請參考:http://wiki.apache.org/nutch/
同時工程代碼中提交了Eclipse的工程配置文件,可以直接import Eclipse中Run或Debug運行,Nutch工程以Ivy進(jìn)行依賴管理,可采用ANT Build方式或建議在Eclipse IDE安裝Apache Ivy IDE插件進(jìn)行工程編譯運行。
