网页数据采集-webcollector学习与实践

WebCollector 详细介绍

爬虫简介:

WebCollector 是一个无须配置、便于二次开发的 Java 爬虫框架(内核),它提供精简的的 API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop 是 WebCollector 的 Hadoop 版本,支持分布式爬取。

爬虫内核:

WebCollector 致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。源码中集成了 Jsoup,可进行精准的网页解析。2.x 版本中集成了 selenium,可以处理 JavaScript 生成的数据。

内核构架图:

.....................................................

原文详细信息地址:点击打开链接

package cn.lonsun.supervise.errhref.internal.util;

import java.util.List;

import cn.edu.hfut.dmic.webcollector.crawler.BasicCrawler;
import cn.edu.hfut.dmic.webcollector.model.CrawlDatums;
import cn.edu.hfut.dmic.webcollector.model.Page;
import cn.edu.hfut.dmic.webcollector.plugin.ram.RamDB;
import cn.edu.hfut.dmic.webcollector.plugin.ram.RamDBManager;
import cn.edu.hfut.dmic.webcollector.plugin.ram.RamGenerator;
import cn.lonsun.common.util.AppUtil;
import cn.lonsun.core.base.util.StringUtils;
import cn.lonsun.core.util.SpringContextHolder;
import cn.lonsun.supervise.errhref.internal.entity.ErrHrefEO;
import cn.lonsun.supervise.errhref.internal.entity.HrefResultEO;
import cn.lonsun.supervise.errhref.internal.service.IErrHrefService;
import cn.lonsun.supervise.errhref.internal.service.IHrefResultService;

/**
 * 网页数据采集
 * @author gu.fei
 * @version 2016-1-25 13:52
 */
public class ErrHrefCheckCrawler extends BasicCrawler {

    private static IErrHrefService errHrefService = SpringContextHolder.getBean("errHrefService");

    private static IHrefResultService hrefResultService = SpringContextHolder.getBean("hrefResultService");;

    private static ErrHrefEO eo;

    /**
     * 构造函数初始化数据
     * @param autoParse
     * @param taskId
     */
    public ErrHrefCheckCrawler(boolean autoParse, Long taskId) {
        super(autoParse);
        RamDB ramDB = new RamDB();
        this.dbManager = new RamDBManager(ramDB);
        this.generator = new RamGenerator(ramDB);

        eo = errHrefService.getEntity(ErrHrefEO.class,taskId);
        this.addSeed(eo.getWebSite());

        this.addRegex(".*");

        if(null != eo.getFilterHref()) {
            List<String> hrefs = StringUtils.getListWithString(eo.getFilterHref(),",");
            for(String href : hrefs) {
                this.addSeed("-.*" + href);
            }
        }

        /*不要爬取包含 # 的URL*/
        this.addRegex("-.*#.*");
    }

    @Override
    public void visit(Page page, CrawlDatums next) {
        if(page.getUrl().contains(eo.getWebDomain())) {
            this.setAutoParse(true);
        } else {
            this.setAutoParse(false);
        }
    }

    @Override
    public void afterVisit(Page page, CrawlDatums next) {
        super.afterVisit(page, next);
        next.putMetaData("parentUrl", page.getUrl());
    }

    @Override
    public void fail(Page page, CrawlDatums next) {
        if(!AppUtil.isEmpty(page.getUrl())) { //不为空
            if(!URLHelper.isEmail(page.getUrl())) { //非邮件格式
                int code = URLHelper.isConnect(page.getUrl());
                if(code != 200) {
                   
                }
            }
        }
    }

    @Override
    public void notFound(Page page, CrawlDatums next) {
        if(!AppUtil.isEmpty(page.getUrl())) { //不为空
            if(!URLHelper.isEmail(page.getUrl())) { //非邮件格式
                int code = URLHelper.isConnect(page.getUrl());
                if(code != 200) {
                    
                }
            }
        }
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值