基于SpringBoot框架Wbe Magic爬虫框架爬取招聘信息项目(1)

涉及的技术点:SpringBoot框架、Web Magic爬⾍框架、MySQL、mybatis。

使用语言:Java。

使用工具:idea。

本篇文章主要讲解搭建项目 以及 如何将页面数据输出打印到idea后台上。暂不涉及数据库。(下篇文章涉及到会继续更新…)

目录

1、创建项目

2、maven中导入依赖pom.xml

 3、修改启动类名称

4、创建一个spider包,创建爬虫信息类SXSProcessor.java

5、给定Controller层一个类,来触发爬取页面的启动

6、在Spider中点击按钮启动项目,在浏览器中输入localhost:8080/spider,回车运行,页面出现success字符串,说明已启动爬取页面,返回idea中查看打印台上是否有响应的数据。

1、创建项目

2、maven中导入依赖pom.xml

首先引入依赖,parent,里面包含了大量的默认配置,大大简化了开发
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

<dependencies>中引入需要的依赖 :

    <!---springboot依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>
        <!-- webmagic爬虫依赖  -->
        <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>

 3、修改启动类名称

将启动类名修改为SpiderApplication,里面的具体信息如下:

@SpringBootApplication
public class SpiderApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpiderApplication.class, args);
        System.out.println("爬虫项目");
    }
}

4、创建一个spider包,创建爬虫信息类SXSProcessor.java

这个类需要实现PageProcessor接口,实现其中的两个方法,分别是

public void process(Page page) {}//处理爬虫页面的所有信息,解析html的业务代码都放在这个方法中
public Site getSite() {return site;}//返回出一个实例对象

以爬取某实习网站中得数据为例。

 分析一下整个页面,现在需要将这些招聘信息的主要内容筛(岗位名称,薪资情况等)选出来打印到控制台上。需要你会分析html页面,知道如何定位页面元素

 直接贴出代码,注解都比较详细,需要的可以仔细研究研究。

/**
 * 爬取某实习网页页面
 */

@Service("sxsProcessor")
public class SXSProcessor implements PageProcessor {
    //给定要爬取的网址 这块审核过不了 
    static String URL = "";
    //获取site实例   setRetryTimes(3)重试3次    setCharset("utf-8")字符集编码为utf-8     setSleepTime(new Random().nextInt(20) * 100)页面等待,时间随机在0-2s之内
    private Site site = Site.me().setRetryTimes(3).setCharset("utf-8").setSleepTime(new Random().nextInt(20) * 100);

    //输出URL
    public static String getURL() {
        return URL;
    }

    @Override
    //爬取页面解析位置
    public void process(Page page) {
        //解析当前所在页面
        String url = page.getUrl().get();
        Integer num = Integer.valueOf(url.substring(url.indexOf("page=") + 5, url.indexOf("&")));
        System.out.println("当前页数:" + num);


        //获取页面的全部代码,开始调试时可以打开这块,查看能否爬取到页面的代码
        // String s1 = page.getHtml().get();
        //System.out.println(s1);

        //爬取招聘页面解析
        //根据需要提取的html页面分析,得到想要的信息的xpath(这里需要你会在浏览器页面中会定位元素)
        //这个list中存储的就是每个招聘信息的内容,然后遍历信息,在这些信息中找自己想要的数据,得到xpath,获取到信息
        List<Selectable> node = page.getHtml().xpath("//div[@class=\"intern-wrap intern-item\"]").nodes();
        for (Selectable s : node) {
            //解析薪资
            String money = s.xpath("//div[@class=\"f-l intern-detail__job\"]/p/span/text()").get().trim();
            System.out.println(money);
            //获取公司地点
            String address = s.xpath("//div[@class=\"f-l intern-detail__job\"]/p[2]/span/text()").get();
            System.out.println(address);
            //获取公司名
            String companyName = s.xpath("//div[@class=\"f-r intern-detail__company\"]/p/a/text()").get();
            System.out.println(companyName);
            System.out.println();
            System.out.println();
        }

        
        //System.out.println("URL:" + url);
        //停止爬虫  假设页面大于5页,就停止爬取
        if (num > 5) {
            return;
        }
        //翻下一页面,改变url中page的值
        num = num + 1;
        url = url.replace(url.substring(url.indexOf("page="), url.indexOf("&")),
                "page=" + String.valueOf(num));
        //翻页
        page.addTargetRequest(url);
    }

    @Override
    //获取实例
    public Site getSite() {
        return site;
    }
}

5、给定Controller层一个类,来触发爬取页面的启动

@Controller
public class SpiderController {
    @Autowired
private SXSProcessor sxsProcessor;

    @RequestMapping("/spider")
    @ResponseBody
    public String spider(){
        Spider.create(sxsProcessor).addUrl(SXSProcessor.getURL()).run();
        System.out.println("开始爬取工作信息啦");
        return "sucess";
    }
}

6、在Spider中点击按钮启动项目,在浏览器中输入localhost:8080/spider,回车运行,页面出现success字符串,说明已启动爬取页面,返回idea中查看打印台上是否有响应的数据。

idea中控制台显示结果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值