Springboot注入为null的问题

最近因为项目需要自学使用java的一个爬虫框架webmagic

先放中文文档链接:http://webmagic.io/docs/zh/posts/ch1-overview/architecture.html

爬取网站:https://home.meishichina.com/recipe.html

后端采用的是spring boot,因为要爬取一级url的二级url,所以采用的思路是先爬取主页的菜谱url,然后每爬到一个菜谱url,就进入爬取其中盐的信息,于是写了两个service,一个是StartService【爬取一级url】,另外一个是RecipeService【爬取二级url】

webmagic有四大组件【此处只做简要介绍,具体请查看webmagic文档】:

  1.Downloader:作用是下载页面

  2.PageProcessor:作用是解析页面,拿到页面后,你想从这个界面再拿url去下载,或者对这个页面中某些节点信息进行抽取,都是在这里进行的。

  3.Scheduler:管理待抓取的url,可以对待抓取的url进行去重。

  4.Pipeline:在这里可以对解析出来的结果进行处理,比如存到文件中、在控制台打印、还能持久化到数据库中

webmagic流程图:

 

 图示很清晰,也很好理解,节省了解释时间

下面放一下实现过程:

  1.StartService,这是爬取菜谱url的服务。

  2.Sta Processor

 

 

在爬取完成到数据库后,为了防止数据重复,可以对重复数据进行删除,并且只保留一条

  sql语句如下

  为什么要形成一个t表和b表呢,因为如果缺少任意一个,语句就会报错,大概意思就是不能在查询表的时候又去更新表


DELETE from recipe WHERE
id not in (select id from (select min(id) as id from recipe group by recipe_name)a);

 

 

 XPATH

 

 

遇到的问题:

  在pipline中注入service为null。在网上查了很多方法,最后这个方法是成功了

  链接:https://blog.csdn.net/u014481096/article/details/78476931?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

  区别主要是在service前多了private static,然后还使用了set方法来注入

posted @ 2022-01-03 22:15  一只很皮的猴猴  阅读(636)  评论(0编辑  收藏  举报