当前位置:   article > 正文

基于Springboot的爬虫项目_springboot 爬虫

springboot 爬虫

爬虫基本原理

爬虫定义

爬虫,全称是网络爬虫,又称为网⻚蜘蛛,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。

爬虫用途

搜索引擎:通过爬虫建立各网站内容的索引(比如:百度)
数据采集分析:通过爬虫获取大量数据并加以分析。(分析竞品公司)其他等等。
我们今天要做的Java爬虫获取招聘网站信息就是数据采集分析的过程,其本质就是不断向招聘网站发起HTTP请求,在响应中筛选出自己感兴趣的内容并加以分析。HTTP请求和响应大家来说应该已经很熟悉了,不管是使用JDK自带的HttpURLConnection或者是第三方开源框架如Apache的HttpClient都很容易发起HTTP请求并接收响应。

整合步骤

依赖集成

设置springboot的parent

<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>1.5.2.RELEASE</version>
  </parent>
  • 1
  • 2
  • 3
  • 4
  • 5

SpringBoot的项目必须先将parent设置为SpringBoot的parent,该parent包含了大量默认的配置,大大简化我们的开发。

引入web依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  • 1
  • 2
  • 3
  • 4

引入Web Magic的maven依赖

<dependency>
      <groupId>us.codecraft</groupId>
      <artifactId>webmagic-core</artifactId>
      <version>0.7.3</version>
    </dependency>
    <dependency>
      <groupId>us.codecraft</groupId>
      <artifactId>webmagic-extension</artifactId>
      <version>0.7.3</version>
    </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

编写springboot启动类

@SpringBootApplication
@MapperScan("org.example.dao")
public class SpiderApplication
{
    public static void main( String[] args )
    {
        System.out.println( "爬虫项目启动" );
        SpringApplication.run(SpiderApplication.class,args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

实现PageProcessor

import org.example.pojo.Sxs;
import org.springframework.stereotype.Service;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Selectable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 实习僧
*/
@Service("sxsProcessor")
public class SXSProcessor implements PageProcessor {
	//校招Java类
    static String URL="https://resume.shixiseng.com/interns?type=school&keyword=Java&page=1";
    public String getURL(){
        return URL;
    }
    抓取⽹站的相关配置,包括编码、抓取间隔、重试次数、代理、UserAgent等
    private Site site=Site.me().setCharset("utf-8")
                                .setSleepTime(new Random()
                                        .nextInt(20)*1000).setRetryTimes(3);
    @Override
    public void process(Page page) {
        String urlNum=URL.substring(URL.indexOf("page=")+5,URL.length());
        System.out.println("当前页数为: "+urlNum);
        List<Selectable> nodes = page.getHtml().xpath("//div[@class='intern-wrap intern-item']").nodes();;
        for (Selectable node:nodes
             ) {
             //通过Xpath解析信息
             //分析实习僧⽹⻚,能够获取的关键信息包括公司名称,⽹申⼊⼝URL、⼯作城市列表、岗位城市列表、
发布时间等
			//公司名称
            String company = node.xpath("//div[@class='f-r intern-detail__company']/p/a/text()").get();
            //公司薪水
            String salary=node.xpath("//div[@class='f-l intern-detail__job']/p/span/text()").get();
            //工作名称
            String job=node.xpath("//div[@class='f-l intern-detail__job']/p/a/text()").get();
            //公司简介
            String produce=node.xpath("//div[@class='f-r intern-detail__company']/p/span/text()").get();
            //公司位置
            String city=node.xpath("//span[@class='city ellipsis']/text()").get();
            //网申URL
            String url=node.xpath("//div[@class='f-l intern-detail__job']/p/a/@href").get();
            System.out.println("公司名称:"+company+", 招聘岗位:"+job+", 公司薪资:"+salary+", 公司简介:"+produce+" ,公司城市:"+city+", 网申URL:"+url);
            System.out.println("########################################");
        }
        //页数加一
        Integer pageIndex=Integer.valueOf(urlNum)+1;
        //停止爬虫的条件
        if(pageIndex>10) return;
        //替换掉url中的页数
        URL = URL.replace(URL.substring(URL.indexOf("page="),URL.length()),"page="+String.valueOf(pageIndex));
        //跳转下一页
        page.addTargetRequest(URL);
    }

    @Override
    public Site getSite() {
        return site;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

通过URL触发爬虫

@Controller
public class SpiderController {
    @Autowired
    SXSProcessor sxsProcessor;
    @RequestMapping("/spider")
    @ResponseBody
    public String spider(){
        System.out.println("开始爬取Java校招页面");
        Spider.create(sxsProcessor).addUrl(sxsProcessor.getURL()).run();
        return "success";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

运行截图

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/903079
推荐阅读
相关标签
  

闽ICP备14008679号