`
gaosililn
  • 浏览: 73070 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

标签文本解析:Jsoup解析

    博客分类:
  • Java
 
阅读更多

Jsoup解析XML文本

jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。本文主要介绍如何使用 jsoup 来进行常用的 HTML 解析.

Jsoup的基本操作:

  try {
            String url = "C:\\Users\\admin\\Desktop\\Files\\input.txt";
            File file = new File(url);
            //根据指定的字符集获取Document 对象
            Document document = Jsoup.parse(file, "UTF-8");
            //获取文本的title标签值
            String title = document.title();
            System.out.println("title:" + title);
            //获取数据源的路径
            String s = document.baseUri();
            System.out.println("baseUri:" + s);
            //获取属性为src的标签元素
            Elements elementsBySrc = document.getElementsByAttributeStarting("src");
            ListIterator<Element> elementListIterator = elementsBySrc.listIterator();
            while (elementListIterator.hasNext()) {
                Element element = elementListIterator.next();
                //提取src属性的值
                String src = element.attr("src");
                System.out.println("src:" + src);
            }
            //获取有href属性的标签元素
            Elements elementsByHref = document.getElementsByAttribute("href");
            ListIterator<Element> listIteratorHref = elementsByHref.listIterator();
            while (listIteratorHref.hasNext()) {
                Element element = listIteratorHref.next();
                //提取href属性的值
                String href = element.attr("href");
                System.out.println("href:" + href);
                //获取自身的文本
                String ownText = element.ownText();
                System.out.println("ownText:" + ownText);
                //获取自身文本与子孙结合的文本
                String text = element.text();
                System.out.println("text:" + text);
                //获取节点的所有属性
                Attributes attributes = element.attributes();
                //转换成队列
                List<Attribute> attributes1 = attributes.asList();
                for (Attribute attribute : attributes1) {
                    //提取属性名
                    String key = attribute.getKey();
                    //提取属性值
                    String value = attribute.getValue();
                    System.out.println("gaosi:::" + key + ":" + value);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

 Jsoup的强大在于它对文档元素的检索,Select方法将返回一个Elements集合,并提供一组方法来抽取和处理结果,即Jsoup的选择器语法。

1、Selector选择器基本语法

tagname: 通过标签查找元素,比如:a

ns|tag: 通过标签在命名空间查找元素,比如:可以用 fb|name 语法来查找 <fb:name> 元素

#id: 通过ID查找元素,比如:#logo

.class: 通过class名称查找元素,比如:.masthead

[attribute]: 利用属性查找元素,比如:[href]

[^attr]: 利用属性名前缀来查找元素,比如:可以用[^data-] 来查找带有HTML5 Dataset属性的元素

[attr=value]: 利用属性值来查找元素,比如:[width=500]

[attr^=value], [attr$=value], [attr*=value]: 利用匹配属性值开头、结尾或包含属性值来查找元素,比如:[href*=/path/]

[attr~=regex]: 利用属性值匹配正则表达式来查找元素,比如: img[src~=(?i)\.(png|jpe?g)]

*: 这个符号将匹配所有元素

2、Selector选择器组合使用语法

el#id: 元素+ID,比如: div#logo

el.class: 元素+class,比如: div.masthead

el[attr]: 元素+class,比如: a[href]

任意组合,比如:a[href].highlight

ancestor child: 查找某个元素下子元素,比如:可以用.body p 查找在”body”元素下的所有 p元素

parent > child: 查找某个父元素下的直接子元素,比如:可以用div.content > p 查找 p 元素,也可以用body > * 查找body标签下所有直接子元素

siblingA + siblingB: 查找在A元素之前第一个同级元素B,比如:div.head + div

siblingA ~ siblingX: 查找A元素之前的同级X元素,比如:h1 ~ p

el, el, el:多个选择器组合,查找匹配任一选择器的唯一元素,例如:div.masthead, div.logo

3、Selector伪选择器语法

:lt(n): 查找哪些元素的同级索引值(它的位置在DOM树中是相对于它的父节点)小于n,比如:td:lt(3) 表示小于三列的元素

:gt(n):查找哪些元素的同级索引值大于n,比如: div p:gt(2)表示哪些div中有包含2个以上的p元素

:eq(n): 查找哪些元素的同级索引值与n相等,比如:form input:eq(1)表示包含一个input标签的Form元素

:has(seletor): 查找匹配选择器包含元素的元素,比如:div:has(p)表示哪些div包含了p元素

:not(selector): 查找与选择器不匹配的元素,比如: div:not(.logo) 表示不包含 class=logo 元素的所有 div 列表

:contains(text): 查找包含给定文本的元素,搜索不区分大不写,比如: p:contains(jsoup)

:containsOwn(text): 查找直接包含给定文本的元素

:matches(regex): 查找哪些元素的文本匹配指定的正则表达式,比如:div:matches((?i)login)

:matchesOwn(regex): 查找自身包含文本匹配指定正则表达式的元素

 



 

 示例代码:

 try {
            String url = "C:\\Users\\admin\\Desktop\\Files\\input.txt";
            File file = new File(url);
            //根据指定的字符集获取Document 对象
            Document document = Jsoup.parse(file, "UTF-8");
            //查询a标签集合
//            Elements elements = document.select("a");
            //查询id为gaosi的集合
//            Elements elements = document.select("#gaosi");
            //通过class属性值查找
//            Elements elements = document.select(".mainbody");
            //通过属性查找
//            Elements elements = document.select("[href]");
            //利用属性值查条件找
            Elements elements = document.select("[leftmargin=0]");
            Iterator<Element> iterator = elements.iterator();
            while (iterator.hasNext()) {
                Element element = iterator.next();
                String html = element.html();
                System.out.println("html:" + html);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

 
 

  • 大小: 25.3 KB
  • 大小: 18.7 KB
  • 大小: 27.4 KB
分享到:
评论

相关推荐

    org.jsoup.jar

    《深入理解Java库:Jsoup解析与应用》 在Java编程世界中,Jsoup是一个非常重要的库,尤其在处理HTML文档和数据抓取时。标题中的"org.jsoup.jar"是Jsoup库的核心组件,它是Jsoup项目的二进制发布形式,包含了所有...

    jsoup基于java爬虫项目

    jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 Jsoup的主要功能 1)从一个URL,文件或字符串中...

    java源码:HTML解析器 jsoup.rar

    4. 数据提取:通过DOM遍历和选择器,jsoup可以方便地提取HTML中的数据,如文本内容、属性值等,这对于网页抓取和数据挖掘至关重要。 5. DOM操作:除了解析和提取数据,jsoup还允许对DOM进行修改,添加、删除或更新...

    jsoup Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容

    **jsoup:Java的HTML解析库** jsoup是一款强大的Java库,专为处理HTML文档而设计。它允许开发者轻松地解析、提取和修改HTML内容,就像在Web浏览器中使用jQuery那样方便。jsoup的主要功能包括: 1. **HTML解析**:...

    基于Java的源码-HTML解析器 jsoup.zip

    这段代码会输出"页面标题: 测试页面",展示了如何通过jsoup解析HTML并获取页面标题。 总结来说,jsoup是Java开发中处理HTML的强大工具,它的易用性和灵活性使其在网页抓取、内容解析、数据提取等场景中广泛应用。...

    Jsoup

    1. HTML解析:Jsoup能够解析各种各样的HTML源码,无论是干净的结构化HTML还是充满乱七八糟标签的真实网页。它能处理HTML5和HTML4,甚至一些常见的错误格式也能被正确解析。 2. DOM操作:解析后的HTML被转化为一个...

    IText、Jsoup jar包

    1. HTML解析:Jsoup能够解析HTML文档,并将其转换为一个可操作的DOM(文档对象模型)结构。 2. CSS选择器:Jsoup支持CSS选择器,使得定位和提取HTML元素变得简单。 3. 文本提取:可以方便地从HTML文档中提取文本内容...

    HTML、XML等Dom节点类解析库jsoup.jar

    库中的解析器能够处理不完美的HTML,比如缺失的闭合标签或不合规的嵌套,使得开发者可以处理现实世界中复杂多变的网页内容。 2. **选择器语法**:jsoup支持CSS选择器,这使得从HTML中选取特定元素变得简单直观。...

    Jsoup1.10.2.jar

    1. **HTML解析**:Jsoup能够准确地解析HTML,处理网页中的嵌套标签、属性等复杂结构,即使面对不规范的HTML代码也能保持良好的解析性能。 2. **DOM解析**:Jsoup支持DOM解析模型,允许开发者使用标准的Document、...

    Jsoup.zip有源码包

    2. **文本提取**:Jsoup提供了方法来提取文本,如`elem.text()` 返回元素内的纯文本,不包括HTML标签。 3. **属性操作**:可以轻松地获取或设置元素属性,如`elem.attr("href")` 获取链接属性,`elem.attr("href", ...

    jsoup解析html所需包1.7.3

    标题中的"jsoup解析html所需包1.7.3"表明我们将讨论的是JSoup 1.7.3版本,这个版本包含了三个关键的组件。 1. **jsoup-1.7.3.jar**:这是JSoup的核心库文件,包含了所有用于解析HTML的类和方法。开发人员在项目中...

    Jsoup源码以及chm文件

    3. 清理不规范HTML:网页源代码可能存在不标准的HTML标签和属性,Jsoup会尝试修复这些问题,提供一个干净的、结构化的文档模型。 4. 文档操作:除了查询,Jsoup还允许修改DOM结构,如添加、删除或更新元素和属性。...

    jsoup-1.9.2.rar

    6. **形式数据解析**:jsoup可以解析表单数据,模拟用户提交表单的行为。 **jsoup-1.9.2.jar**:这个文件是jsoup 1.9.2版本的JAR包,包含了库的所有类和资源。在Java项目中,可以直接引入这个JAR,通过`import org....

    HTML解析器 jsoup.zip

    jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。jsoup的主要功能如下:从一个URL,文件或字符串...

    使用Jsoup解析html网页

    5. **元素(Element)**:每个HTML标签都是一个`Element`对象,它有子元素、属性和文本内容。我们可以使用`select()`方法查找子元素,或者使用`attr()`获取和设置属性值。 6. **节点操作**:Jsoup允许我们对元素...

    jsoup.jar-1.8.1版本

    7. **性能优化**:jsoup 1.8.1版本在解析速度和内存使用上做了优化,提高了整体性能,使得大规模网页处理更加高效。 8. **API友好**:jsoup的API设计简洁明了,易于学习和使用,大大降低了开发者的学习成本和开发...

    jsoup-1.8.3(含源码)

    例如,`element.append(text)`可以在元素后面添加文本,`element.remove()`则可以移除元素,而`element.attr(attributeName, value)`可以更改指定属性的值。 ### 4. 清理和规范化HTML Jsoup还提供了一种安全的方式...

    jsoup-jsoup-1.6.1.zip

    3. **数据提取**:jsoup支持提取文本、属性值、链接、图片等HTML元素的数据,这对于网络爬虫或网页抓取应用非常有用。例如,可以轻松获取页面标题、段落内容、链接地址等信息。 4. **HTML清理**:jsoup具备HTML清理...

    jsoup-1.11.3.jar

    8. **性能优化**:Jsoup设计得轻量级且高效,内存占用小,解析速度快,适用于各种规模的项目。 在实际应用中,Jsoup广泛用于内容抓取、数据挖掘、自动化测试、网页维护等场景。例如,新闻聚合服务可能利用Jsoup定期...

    jsoupAPI解析html

    **jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用DOM,CSS和jQuery-like方法。在深入jsoup的API之前,我们需要理解HTML解析的重要...

Global site tag (gtag.js) - Google Analytics