小工具知识网

当前位置: 首页 > 行业知识 > 08. Springboot集成webmagic实现网页爬虫

行业知识

08. Springboot集成webmagic实现网页爬虫

2026-11-14 06:51:34 来源:互联网转载

目录

1、前言

2、WebMagic

3、Springboot集成Webmagic

3.1、创建Springboot,并引入webmagic依赖

3.2、定义PageProcessor

3.3、元素选择

3.3.1、F12查看网页元素

3.3.2、元素选择

3.3.3、注意事项

4、小结


1、前言

在信息化的时代,网络爬虫已经成为我们获取和处理大规模网络数据的重要工具。如果将现有网络上的海量数据使用爬虫工具将数据爬取保存下来,并进行分析,就可以挖掘出一些潜在的价值。而现在市面上也出现了很多爬虫工具以及爬虫框架,今天将介绍下Java体系下一款简单使用的爬虫框架WebMagic,并可以很简单的与Springboot进行集成。

2、WebMagic

WebMagic是一款基于Java的开源爬虫框架,支持注解和设计模式,简化了爬取任务的实现。官网地址:Introduction · WebMagic Documents。

官网给出的概述:

WebMagic项目代码分为核心和扩展两部分。核心部分(webmagic-core)是一个精简的、模块化的爬虫实现,而扩展部分则包括一些便利的、实用性的功能。WebMagic的架构设计参照了Scrapy,目标是尽量的模块化,并体现爬虫的功能特点。

这部分提供非常简单、灵活的API,在基本不改变开发模式的情况下,编写一个爬虫。

扩展部分(webmagic-extension)提供一些便捷的功能,例如注解模式编写爬虫等。同时内置了一些常用的组件,便于爬虫开发。

另外WebMagic还包括一些外围扩展和一个正在开发的产品化项目webmagic-avalon。

官网给出的总体架构设计图:

总架构图中我们可以发现几个核心模块,分别为Pipeline,Scheduler,Downloader,PageProcesser。其中PageProcesser便是我们今天会用到的用于实现网页内容处理的类。

3、Springboot集成Webmagic

需求场景:爬取百度搜索引擎上的热搜数据,包含标题和连接。也就是首页右侧的内容。

3.1、创建Springboot,并引入webmagic依赖

目前webmagic最新依赖版本为0.10.0。

    4.0.0            org.springframework.boot        spring-boot-starter-parent        3.2.1                 com.example    springboot-webmagic    0.0.1-SNAPSHOT    springboot-webmagic    springboot-webmagic            17                            org.springframework.boot            spring-boot-starter                                    us.codecraft            webmagic-core            0.10.0                                    us.codecraft            webmagic-extension            0.10.0                            org.springframework.boot            spring-boot-starter-test            test                                                    org.springframework.boot                spring-boot-maven-plugin                        

3.2、定义PageProcessor

创建一个网页内容处理器类BaiduHotSearchPageProcessor,用于访问http://www.baidu.com地址,以及对他的网页内容进行解析。

public class BaiduHotSearchPageProcessor implements PageProcessor {    // 抓取网站的相关配置,包括编码、抓取间隔、重试次数等    private Site site = Site.me().setRetryTimes(3).setSleepTime(100);    /**     * 定制爬虫逻辑的核心接口,在这里编写抽取逻辑     * @param page     */    @Override    public void process(Page page) {        System.out.println(page.getHtml());        /**         * 通过page.getHtml()可以获取到main函数中Spider.create(new BaiduHotSearchPageProcessor()).addUrl中的地址的网页内容         * 1、通过$或css()方法获取到该page html下某元素dom         */        Selectable selectable = page.getHtml().$(".theme-hot").select(                new XpathSelector("a[@class='item-wrap_2oCLZ']")        );        List nodes = selectable.nodes();        /**         * 获取到指定的dom后,从这些dom中提取元素内容。         */        System.out.println("今日百度热搜:");        for (int i = 1; i 

上一篇:云服务器怎么选择镜像模式?

下一篇:怎么限制连接服务器?