使用和定制 Pipeline:
在 WebMagic 中,Pileline 是抽取结束后,进行处理的部分,它主要用于抽取结果的保存,可以定制 Pipeline 可以实现一些通用的功能。
定制Pipeline,需要实现Pipeline接口,Pipeline接口定义如下:
public interface Pipeline { // ResultItems 保存了抽取结果,它是一个 Map 结构, // 在 page.putField(key,value)中保存的数据, //可以通过 ResultItems.get(key)获取 public void process(ResultItems resultItems, Task task); }
在 WebMagic 里,一个 Spider 可以有多个 Pipeline,使用 Spider.addPipeline() 即可增加一个 Pipeline。这些 Pipeline 都会得到处理,例如可以使用
spider.addPipeline(new ConsolePipeline()).addPipeline(new FilePipeline())
实现输出结果到控制台,并且保存到文件的目标。
已有的 Pipeline:
WebMagic 中就已经提供了控制台输出、保存到文件、保存为 JSON 格式的文件几种通用的 Pipeline。
定制Pipeline 实现数据导入到数据库中:
@Component public class SpringDataPipeline implements Pipeline { @Autowired private JobInfoService jobInfoService; @Override public void process(ResultItems resultItems, Task task) { //获取封装好的招聘详情对象 JobInfo jobInfo = resultItems.get("jobInfo"); //判断数据是否不为空 if (jobInfo != null) { //如果不为空把数据保存到数据库中 this.jobInfoService.save(jobInfo); } } }