zoukankan      html  css  js  c++  java
  • 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方法来注入

  • 相关阅读:
    15款精美的 WordPress 电子商务网站模板
    15套免费的扁平化界面设计素材【免费下载】
    35幅使用小图片组成的创意插图作品 【上篇】
    sqlserver2014两台不同服务器上数据库同步
    C++ Reflection Library
    美国的包容主要体现在接受移民,那么,中国的包容主要体现在哪里呢?答案就是资本
    mysql主从复制
    Kubernetes+Istio
    Net异步编程
    研发的困境----DEVOPS
  • 原文地址:https://www.cnblogs.com/pipihoudewo/p/14410891.html
Copyright © 2011-2022 走看看