Jsoup的简易使用示例

Jsoup的简易使用示例

http://www.open-open.com/jsoup/parsing-a-document.htm

测试用网页

doctype html>

<html class="outlin colo">

<head>
    <meta charset="utf-8">
    <title>长江大学title>
    <link type="text/css" rel="stylesheet" href="./css/reset.css">
    <link type="text/css" rel="stylesheet" href="./css/layout.css">
    <link type="text/css" rel="stylesheet" href="./css/yangtze.css">
    <script src="base.js">script>
    <script src="./js/nodeObject.js">script>
    <script src="./js/yangtze.js">script>
head>

<body>

    <div id="content">

        <div id="header-imageDiv">div>

        <div id="header-menuDiv">

            <div id="header-menu-table">

                <div class="header-menu-cell"><a href="#" title="首页">首页a>div>
                <div class="header-menu-cell"><a href="#" title="机构设置">机构设置a>div>
                <div class="header-menu-cell"><a href="#" title="规章制度">规章制度a>div>
                <div class="header-menu-cell"><a href="#" title="教学建设">教学建设a>div>
                <div class="header-menu-cell"><a href="#" title="教务管理">教务管理a>div>
                <div class="header-menu-cell"><a href="#" title="考务管理">考务管理a>div>
                <div class="header-menu-cell"><a href="#" title="实践创新">实践创新a>div>
                <div class="header-menu-cell"><a href="#" title="质量评估">质量评估a>div>
                <div class="header-menu-cell"><a href="#" title="学务管理">学务管理a>div>
                <div class="header-menu-cell"><a href="#" title="服务指南">服务指南a>div>
                <div class="header-menu-cell"><a href="#" title="下载中心">下载中心a>div>

            div>

        div>
        <div class="space">div>

        <div id="header-dateDiv">div>
        <div class="space">div>

        <div id="table">

            <div id="table-left">

                <div id="table-left-imageDiv">div>
                <div class="space">div>

                <h2 class="h2-style">高教信息<a href="#">+MOREa>h2>
                <ul class="ul-type-1">
                    <li style="color : red;"><img src="./images/li_bg.jpg"><a href="#">教育部高等教育司2016年工作要点a>li>
                    <li><img src="./images/li_bg.jpg"><a href="#">湖北省教育厅高等教育处2016年工作要点a>li>
                    <li><img src="./images/li_bg.jpg"><a href="#">湖北省教育厅高等教育处2015年工作要点a>li>
                    <li><img src="./images/li_bg.jpg"><a href="#">省委高校工委 省教育厅关于印发201a>li>
                    <li><img src="./images/li_bg.jpg"><a href="#">教育部2015年工作要点a>li>
                    <li><img src="./images/li_bg.jpg"><a href="#">近两年就业率较低的本科专业名单a>li>
                ul>
                <div class="space">div>

                <h2 class="h2-style">友情链接h2>
                <div id="select-type">div>

            div>
            <div class="space">div>

            <div id="table-center">

                <div id="table-center-topLineDiv"><span id="notice" onmouseover="switchTab(this)">教务通知span><span id="thisweek" onmouseover="switchTab(this)">本周事务span>div>

                <ul id="notice-ul">
                    <li>关于组织2017年(第十二届)长江大学大学生化学实验<span>2017-03-30span>li>
                    <li>关于核查文科相关学院2013级毕业班学生成绩的通知<span>2017-03-30span>li>
                    <li>关于组织申报第二批校级双语教学示范课程的通知<span>2017-03-30span>li>
                    <li>查看更多...li>
                ul>

                <ul id="thisweek-ul">
                    <li>2016~2017学年第二学期6~7月份主要教学工作安排<span>2017-03-30span>li>
                    <li>2016~2017学年第二学期5月份主要教学工作安排<span>2017-03-30span>li>
                    <li>2016~2017学年第二学期4月份主要教学工作安排<span>2017-03-30span>li>
                    <li>2016~2017学年第二学期3月份主要教学工作安排<span>2017-03-30span>li>
                    <li>查看更多...li>
                ul>

                <div class="chooseTab"><span>教务通知span><span>本周事务span>div>

            div>

            <div id="table-right">
            div>

        div>
        <div class="space">div>

        <div id="bottom-menuDiv">div>
        <div class="space">div>

    div>

    <div id="footer">div>

    <script>
        setup();
        switchTab(elementById("notice"));
        addEventss();

    script>

