java爬虫之Jsoup

因为一些业务场景,,组内需要写一个简单的爬虫,来抓取某个网站的信息,于是我就问小帅们,有人会Python吗?

答案是没有!!!

然后,我又问,有人接触过java爬虫框架吗?

答案还是没有!!!

也是java爬虫比较笨重,在这方面确实不如Python,但是技多不压身,我们还是要学习一下的!

Jsoup简述

Jsoup是一个用于解析、操作和清理HTML的Java库。它提供了一种便捷的API,可以从URL、文件或字符串中提取和处理HTML数据。Jsoup的功能类似于JavaScript中的jQuery,是为Java环境设计的。

jsoup算是一个应用起来比单的HTML解析库,但是简单就会有缺点

比如:

        1:性能问题

                对于非常大型的HTML文档,Jsoup的解析速度可能不如一些专门为高性能设计的解析器。此外,它在处理大量并发请求时可能会遇到性能瓶颈。

        2:不支持javaScript

                Jsoup无法执行或解析网页中的JavaScript。这意味着它无法处理依赖JavaScript生成内容的网页。如果你需要抓取动态内容,可能需要使用像Selenium这样的工具

        3:内存消耗

                因为Jsoup会将整个HTML文档加载到内存中,所以对于非常大的文档,内存消耗可能会很高

        4:线程安全性

                Jsoup的某些部分不是线程安全的,如果在多线程环境中使用,可能需要特别小心以避免并发问题。

但是他都安全了,而且我们也没有特别复杂的爬取需求,所以   还要什么自行车!!!

jsoup的使用

向Spring整合某项技术,第一项一般都是——引入依赖

        

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

jsoup不需要额外的配置文件,引入依赖加载后就可以直接使用

               //获取连接
                Connection connect = Jsoup.connect(url);

                //直接发送get请求
                Document document = Jsoup.connect(url).get();

                //直接发送post请求
                Document post = Jsoup.connect(url).post();
                
                
                //有一些网页可能需要我们登录,这个时候就需要我们添加token或者cookie;

                Document documentHaveCookie = Jsoup.connect(url)
                        .cookie("Cookie", "cookie")
                        .get();

上面获得的Document,顾名思义就是我们获得的页面文档,浏览器会将这个Document渲染到页面上,我们现在就是要解析这个巨大的文档字符串

        现在我们看一下Document下面的方法

  1. getElementById(String id):

    • 作用:根据指定的id属性值获取对应的元素。
    • 返回值:表示指定id的元素,如果不存在则返回null。
  2. getElementsByTag(String tag):

    • 作用:根据指定的标签名获取所有对应的元素。
    • 返回值:包含所有指定标签的元素的列表。
  3. getElementsByClass(String className):

    • 作用:根据指定的类名获取所有对应的元素。
    • 返回值:包含所有指定类名的元素的列表。
  4. select(String cssQuery):

    • 作用:使用CSS选择器语法查询匹配的元素。
    • 返回值:包含所有匹配元素的列表。
  5. title():

    • 作用:获取HTML文档的标题。
    • 返回值:HTML文档的标题字符串。
  6. head():

    • 作用:获取HTML文档的head部分。
    • 返回值:表示HTML文档head部分的元素。
  7. body():

    • 作用:获取HTML文档的body部分。
    • 返回值:表示HTML文档body部分的元素。
  8. html():

    • 作用:获取整个HTML文档的HTML内容。
    • 返回值:整个HTML文档的HTML字符串。
  9. text():

    • 作用:获取整个HTML文档的纯文本内容。
    • 返回值:整个HTML文档的纯文本字符串。

Document的Select方法

上面列举的方法大多都比较好理解,这里主要讲一下使用次数最多,并且可以灵活选择和定位元素的select方法

看我这里的代码:
 

                Document doc = Jsoup.connect(url)
                        .cookie("Cookie", admin.getCookie())
                        .get();

                Elements selectList = doc.select("div[class~=^item]");

        这里可以获得上面获取到的网页文档中所有class以item开头属性的div标签

为了方便理解在贴出一些代码

        这是在上面活动Elements循环获得每一块进行处理

Element name = element.select("a[class~=^name]").first();

//获取a标签内的href属性
 String href = name.attr("href");

这里是获得当前选中元素内第一个class以name开头的a标签

然后使用attr方法获取a标签内href的属性值

这写就是关于Jsoup的简单使用

  • 38
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值