Miner.java 爬虫启动类

本文介绍了一个基于Java的爬虫系统Miner.java的核心架构与启动流程。系统包括URL管理、HTML下载、数据解析与存储等模块,采用多线程并发处理,通过配置参数灵活调整各模块线程数,实现高效网页抓取与数据处理。

Miner.java 爬虫启动类

package com.iteye.injavawetrust.miner;

import java.util.concurrent.ThreadPoolExecutor;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 爬虫启动类
 * @author InJavaWeTrust
 *
 */
public class Miner {
	
	private static final Log LOG = LogFactory.getLog(Miner.class);
	
	private MinerUrl minerUrl = null;
	
	private MinerConfig config = null;
	
	public Miner(MinerUrl minerUrl, MinerConfig config){
		this.minerUrl = minerUrl;
		this.config = config;
	}
	
	public void start(){
		//启动前 先校验配置
		if(!MinerUtil.checkBeforeStart(config)){
			LOG.info("配置出现问题,程序不能启动!!!");
			return;
		}
		MinerUtil.starTime = System.currentTimeMillis();
		//程序启动,将第一个起始页面放入待访问队列。
		MinerQueue.addUnVisited(minerUrl);
		//将URL 添加到URL队列 保证每个URL只访问一次
		MinerQueue.addUrlSet(minerUrl.getUrl());
		ThreadPoolExecutor executor = MinerThreadPool.getInstance();
		//download
		for(int i = 0; i < config.getMinerHtmlThreadNum(); i++){
			MinerHtmlThread minerHtml = new MinerHtmlThread(config);
			executor.execute(minerHtml);
		}
		//misering
		for(int i = 0; i < config.getMiseringThreadNum(); i++){
			MiseringThread misering = new MiseringThread(config);
			executor.execute(misering);
		}
		//store
		for(int i = 0; i < config.getMinserStoreThreadNum(); i++){
			MinerStoreThread minerStoreThread = new MinerStoreThread(config);
			executor.execute(minerStoreThread);
		}
		//monitor
		MinerMonitorThread minerMonitor = new MinerMonitorThread();
		executor.execute(minerMonitor);
	}
	
}

 

返回列表

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值