body>

html>

Java代码

import java.io.File;
import java.util.ArrayList;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class App {

    public static void main(String args[]) {

        try {

            File input = new File("/Users/YouXianMing/Documents/Project/HTML Project/yangtze/yangtze.html");
            Document doc = Jsoup.parse(input, "UTF-8", "http://yangtze.com/");

            // 根据元素id获取元素
            {
                Element content = doc.getElementById("content");
                System.out.println(content);
            }

            // 根据CSS的class名获取元素数组
            {
                ArrayList list = doc.getElementsByClass("space");
                for (Element element : list) {
                    System.out.println(element + "\n");
                }
            }

            // 根据标签获取元素数组
            {
                ArrayList list = doc.getElementsByTag("div");
                for (Element element : list) {
                    System.out.println(element + "\n");
                }
            }

            // 根据元素中含有的属性值获取元素数组
            {
                ArrayList list = doc.getElementsByAttribute("href");
                for (Element element : list) {
                    System.out.println(element + "\n");
                }
            }

            // 根据元素中含有的属性值获取元素数组
            {
                Element content = doc.getElementById("header-menu-table");
                // 元素的父元素
                System.out.println(content.parent());
                // 元素的所有子元素
                System.out.println(content.children());
                // 与该元素平级的第一个兄弟元素
                System.out.println(content.child(0).firstElementSibling());
                // 与该元素平级的最后一个兄弟元素
                System.out.println(content.child(0).lastElementSibling());
                // 该元素的前一个兄弟元素
                System.out.println(content.child(1).previousElementSibling());
                // 该元素的下一个兄弟元素
                System.out.println(content.child(0).nextElementSibling());
            }

            // 一个元素中的数据
            {
                Element content = doc.getElementsByClass("ul-type-1").first().child(0);
                // 获取文本内容
                System.out.println(content.text());
                // 获取tag名字
                System.out.println(content.tagName());
                // 获取tag对象
                System.out.println(content.tag());
                // 获取属性字典
                System.out.println(content.attributes());
                // 获取当前内容当中的html内容
                System.out.println(content.html());
                // 获取外部的html内容
                System.out.println(content.outerHtml());
                // 获取属性style的值
                System.out.println(content.attr("style"));
            }

            // 使用选择器语法来查找元素
            {
                Elements elements = null;
                // 通过标签查找元素
                elements = doc.select("a");
                System.out.println(elements);
                // 通过id查找元素
                elements = doc.select("#content");
                System.out.println(elements);
                // 通过class查找元素
                elements = doc.select(".ul-type-1");
                System.out.println(elements);
                // 通过属性查找元素
                elements = doc.select("[href]");
                System.out.println(elements);
                // 通过属性前缀查找元素
                elements = doc.select("[^hr]");
                System.out.println(elements);
                // 通过属性值来查找元素
                elements = doc.select("[id=notice]");
                System.out.println(elements);

                // 匹配属性值开头
                elements = doc.select("[onmouseover^=swit]");
                System.out.println(elements);

                // 匹配属性值结尾
                elements = doc.select("[onmouseover$=(this)]");
                System.out.println(elements);

                // 匹配包含了属性值
                elements = doc.select("[onmouseover*=Tab]");
                System.out.println(elements);

                // 正则表达式匹配
                elements = doc.select("ul[id~=^notice]");
                System.out.println(elements);
            }

        } catch (Exception e) {

            System.out.println(e);
        }
    }
}

注意

以下地方请自行替换,本人是从本地加载的html

Jsoup的简易使用示例

以下是获取元素的几种情形

Jsoup的简易使用示例

