背景
WebMagic作为一个Java爬虫社区比较活跃的开源框架,肯定有不少东西可以学习的,而且最重要的是有使用手册(http://webmagic.io/docs/zh/)。这不,我温故而知新时(最近,项目比较闲,0 Bug,0 需求的我😊),发现了这家伙居然可以使用注解来进行爬虫。
WebMagic注解
看到使用手册的第5部分,我们可以看到WebMagic注解就那么一点东西,当然,这得是在你了解WebMagic和使用过WebMagic的基础下。
由图我们可以看到,其实注解的开发模式比较简单,就是用@TargetUrl注解来进行网站的下载和抽取,用@ExtractBy注解来进行信息的提取,最后通过实现不同的接口进行信息的处理(最后这句为剧透)。
爬取早呀日报
说多无味(谓),做多最实际,下面我们直接开始实战,在实战中去理解WebMagic注解的使用以及魅力所在。
这次要盘的目标是:早呀-2020-04-17【早报】
这种由微信公众号发的早报或文章。
今天要爬取的内容很简单,分别是:日报的时间,标题3个,各个标题对应的内容,效果图如下:
当然,这种东西直接用EasyCrawler是可以直接爬取到的,但是,别忘了我们今天的目标是:温故而知新。
首先
既然我们知道我们今天要爬取的内容,那么我们肯定要先把基本的东西给搭建好了,从调用到写入数据库,这过程一步都不可以少哦!
第二步
按照WebMagic的说法,我们得先定义一个我们爬取的内容
@Data
//匹配https://blog.love2love.top/archives为前缀的所有网址
@TargetUrl("https://blog.love2love.top/archives/*.html")
public class ZaoYaDTO {
//用ExtractBy注解的字段会被自动抽取并填充
//默认是xpath语法
@ExtractBy(value = "#main > div.layout > div.article > article > div.article-meta > span:nth-child(4)",type = ExtractBy.Type.Css)
private String date;
@ExtractBy(value = "//*[@id=\"main\"]/div[2]/div[1]/article/div[4]/ul[1]/li/h3/strong/text()")
private String title1;
@ExtractBy(value = "//*[@id=\"main\"]/div[2]/div[1]/article/div[4]/p[1]/text()")
private List<String> content11;
@ExtractBy(value = "//*[@id=\"main\"]/div[2]/div[1]/article/div[4]/p[2]/text()")
private List