企业数据爬虫项目(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_15153911/article/details/82949165

第一天:下载解析网站页面

第二天:多线程定时启动爬虫

一个爬虫项目,会涉及到数据存储,Queue队列,缓存使用,多线程爬取,定时任务爬取,解决频繁抓取IP被封问题,zookeeper分布式监控节点,邮件提醒等内容。
这里我们探讨其中两个问题,一是多线程,一是定时器。

// 固定线程池
	private ExecutorService newFixedThreadPool = Executors
			.newFixedThreadPool(Integer.parseInt(LoadPropertyUtil.getConfig("threadNum")));
newFixedThreadPool.execute(new Runnable() {

				public void run() {
					//业务。。。
				}
});

Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

//获取默认调度器
			Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler();
			//开启调度器
			defaultScheduler.start();
			
			//被调度的任务
			JobDetail jobDetail = new JobDetail("url-job", Scheduler.DEFAULT_GROUP, AddUrlJob.class);
			//定时执行任务
//			CronTrigger trigger = new CronTrigger("url-job", Scheduler.DEFAULT_GROUP, "00 11 18 * * ?");
			CronTrigger trigger = new CronTrigger("url-job", Scheduler.DEFAULT_GROUP, "0/10 * * * * ?");
			//添加调度任务
			defaultScheduler.scheduleJob(jobDetail , trigger);

这里用了quartz定时,每10秒运行AddUrlClass类,即是将url添加到队列中,让爬虫爬取url地址的内容。

需要下载源码可点击 艳学网

下载源码后,记住分享哟!

第一步:微信关注公众号艳学网!

第二步:关注后打开菜单“艳辉福利”——“java福利”,转发文章至朋友圈。

长按自动识别二维码,即可关注微信公众号“艳学网”
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_15153911/article/details/82949165
今日推荐