先放上官网,更多资料可自行查阅:http://webmagic.io/docs/zh/
大致上WebMagic可以分为[Downloader、PageProcessor、Scheduler、Pipeline]四大组件,最外由Spider协调。可以灵活的定制组件功能,我们一次从0到1逐步分析这四大组件
Spider集大成者
Spiler协调四个组件。除了PageProcessor是在Spider创建的时候已经指定,
Downloader
、Scheduler
和Pipeline
都可以通过Spider的setter方法来进行配置和更改。
addPipeline() //设置Pipeline,一个Spider可以有多个Pipeline
setDownloader //设置Downloader
setScheduler //设置Scheduler
public static void main(String[] args) {
Spider.create(new LianjiaProcessor())
.addUrl("https://cd.lianjia.com/zufang/")
.thread(5)
.addPipeline(new MyPipeline())
.run();
}
上面这个main方法,是我们今天Demo的一个启动类,可以看到,最外层由Spider进行启动和管理,上面已经指定了两个插件,分别是 [PageProcessor : new LianjiaProcessor()] ,以及 [Pipeline:new MyPipeline()],下面我开始入门
定制PageProcessor
PageProcessor组件可以理解为,这个类基本上包含了爬取一个网站,你需要写的所有代码
package com.example.webmagic.processor;
import com.example.webmagic.pipeline.MyPipeline;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Html;
import java.util.List;
public class LianjiaProcessor implements PageProcessor {
//创建Site对象,设置重试次数以及爬完一个页面另开的间隔时间
private Site site = Site.me().setRetryTimes(3).setSleepTime(200);