【Spring Boot 快速入门】十五、Spring Boot集成Jsoup搭建一个简单的爬虫Demo

2,141 阅读4分钟

「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

前言

   嗨,大家好,相信做开发的朋友经常会听到“爬虫”。原先针对爬虫比较好的语言是Python,有相对成熟的库和插件,针对其他语言的不是很友好。后来其他语言也出现了零星的爬虫框架或者类库。本次咱们将基于Java语言搭建一个简单的爬虫示例,本示例仅供大家学习使用,切勿做商业和非法项目。

Jsoup

   爬虫是按照人们既定的网络规则,自动抓取网站或其他载体上信息的程序或者脚本。

   本次针对将以Java开发语言基于Jsoup搭建一个简单的爬虫Demo。那么首先大家要了解什么是Jsoup。

   Jsoup是基于Java的HTML解析器。能够根据前端HTML、css解析网站上的信息。Jsoup提供了针对Java开发语言非常强大实用的API,可操作HTML元素、属性、文本,使用DOM或CSS选择器来查找、取出数据。当然,如果入门Jsoup也需要有一定的前端基础,才能快速入手。

快速开始

引入pom

   上面已经简单了解了Jsoup的功能和特点。下面将开始搭建一个基于java开发语言的Spring Boot集成Jsoup搭建一个简单的爬虫Demo。其中Jsoup的版本为1.11.3,Spring Boot的版本为2.3.0.RELEASE。Jsoup的依赖如下:

         <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.11.3</version>
        </dependency>

获取链接

   提取一个网站的信息,首先要在查询到自己需要的信息,然后提取自己需要信息的URL。例如前段时间掘金举办的中秋节活动。当时就基于某电商网站的阅饼销售数据进行了一个简单的查询。只提取了一个页面的信息。包含价格、店铺、商品名称等基础信息。只是学习使用,仅作为测试使用,禁止大量提取。 本次使用的URL是如下:

https://search.****.com/Search?keyword=%E6%9C%88%E9%A5%BC&qrst=1&spm=2.1.0&stock=1&pvid=9ac3cb4efb544d6f98239432761506f0&page=11&s=296&click=0

建立连接

   我们已经提取到信息所在页面的URL,那么接下来就是建立连接了,建立连接直接使用Jsoup的connect就可以,创建一个Connection对象。这样Java就和网站建立连接了。基础代码如下:

 Connection connect = Jsoup.connect(url);

获取网页

   在网站建立连接之后,直接通过Connection的get方法去获取Document内容。

 Document document = connect.get();

   通过输出Document对象,可以看到Document是包含大量的HTML,那么久可以根据这个Document对象进行数据提取了。 图片.png

选中信息对象

可以通过对Document对象的select方法获得具体的文本内容,这就涉及到前端的基础知识了。例如类选择器、元素选择器、通配选择器等。根据具体的元素,选择即可。如下 选择class 下的.goods-list-v2。元素为ul的li属性。这样的话就提取到页面所有的商品信息了。

 Elements rootselect = document.select(".goods-list-v2 ul li");

获取信息

   当获取到所有的商品信息之后,就可以根据css选择器,针对需要提前的元素进行select了。本次提取商品的售价、店铺名称和商品名称。如下代码。

    Elements novelname = ele.select(".p-price strong i");
    String price  = novelname.text();
    Elements author = ele.select(".J_im_icon a");
    String shop = author.first().text();
    Elements sumadvice = ele.select(".p-name  a em");
    String goodsName = sumadvice.last().text();
    

数据处理

   其中根据Elements 的属性,提取text文本信息。经过数据简单处理之后,得到如下信息。

图片.png

结语

   好了,一个简单的集成Jsoup搭建一个简单的爬虫Demo就完成了,是不是很简单。还有更多功能需要大家去探索喽。仅供学习使用,禁止非法使用获取数据,要遵循互联网安全法,不要触犯法律。

   感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

    作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。