首页 > 编程语言 >Java爬虫工具Jsoup使用Demo

Java爬虫工具Jsoup使用Demo

时间:2022-11-06 18:44:53浏览次数:43  
标签:Java String Demo doc Jsoup html text println post

导入依赖

<dependencies>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.13.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.12</version>
        </dependency>
</dependencies>

简单入门

工具方法,获取解析后的html文本

    /**
     * 输入一个网址返回这个网址的html文本字符串
     */
    public static String getHtml(String str) {
        CloseableHttpResponse response = null; // 执行get请求
        String content = null;
        try {
            CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httpclient实例
            HttpGet httpget = new HttpGet(str); // 创建httpget实例

            response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity(); // 获取返回实体

            content = EntityUtils.toString(entity, "utf-8");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                response.close(); // 关闭流和释放系统资源
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return content;
    }

具体使用

    public static void main(String[] args) {
        //获取博客园首页html
        String html = getHtml("https://www.cnblogs.com/");
        Document doc = Jsoup.parse(html);
        //使用选择器语法查询id为post_list下 class为post-item-text下所有a标签的内容
        Elements select = doc.select("#post_list .post-item .post-item-body .post-item-text a");
        for (Element element : select) {
            String text = element.text().trim();
            if (StringUtils.isNotBlank(text)) {
                //获取a标签里的文本
                System.out.println("博客标题:" + text);
            }
        }
    }

控制台输出
image

获取所有扩展名为.png并且带有src属性的图片DOM节点

        String html = getHtml("https://www.cnblogs.com/");
        Document doc = Jsoup.parse(html);
        System.out.println("------------------------查找扩展名为.png的图片----------------------------");
        Elements imgElements = doc.select("img[src$=.png]"); // 查找扩展名为.png的图片DOM节点
        for (Element e : imgElements) {
            System.out.println(e.attr("src"));
        }

控制台输出
image

获取所有带有href属性的a元素

        String html = getHtml("https://www.cnblogs.com/");
        Document doc = Jsoup.parse(html);
        System.out.println("--------------------带有href属性的a元素--------------------------------");
        Elements hrefElements = doc.select("a[href]"); // 带有href属性的a元素
        for (Element e : hrefElements) {
            System.out.println(e.toString());
        }

控制台输出
image

标签:Java,String,Demo,doc,Jsoup,html,text,println,post
From: https://www.cnblogs.com/qzzzz/p/16863343.html

相关文章

  • [Java反序列化]JavaCC链学习(8u71前)
    文章目录​​写在前面​​​​前置​​​​Transformer​​​​TransformedMap​​​​ChainedTransformer​​​​InvokerTransformer​​​​ConstantTransformer​​​​......
  • Java 线程池之ThreadPoolExecutor学习总结
    前提javaversion"1.8.0_25"池简述软件开发活动中,我们经常会听到数据库连接池、内存池、线程池等各种“池”概念,这些“池”到底是什么东西呢?程序的世界里,我们可以将池简单......
  • Java 线程池之ThreadPoolExecutor学习总结
    前提javaversion"1.8.0_25"池简述软件开发活动中,我们经常会听到数据库连接池、内存池、线程池等各种“池”概念,这些“池”到底是什么东西呢?程序的世界里,我们可以将池简单......
  • JavaScript 学习-50.实现页面菜单拖放(Drag 和 Drop)
    前言拖放是一种常见的操作,即抓取对象以后从一个位置拖到另一个位置。在HTML5中,拖放是标准的一部分,任何元素都能够拖放。拖放(Drag和Drop)在拖曳操作中,被拖曳的元素称做源......
  • Java学习File类的判断和获取功能
    方法名说明publicbooleanisDirectory()测试此抽象路径名表示的File是否为目录publicbooleanisFile()测试此抽象路径名表示的File是否为文件publicbooleanexists()测试......
  • 自学Java的学习步骤与基本态度
     一般来说,刚开始学Java,需要掌握的基础并没有那么多,但是却需要牢牢掌握。如:Java数据类型、String基本类型封装类、MySQL等基础知识,属于必备技能,不论你是什么目的学习Java,此......
  • PyCharm在Linux安装出现报错-Java Runtime (class file version 55.0)
        在Linux桌面下安装PyCharm的时候出现如下报错root@ubuntu:~#cdpycharm-community-2021.1.1root@ubuntu:~/pycharm-community-2021.1.1#lsbinclas......
  • SAP Java Connector 正常运行所需的网络配置
    SAPJCO在本地安装成功并且将目录加到PATH环境变量后,运行命令行:java-jarsapjco3.jar如果看到下列弹出窗口,说明JCO配置成功。JCo使用基于TCP/IP的CPI-C协议......
  • JAVA开发搞了一年多的大数据,究竟干了点啥
    JAVA开发搞了一年多大数据的总结​ 2021年7月份加入了当前项目组,以一个原汁原味的Java开发工程师的身份进来的,来了没多久,项目组唯一一名大数据开发工程师要离职了,一时间一......
  • 最新版Jenkins(jdk11)-----JAVA项目使用低版本jdk编译的解决办法
    背景开源Devops工具Jenkins宣布:从6月28日发布的Jenkins2.357和即将发布的9月LTS版本开始,Jenkins最低需要Java11。所以,你懂得,很坑,项目只是jdk1.8解决......