springboot爬虫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>

爬取信息

实现接口PageProcessor,重写方法process和getSite

@Service
public class JobServiceImpl extends ServiceImpl<JobMapper, Job> implements JobService, PageProcessor {
    //爬取的地址
    private static String url = "https://www.jobui.com/jobs?jobKw=Java&cityKw=%E5%8C%97%E4%BA%AC";

    //开始爬取
    public void add() {
        Spider.create(this).
                addUrl(url).
                thread(5).run();
    }

    @Override
    public void process(Page page) {
        ArrayList<Job> jobs = new ArrayList<>();
        //选中对应的项    标签.类选择器class 空格代表下一个标签     多个类标签可.类选择器.类选择器   标签#id选择器
        List<Selectable> nodes = page.getHtml().css("ul.j-jobList li.jobui-container.job-search-list").nodes();
        //遍历获取
        nodes.stream().forEach( node ->{
            //获取值 text属性值比如a标签可以href  node.css("a div.m-job-right-wrap div.mb15 div.job-name-wrap.segmentation h3.job-name", "text").get()
            Job job = new Job()
                    .setDurl(page.getUrl().get())
                    .setName(node.css("a div.m-job-right-wrap div.mb15 div.job-name-wrap.segmentation h3.job-name", "text").get())
                    .setSalary(node.css("div.m-job-right-wrap div.mb15 div.segmentation.flex-box div.job-list-condition-wrap span.f60.fs16.fwb", "text").get());
            jobs.add(job);
        });

        if (page.getUrl().get().equals(url)) {
            List<String> urls=new ArrayList<>();
            //获取总页码 也可单获取界面值
            //page.getHtml().css("","text").get();
            for (int i = 0; i < 50; i++) {
                urls.add(url + "&n=" + i);
            }
            //爬取分页内容
            page.addTargetRequests(urls);
        }
    }
    //站点信息  模拟站点信息
    @Override
    public Site getSite() {
        return Site.me().setRetryTimes(3).setSleepTime(100);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张航柯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值