企業資料爬蟲專案(二)
阿新 • • 發佈:2018-11-09
企業資料爬蟲專案(豔輝VIP專案)
第一天:下載解析網站頁面
第二天:多執行緒定時啟動爬蟲
一個爬蟲專案,會涉及到資料儲存,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福利”,轉發文章至朋友圈。
長按自動識別二維碼,即可關注微信公眾號“豔學網”