WebPage+SpringBoot+mysql踩坑

本文介绍了使用WebMagic框架结合SpringBoot和MySQL进行网页数据抓取和存储过程中遇到的问题及解决方案。在数据保存环节,通过Pipeline直接将内容写入数据库,同时探讨了WebMagic中XPath的使用、网页区域指定以及正则表达式在目标页面选择上的应用。
摘要由CSDN通过智能技术生成
  1. 数据库的对应接口报错

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

  1. SpringBoot+mybatisplus所需的依赖
<!--数据源库连接池-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>${druid.version}</version>
</dependency>
<!-- 数据库连接的依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>${mybatisplus.version}</version>
</dependency>
<!--mybatis的orm插件-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatisplus-spring-boot-starter</artifactId>
    <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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值