如下是蒐集的一些網絡爬蟲框架資料:css
一、Nutch(http://nutch.apache.org/)java
二、Crawler4jgit
Crawler4j是一個開源的Java類庫提供一個用於抓取Web頁面的簡單接口。能夠利用它來構建一個多線程的Web爬蟲。github
示例代碼:web
import java.util.ArrayList;
import java.util.regex.Pattern;
import edu.uci.ics.crawler4j.crawler.Page;
import edu.uci.ics.crawler4j.crawler.WebCrawler;
import edu.uci.ics.crawler4j.url.WebURL;
public class MyCrawler extends WebCrawler {
Pattern filters = Pattern.compile(".*(\\.(css|js|bmp|gif|jpe?g"
+ "|png|tiff?|mid|mp2|mp3|mp4"
+ "|wav|avi|mov|mpeg|ram|m4v|pdf"
+ "|rm|smil|wmv|swf|wma|zip|rar|gz))$");
public MyCrawler() {
}
public boolean shouldVisit(WebURL url) {
String href = url.getURL().toLowerCase();
if (filters.matcher(href).matches()) {
return false;
}
if (href.startsWith("http://www.ics.uci.edu/")) {
return true;
}
return false;
}
public void visit(Page page) {
int docid = page.getWebURL().getDocid();
String url = page.getWebURL().getURL();
String text = page.getText();
ArrayList<WebURL> links = page.getURLs();
}
}apache
三、WebMagic(http://webmagic.io/)網絡
WebMagic是一個簡單靈活的Java爬蟲框架。多線程
它的特性包括:簡單的API,可快速上手;模塊化的結構,可輕鬆擴展;提供多線程和分佈式支持框架
示例:分佈式
public class GithubRepoPageProcessor implements PageProcessor { private Site site = Site.me().setRetryTimes(3).setSleepTime(1000).setTimeOut(10000); @Override public void process(Page page) { page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/[\\w\\-]+/[\\w\\-]+)").all()); page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/[\\w\\-])").all()); page.putField("author", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString()); page.putField("name", page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()").toString()); if (page.getResultItems().get("name")==null){ //skip this page page.setSkip(true); } page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()")); } @Override public Site getSite() { return site; } public static void main(String[] args) { Spider.create(new GithubRepoPageProcessor()).addUrl("https://github.com/code4craft").thread(5).run(); } }
四、Heritrix(http://crawler.archive.org/)
這是一個由 java 開發的、開源的網絡爬蟲,用戶能夠使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴展性,方便用戶實現本身的抓取邏輯。
五、神箭手雲爬蟲框架(http://www.shenjianshou.cn/)
這是一個免費的網絡爬蟲框架,爲開發者提供成套的開發教程和開發工具,爲企業提供專業化的數據抓取、數據實時監控和數據分析服務。
最大的特色是一站式服務,經過底層框架簡化了網絡爬蟲開發難度,並且提供了現成的豐富的網絡爬蟲資源。