Java爬虫-WebCollector的通用式Web应用爬虫

本文介绍了使用Java爬虫库WebCollector构建一个通用的Web应用爬虫,包括Web应用搭建、CSS选择器爬虫的实现以及详细使用方法。通过前端输入参数,实现了对不同网页的爬取,支持最多5层深度和10个字段的数据抓取。同时,文章提供了数据库设计和代码示例,并讲解了如何通过CSS选择器获取页面元素。
摘要由CSDN通过智能技术生成

Java爬虫-WebCollector的通用式Web应用爬虫

上文再续,我在为一个全民爬虫的理念前进着。最近,项目比较空闲,所以有时间向前迈进了,哈哈哈。

Web应用搭建

Web应用搭建无非就那些,首先你地选择整个页面的所以前端技术点,我这边选的是当下比较大众的,但是我却又不太熟悉的(为了学习更多的技术)
HTML/CSSHTML+Bootstrap4(Bootstrap,大学时用过,做了一个PC和APP共用的网页,当时来说比较?的了,现在再看,十分陌生)
JsVue.js(轻量级,容易上手,重要的是:我没用过)
后端:SpringBoot+WebCollector+MyBatis+MySQL(上一篇说过,资源也贴了)

既然要搭建Web应用,那么我们少不了的是要有页面,所以项目的文件目录要先建好,如下
在这里插入图片描述
然后要与后端对接,而且需要看到网页,那么Tomcat就少不了,还有一些配置,如下:
application.properties

server.port=8886
server.tomcat.uri-encoding=UTF-8
mybatis.mapper-locations=classpath:mapper/*.xml
#默认的位置是src/main/webapp 这里可以更换,比如/page/ 那么目录就变成了src/main/webapp/pages
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

maven管理文件pom.xml

        <!-- JSTL for JSP  spring boot搭建web项目,跳转到jsp一定要添加下面的jar包,否则出现跳转的时候,变成下载的功能,保存该页面-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <!-- Need this to compile JSP -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

然后在index.jsp中随便写点Hello World就可以通过http://localhost:8886/index.jsp访问了

全民爬虫之CSS选择器爬虫

具体的效果图如下:
在这里插入图片描述
主要还是对应之前爬电影院的代码进行一个改造的,让所有的参数都由前端输入,这样就可以一次性爬多个不同的网页了(名字:我要一步一步往上爬,比较low,请忽略)

目前代码写的比较low,没有封装,没有递归,所以只支持5层深度的爬虫,10个字段的爬取,而且由于数据库的限制,每个字段不得多于1000字

数据库设计如下:
在这里插入图片描述
代码段如下:

 public void get(RequestDto dto) throws Exception {
   
        seeds.clear();
        this.requestDto = dto;
        this.depth = requestDto.getDepth();
        if (1 < depth){
   
            addSeed(requestDto.getPage(), "depth1");
        }else {
   
            addSeed(requestDto.getPage(),"content");
        }

        this.start(depth);
    }

    @MatchType(types = "depth1")
    public void visitDepth1(Page page, CrawlDatums next) throws Exception {
   
        if (StringUtils.isEmpty(requestDto.getLinks1())){
   
            throw new Exception("depth1 can not be null!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值