Original: https://www.cnblogs.com/YouXianMing/p/6913342.html
Author: YouXianMing
Title: Jsoup的简易使用示例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/554388/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • k8s-简介

    Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统,K8s 作为缩写的结果来自计算”K”和”s”之间的八个…

    技术杂谈 2023年7月11日
    072
  • 【正则】判断是不是合法的JSON字符串

    正则表达式 判断是不是合法的JSON字符串 String regex = "^(?:\".*?\")|(?:true|false|null)|(?:[…

    技术杂谈 2023年5月30日
    099
  • VIM快捷键全集

    VIM快捷键大法 vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi…

    技术杂谈 2023年7月24日
    066
  • Flink编译指定版本hadoop依赖

    准备工作 编译步骤 准备工作 官方文档:https://nightlies.apache.org/flink/flink-docs-release-1.11/ops/deploym…

    技术杂谈 2023年7月11日
    072
  • 教你如何用ffmpeg处理音频格式转换(标贝科技)

    @ 前言 ffmpeg介绍? 一、下载与安装 1.下载安装包 2.设置环境变量 3.验证是否安装成功 二、命令讲解 1 参数解释 2 音频格式转换命令 三、标贝开放平台介绍 前言 …

    技术杂谈 2023年7月25日
    074
  • 实现MySQL同步数据到ES构建宽表

    Ceven,德勤乐融(北京)科技有限公司邮箱:likailin@deqinyuerong.com 能力特点包括: 灵活,支持反查打宽表,特定逻辑数据清洗,对账,告警等场景 调试方便…

    技术杂谈 2023年7月23日
    076
  • 微信JSSDK 扫描二维码

    php;gutter:true; GetSignPackage(); $news = array("Title" =>"方倍", &q…

    技术杂谈 2023年5月31日
    089
  • Git 分支管理策略汇总

    原文链接: Git 分支管理策略 最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码? 我大概说了一些规则,但仔细想来,好像也并没…

    技术杂谈 2023年6月21日
    079
  • BAT 基础语法

    命令 //功能 echo //标准输出命令 在CMD窗口中 显示echo 后的内容 @ //关闭当前行的 回显 回显:源代码在 CMD 窗口中再次显示 pasue // 暂停程序 …

    技术杂谈 2023年6月21日
    086
  • 进程调度算法

    操作系统有三大调度机制,分别是进程调度、内存页面置换和磁盘调度算法。 进程调度算法 定义 进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的,当 CPU 空闲时,操作…

    技术杂谈 2023年6月21日
    076
  • Spark搭建

    7、测试及使用 切换目录: cd /usr/local/soft/spark-2.4.5/examples/jars Spark on Yarn Client模式:日志在本地输出,…

    技术杂谈 2023年7月11日
    063
  • CAIL2021-阅读理解任务-数据预处理模块(二)

    代码地址:https://github.com/china-ai-law-challenge/CAIL2021/ /* * @Author: Yue.Fan * @Date: 20…

    技术杂谈 2023年6月1日
    095
  • Linux特殊权限之suid、sgid、sbit权限

    文件权限管理之特殊命令 一:特殊权限 昨天所学的Linux基本权限为为9个;分别是rwx rwx rwx。但有时会发现系统中会有一些特殊的权限位符号; 例如: Linux系统一共有…

    技术杂谈 2023年7月11日
    0105
  • RocketMQ基本API使用

    RocketMQ基本API使用 基于原生客户端 <dependency> <groupid>org.apache.rocketmq</groupid&…

    技术杂谈 2023年7月25日
    082
  • C# 读写文件从用户态切到内核态,到底是个什么流程?

    一:背景 1. 一个很好奇的问题 我们在学习 C# 的过程中,总会听到一个词叫做 &#x5185;&#x6838;&#x6001; ,比如说用 C# 读写文…

    技术杂谈 2023年5月31日
    084
  • php中的和有什么区别么?

    是短标签是长标签在php的配置文件(php.ini)中有一个short_open_tag的值,开启以后可以使用PHP的短标签:同时,只有开启这个才可以使用 但是这个短标签是不推荐的…

    技术杂谈 2023年5月31日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球