「这是我参与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对象进行数据提取了。
选中信息对象
可以通过对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文本信息。经过数据简单处理之后,得到如下信息。
结语
好了,一个简单的集成Jsoup搭建一个简单的爬虫Demo就完成了,是不是很简单。还有更多功能需要大家去探索喽。仅供学习使用,禁止非法使用获取数据,要遵循互联网安全法,不要触犯法律。
感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。