网络爬虫框架对比

以下是搜集的一些网络爬虫框架资料:

1、Nutch(http://nutch.apache.org/)

这是一个开源Java 实现的搜索引擎,提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。Nutch目前最新的版本为version v2.3。

 2、Crawler4j

Crawler4j是一个开源的Java类库提供一个用于抓取Web页面的简单接口。可以利用它来构建一个多线程的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();               
        }
}

3、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();
    }
}

4、Heritrix(http://crawler.archive.org/)

这是一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。

 

5、神箭手云爬虫框架(http://www.shenjianshou.cn/)

这是一个免费的网络爬虫框架,为开发者提供成套的开发教程和开发工具,为企业提供专业化的数据抓取、数据实时监控和数据分析服务。

最大的特点是一站式服务,通过底层框架简化了网络爬虫开发难度,而且提供了现成的丰富的网络爬虫资源。

 

 

posted @ 2017-04-19 23:22  代表月亮消灭bug  阅读(2401)  评论(0编辑  收藏  举报