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();
}
相关推荐
《深入理解Java库:Jsoup解析与应用》 在Java编程世界中,Jsoup是一个非常重要的库,尤其在处理HTML文档和数据抓取时。标题中的"org.jsoup.jar"是Jsoup库的核心组件,它是Jsoup项目的二进制发布形式,包含了所有...
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 Jsoup的主要功能 1)从一个URL,文件或字符串中...
4. 数据提取:通过DOM遍历和选择器,jsoup可以方便地提取HTML中的数据,如文本内容、属性值等,这对于网页抓取和数据挖掘至关重要。 5. DOM操作:除了解析和提取数据,jsoup还允许对DOM进行修改,添加、删除或更新...
**jsoup:Java的HTML解析库** jsoup是一款强大的Java库,专为处理HTML文档而设计。它允许开发者轻松地解析、提取和修改HTML内容,就像在Web浏览器中使用jQuery那样方便。jsoup的主要功能包括: 1. **HTML解析**:...
这段代码会输出"页面标题: 测试页面",展示了如何通过jsoup解析HTML并获取页面标题。 总结来说,jsoup是Java开发中处理HTML的强大工具,它的易用性和灵活性使其在网页抓取、内容解析、数据提取等场景中广泛应用。...
1. HTML解析:Jsoup能够解析各种各样的HTML源码,无论是干净的结构化HTML还是充满乱七八糟标签的真实网页。它能处理HTML5和HTML4,甚至一些常见的错误格式也能被正确解析。 2. DOM操作:解析后的HTML被转化为一个...
1. HTML解析:Jsoup能够解析HTML文档,并将其转换为一个可操作的DOM(文档对象模型)结构。 2. CSS选择器:Jsoup支持CSS选择器,使得定位和提取HTML元素变得简单。 3. 文本提取:可以方便地从HTML文档中提取文本内容...
库中的解析器能够处理不完美的HTML,比如缺失的闭合标签或不合规的嵌套,使得开发者可以处理现实世界中复杂多变的网页内容。 2. **选择器语法**:jsoup支持CSS选择器,这使得从HTML中选取特定元素变得简单直观。...
1. **HTML解析**:Jsoup能够准确地解析HTML,处理网页中的嵌套标签、属性等复杂结构,即使面对不规范的HTML代码也能保持良好的解析性能。 2. **DOM解析**:Jsoup支持DOM解析模型,允许开发者使用标准的Document、...
2. **文本提取**:Jsoup提供了方法来提取文本,如`elem.text()` 返回元素内的纯文本,不包括HTML标签。 3. **属性操作**:可以轻松地获取或设置元素属性,如`elem.attr("href")` 获取链接属性,`elem.attr("href", ...
标题中的"jsoup解析html所需包1.7.3"表明我们将讨论的是JSoup 1.7.3版本,这个版本包含了三个关键的组件。 1. **jsoup-1.7.3.jar**:这是JSoup的核心库文件,包含了所有用于解析HTML的类和方法。开发人员在项目中...
3. 清理不规范HTML:网页源代码可能存在不标准的HTML标签和属性,Jsoup会尝试修复这些问题,提供一个干净的、结构化的文档模型。 4. 文档操作:除了查询,Jsoup还允许修改DOM结构,如添加、删除或更新元素和属性。...
6. **形式数据解析**:jsoup可以解析表单数据,模拟用户提交表单的行为。 **jsoup-1.9.2.jar**:这个文件是jsoup 1.9.2版本的JAR包,包含了库的所有类和资源。在Java项目中,可以直接引入这个JAR,通过`import org....
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。jsoup的主要功能如下:从一个URL,文件或字符串...
5. **元素(Element)**:每个HTML标签都是一个`Element`对象,它有子元素、属性和文本内容。我们可以使用`select()`方法查找子元素,或者使用`attr()`获取和设置属性值。 6. **节点操作**:Jsoup允许我们对元素...
7. **性能优化**:jsoup 1.8.1版本在解析速度和内存使用上做了优化,提高了整体性能,使得大规模网页处理更加高效。 8. **API友好**:jsoup的API设计简洁明了,易于学习和使用,大大降低了开发者的学习成本和开发...
3. **数据提取**:jsoup支持提取文本、属性值、链接、图片等HTML元素的数据,这对于网络爬虫或网页抓取应用非常有用。例如,可以轻松获取页面标题、段落内容、链接地址等信息。 4. **HTML清理**:jsoup具备HTML清理...
8. **性能优化**:Jsoup设计得轻量级且高效,内存占用小,解析速度快,适用于各种规模的项目。 在实际应用中,Jsoup广泛用于内容抓取、数据挖掘、自动化测试、网页维护等场景。例如,新闻聚合服务可能利用Jsoup定期...
**jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用DOM,CSS和jQuery-like方法。在深入jsoup的API之前,我们需要理解HTML解析的重要...
1. HTML解析:jsoup能够将HTML文档解析成一个DOM(Document Object Model)结构,这样就可以像操作XML一样操作HTML元素。 2. CSS选择器:jsoup支持CSS选择器,使得定位网页元素变得简单快捷,如通过`select("div....