- 浏览: 54379 次
- 性别:
- 来自: 湖北
文章分类
- 全部博客 (102)
- ibatis (4)
- spring (12)
- 数据库 (3)
- java (26)
- css (2)
- linux (1)
- hibernate (4)
- Maven (3)
- CMS (1)
- spring mvc (1)
- MyBati (1)
- WEB (1)
- 分布式 (2)
- webservice (2)
- 网络协议 (1)
- TCP (1)
- UDP协议 (1)
- sql优化原则 (1)
- android (1)
- hadoop (10)
- solr (2)
- Scala学习笔记--Actor和并发 (0)
- Spark (4)
- Scala (1)
- hbase (1)
- kafka (1)
- ICE (2)
- 机器学习算法 (2)
- Apache Ignite (1)
- python (1)
- tensorflow (2)
- openstack (1)
- 系统监控 (2)
- 大数据 (1)
- ogg (2)
- Oracle GoldenGate DDL 详细说明 使用手册(较早资料) (0)
- oracle (1)
最新评论
jsoup:解析HTML用法小结
原文 http://my.oschina.net/laiwanshan/blog/155869
1.解析方式
(1)从字符串解析
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parse HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
(2)从URL获取解析
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
Document doc = Jsoup.connect("http://example.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
(3)从文件解析
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
2.DOM方式遍历元素
(1)搜索元素
getElementById(String id)
getElementByTag(String tag)
getElementByClass(String className)
getElementByAttribute(String key)
siblingElements(), firstElementSibling(), lastElementSibling(), nextElementSibling(), previousElementSibling()
parent(), children(), child(int index)
(2)获取元素数据
attr(String key) – 获取key属性
attributes() – 获取属性
id(), className(), classNames()
text() – 获取文本内容
html() – 获取元素内部HTML内容
outerHtml() – 获取包括此元素的HTML内容
data() – 获取<srcipt>或<style>标签中的内容
tag(), tagName()
3.选择器语法(jsoup与其他解析器的区别就是可以使用类似jquery的选择器语法来搜索及过滤出所需的元素)
(1)基本选择器
tagname: 搜索tag标签的元素
ns|tag: 搜索命名空间内tag标签的元素,如fb|name:<fb:name>
#id: 搜索有指定id的元素
.class: 搜索有指定class的元素
[attribute]: 搜索有attrribute属性的元素
[^attri]: 搜索有以attri开头的属性的元素
[attr=value]: 搜索有指定属性及其属性值的元素
[attr^=value], [attr$=value], [attr*=value]: 搜索有指定attr属性,且其属性值是以value开头、结尾或包括value的元素,如[href*=/path/]
[attr~=regex]: 搜索有指定attr属性,且其属性值符合regex正则表达式的元素
*: 搜索所有元素
(2)选择器组合
el#id: 同时指定标签名称和id
el.class: 同时指定标签名称和class
el[attr]: 同时指定标签名称和及其中所含属性的名称
上述3项的任意组合,如a[href].highlight
ancestor child: 包含,如div.content p,即搜索<div class=”content”>下含有<p>标签的元素
ancestor > child: 直接包含,如div.content > p,即搜索直属<div class="content">节点下的<p>标签元素;div.content > *,即搜索<div class="content">下的所有元素
siblingA + siblingB: 直接遍历,如div.head + div,即搜索<div class="head"><div>的元素,其中不再包含子元素
siblingA ~ siblingX: 遍历,如h1 ~ p,即<h1>下直接或间接有<p>的元素
el, el, el: 组合多个选择器,搜索满足其中一个选择器的元素
(3)伪选择器(条件选择器)
:lt(n): 搜索n号元素之前的元素
:gt(n): 搜索n号元素之后的元素
:eq(n): 搜索n号元素
:has(seletor): 搜索符合指定选择器的元素
:not(seletor): 搜索不符合指定选择器的元素
:contains(text): 搜索包含指定文本的元素,区分大小写
:containsOwn(text): 搜索直接指包含指定文本的元素
:matches(regex): 搜索符合指定正则表达式的元素
:matchesOwn(regex): 搜索本元素文本中符合指定正则表达式的元素
注意:以上伪选择器的索引中,第一个元素位于索引0,第二个元素位于索引1,……
4.获取元素的属性、文本和HTML
获取元素的属性值:Node.attr(String key)
获取元素的文本,包括与其组合的子元素:Element.text()
获取HTML:Element.html()或Node.outerHtml()
5.操作URL
Element.attr("href") – 直接获取URL
Element.attr("abs:href")或Element.absUrl("href") – 获取完整URL。如果HTML是从文件或字符串解析过来的,需要调用Jsoup.setBaseUri(String baseUri)来指定基URL,否则获取的完整URL只会是空字符串
6.测试例子
li[class=info] a[class=Author] - 空格前后表示包含关系,即表示li里的a
div[class=mod mod-main mod-lmain]:contains(教学反思) - div中包含"教学反思",适合同时有多个同名DIV的情况
/*
previousSibling()获取某标签前面的代码
nextSibling()获取某标签后的代码
如:
<form id=form1>
第一名:Lily <br/>
第二名:Tom <br/>
第三名:Peter <br/>
</form>
*/
Elements items = doc.select("form[id=form1]");
Elements prevs = items.select("br");
for(Element p : prevs){
String prevStr = p.previousSibling().toString().trim());
}
/*
最常用的链接抓取
*/
String itemTag = "div[class=mydiv]";
String linkTag = "a"
Elements items = doc.select(itemTag);
Elements links = items.select(linkTag);
for(Element l : links){
String href = l.attr("abs:href");//完整Href
String absHref = l.attr("href");//相对路径
String text = l.text();
String title = l.attr("title");
}
原文 http://my.oschina.net/laiwanshan/blog/155869
1.解析方式
(1)从字符串解析
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parse HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
(2)从URL获取解析
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
Document doc = Jsoup.connect("http://example.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
(3)从文件解析
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
2.DOM方式遍历元素
(1)搜索元素
getElementById(String id)
getElementByTag(String tag)
getElementByClass(String className)
getElementByAttribute(String key)
siblingElements(), firstElementSibling(), lastElementSibling(), nextElementSibling(), previousElementSibling()
parent(), children(), child(int index)
(2)获取元素数据
attr(String key) – 获取key属性
attributes() – 获取属性
id(), className(), classNames()
text() – 获取文本内容
html() – 获取元素内部HTML内容
outerHtml() – 获取包括此元素的HTML内容
data() – 获取<srcipt>或<style>标签中的内容
tag(), tagName()
3.选择器语法(jsoup与其他解析器的区别就是可以使用类似jquery的选择器语法来搜索及过滤出所需的元素)
(1)基本选择器
tagname: 搜索tag标签的元素
ns|tag: 搜索命名空间内tag标签的元素,如fb|name:<fb:name>
#id: 搜索有指定id的元素
.class: 搜索有指定class的元素
[attribute]: 搜索有attrribute属性的元素
[^attri]: 搜索有以attri开头的属性的元素
[attr=value]: 搜索有指定属性及其属性值的元素
[attr^=value], [attr$=value], [attr*=value]: 搜索有指定attr属性,且其属性值是以value开头、结尾或包括value的元素,如[href*=/path/]
[attr~=regex]: 搜索有指定attr属性,且其属性值符合regex正则表达式的元素
*: 搜索所有元素
(2)选择器组合
el#id: 同时指定标签名称和id
el.class: 同时指定标签名称和class
el[attr]: 同时指定标签名称和及其中所含属性的名称
上述3项的任意组合,如a[href].highlight
ancestor child: 包含,如div.content p,即搜索<div class=”content”>下含有<p>标签的元素
ancestor > child: 直接包含,如div.content > p,即搜索直属<div class="content">节点下的<p>标签元素;div.content > *,即搜索<div class="content">下的所有元素
siblingA + siblingB: 直接遍历,如div.head + div,即搜索<div class="head"><div>的元素,其中不再包含子元素
siblingA ~ siblingX: 遍历,如h1 ~ p,即<h1>下直接或间接有<p>的元素
el, el, el: 组合多个选择器,搜索满足其中一个选择器的元素
(3)伪选择器(条件选择器)
:lt(n): 搜索n号元素之前的元素
:gt(n): 搜索n号元素之后的元素
:eq(n): 搜索n号元素
:has(seletor): 搜索符合指定选择器的元素
:not(seletor): 搜索不符合指定选择器的元素
:contains(text): 搜索包含指定文本的元素,区分大小写
:containsOwn(text): 搜索直接指包含指定文本的元素
:matches(regex): 搜索符合指定正则表达式的元素
:matchesOwn(regex): 搜索本元素文本中符合指定正则表达式的元素
注意:以上伪选择器的索引中,第一个元素位于索引0,第二个元素位于索引1,……
4.获取元素的属性、文本和HTML
获取元素的属性值:Node.attr(String key)
获取元素的文本,包括与其组合的子元素:Element.text()
获取HTML:Element.html()或Node.outerHtml()
5.操作URL
Element.attr("href") – 直接获取URL
Element.attr("abs:href")或Element.absUrl("href") – 获取完整URL。如果HTML是从文件或字符串解析过来的,需要调用Jsoup.setBaseUri(String baseUri)来指定基URL,否则获取的完整URL只会是空字符串
6.测试例子
li[class=info] a[class=Author] - 空格前后表示包含关系,即表示li里的a
div[class=mod mod-main mod-lmain]:contains(教学反思) - div中包含"教学反思",适合同时有多个同名DIV的情况
/*
previousSibling()获取某标签前面的代码
nextSibling()获取某标签后的代码
如:
<form id=form1>
第一名:Lily <br/>
第二名:Tom <br/>
第三名:Peter <br/>
</form>
*/
Elements items = doc.select("form[id=form1]");
Elements prevs = items.select("br");
for(Element p : prevs){
String prevStr = p.previousSibling().toString().trim());
}
/*
最常用的链接抓取
*/
String itemTag = "div[class=mydiv]";
String linkTag = "a"
Elements items = doc.select(itemTag);
Elements links = items.select(linkTag);
for(Element l : links){
String href = l.attr("abs:href");//完整Href
String absHref = l.attr("href");//相对路径
String text = l.text();
String title = l.attr("title");
}
发表评论
-
jvm
2018-03-26 09:47 399http://www.cnblogs.com/moonands ... -
多线程
2015-11-11 16:05 353public class ThreadDemo3 { ... -
java之装饰设计模式和继承的简单区别
2015-10-29 16:24 811http://jiangnanlove.iteye.com/b ... -
java注解
2015-10-26 11:18 394Java自定义注解小结 作者:谢伟伦 学习java有两年之余了 ... -
字符串补零除0
2015-10-21 11:55 702//去零操作 String str = "0050 ... -
代理模式与装饰模式差别,适配器模式
2015-10-07 19:29 727http://blog.csdn.net/hitprince/ ... -
license生成
2015-03-02 10:44 543package com.dameng.dmdp.utils; ... -
java 堆和栈
2014-11-27 15:18 5201.栈(stack)与堆(heap)都是J ... -
java内部类、静态内部类 小结
2014-11-26 14:12 5471)首先,用内部类是因 ... -
java 23种设计模式
2014-11-19 14:56 599http://zz563143188.iteye.com/bl ... -
Java调用webservice接口方法
2014-11-19 14:36 5211. Java调用webservice接口方法 webserv ... -
java基本类型
2014-11-05 14:05 705基本类型比较 -
java修饰符权限
2014-11-05 13:58 603(1)public:可以被所有其他类所访问。 (2)priv ... -
类型转换
2014-11-05 13:44 496short s1 = 1; s1 = s1 + 1;有错,s1 ... -
Sring x = new String("xyz")
2014-11-05 13:32 516只要是new,都是重新分配堆空间,如果不区分栈和堆,这里创建了 ... -
java内部类和静态内部类调用
2014-06-23 14:06 550内部类 public class Test { clas ... -
匿名内部类
2014-06-18 15:00 445匿名内部类也就是没有 ... -
类的加载周期
2014-06-16 12:47 372类什么时候被加载/类加载时机: 第一:生成该类对象的时候,会 ... -
内部类
2014-05-05 14:43 497http://www.cnblogs.com/mengdd/a ... -
工厂模式
2014-03-24 15:17 528举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 ...
相关推荐
这个压缩包文件“用Jsoup解析html的所有jar包”显然是包含了使用Jsoup进行HTML解析所需的全部依赖。 首先,我们需要了解Jsoup的基本用法。Jsoup的核心功能在于它能够通过连接到一个URL或读取本地HTML文件来获取HTML...
在名为"NewSipder"的项目中,你可能正在构建一个网络爬虫,利用JSoup解析HTML内容。爬虫可能包括以下步骤: 1. **设置连接参数**:配置Jsoup连接,如超时时间、重试次数等。 2. **抓取页面**:使用`Jsoup.connect()...
二、Jsoup解析HTML 1. **连接并下载HTML文档**:Jsoup提供`connect()`方法连接到URL并下载HTML内容,然后使用`get()`方法获取下载的文档。 ```java Document doc = Jsoup.connect("http://example.com").get(); ...
Jsoup以浏览器的方式解析HTML,使得我们可以方便地通过CSS选择器来查找和操作元素,极大地简化了这一过程。 ### Jsoup的基本概念 1. **Jsoup连接(Connection)**:使用Jsoup的第一步是建立到目标网页的连接。这...
本文将深入探讨如何使用Jsoup解析HTML,并根据解析结果来修改文件名。我们将通过一个简单的示例来展示这个过程。 首先,我们需要理解Jsoup的基本用法。Jsoup库提供了一个强大的API,可以方便地解析HTML文档,提取...
标题中的"jsoup解析html所需包1.7.3"表明我们将讨论的是JSoup 1.7.3版本,这个版本包含了三个关键的组件。 1. **jsoup-1.7.3.jar**:这是JSoup的核心库文件,包含了所有用于解析HTML的类和方法。开发人员在项目中...
在本文中,我们将深入探讨如何利用Jsoup解析HTML,以便获取新闻列表等网页数据。首先,让我们了解Jsoup的基本用法,然后通过实例演示如何从一个HTML页面中提取新闻列表。 1. **Jsoup简介** - Jsoup是由Jonathon ...
### Jsoup解析HTML中文文档 #### 一、jsoup简介及优势 **jsoup**是一款专为Java设计的HTML解析库,它可以帮助开发者方便地解析HTML文档,支持直接解析URL地址、HTML文本等内容。jsoup提供了简洁易用的API接口,...
`Test01.java`负责使用jSoup解析HTML并提取所需信息,而`UrlUtils.java`则辅助处理URL相关的操作,如生成合法请求的URL,或对获取的链接进行编码和解码。 总结,jSoup是Java中解析和操作HTML的强大工具,其易于使用...
**二、解析HTML** 1. **获取文本内容** Jsoup提供`text()`方法来提取元素内的文本,如上例所示的获取标题文本。 2. **获取属性值** 可以通过`attr()`方法获取HTML元素的属性值,例如获取链接的`href`属性: ```...
这是使用Jsoup解析HTML得到数据的一个小例子,具体的使用方法请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47134255
**jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用DOM,CSS和jQuery-like方法。在深入jsoup的API之前,我们需要理解HTML解析的重要...
Jsoup是一款非常强大的Java库,专门用于解析HTML文档。它提供了简单易用的API,使得开发者可以方便地抓取和操作HTML数据,而无需复杂的正则表达式或DOM解析器的繁琐工作。在这个主题中,我们将深入探讨Jsoup的主要...
例如,如果你想要抓取一个新闻网站的最新文章标题,可以先使用HttpClient发送请求获取网页源码,再用Jsoup解析HTML,找到包含文章标题的元素: ```java CloseableHttpClient httpClient = HttpClients.create...
本文将深入探讨如何在Android中利用`jsoup`库解析HTML文件并进行内容替换。 首先,让我们了解什么是`jsoup`。`jsoup`是一个Java库,提供了一种简单而强大的API,用于处理现实世界中的HTML。它可以解析HTML,提取和...
在本文中,我们将深入探讨如何使用Jsoup这个Java库来解析HTML文档,特别是提取HTML表格(table)中的文本信息。Jsoup是一个强大的库,它提供了方便的API来处理HTML,包括解析、查找、修改和输出HTML内容。让我们通过...
在本文中,我们将深入探讨JSoup的核心功能、使用场景以及如何有效地利用它来解析HTML。 1. **JSoup的基本概念** - **DOM解析**:JSoup使用DOM解析方式,将HTML文档转化为一个可操作的Element树形结构。这种解析...