WebPage+SpringBoot+mysql踩坑

  1. 数据库的对应接口报错

在这里插入图片描述在这里插入图片描述
解决办法:我们如果在NovelMapper中加上注解@Repository,红线便会消失,@Repository与@Service、@Compent、@Controller的作用差不多,都是声明作用,取不同的名字只是为了更好的区分各自的功能,为的是Spring可以@Autowired是正常注入。但其实这个场景下,@Repository不添加,Mapper接口也会被正常注入,这是因为我们@MapperScan中已经指定了mapper的目录,IDEA只是红线进行警告
在这里插入图片描述

  1. SpringBoot+mybatisplus所需的依赖

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druidartifactId>
    <version>${druid.version}version>
dependency>

<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
    <version>${mysql.version}version>
dependency>
<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plusartifactId>
    <version>${mybatisplus.version}version>
dependency>

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatisplus-spring-boot-starterartifactId>
    <version>${mybatisplus.spring.boot.version}version>
dependency>
  1. WebMagic框架扒取网页数据
WebMagic支持以XPath获取页面元素
@ExtractByUrl
private String url;//小说的url
@ExtractBy("//*[@id=\"info\"]/p[4]/text()")
private String update;
@ExtractBy("//*[@id=\"fmimg\"]/img/@src")
private String imgurl;
@ExtractBy("//div[@class='listmain']/dl/dd/a/text()")

样式大概就这几种,属性通过@src之类来指定,@ExtractByUrl即扒取当前页面的Url

指定网页时可通过正则表达式来指定
@TargetUrl(value = "https://www.sbiquge.com/[0-9_]+",sourceRegion = "//div[@class='bookimg']/a")
@HelpUrl("https://www.sbiquge.com/s.php")
public class Novel {

sourceRegion属性为指定扒取网页的指定区域,HelpUrl指定的是列表页面,Target指定的是文章内容页

内容保存,pipeline阶段可以直接写入数据库
@Component("chapterItemPipeline")
public class ChapterItemPipeline implements PageModelPipeline<Chapter> {
    @Autowired
    ChapterMapper chapterMapper;

    @Override
    public void process(Chapter chapter, Task task) {
        chapterMapper.insert(chapter);
    }
}

你可能感兴趣的:(java)