`
chenlong_1988
  • 浏览: 185491 次
  • 性别: Icon_minigender_2
社区版块
存档分类

jsoup解析html

阅读更多

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

jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML; 
使用DOM或CSS选择器来查找、取出数据; 
可操作HTML元素、属性、文本; 

jsoup解析
Jsoup提供一系列的静态解析方法生成Document对象
static Document parse(File in, String charsetName)
static Document parse(File in, String charsetName, String baseUri)
static Document parse(InputStream in, String charsetName, String baseUri)
static Document parse(String html)
static Document parse(String html, String baseUri)   
static Document parse(URL url, int timeoutMillis)
static Document parseBodyFragment(String bodyHtml)
static Document parseBodyFragment(String bodyHtml, String baseUri) 
其中baseUri表示检索到的相对URL是相对于baseUriURL的 
其中charsetName表示字符集

Connection connect(String url) 根据给定的url(必须是http或https)来创建连接

Connection 提供一些方法来抓去网页内容
Connection cookie(String name, String value) 发送请求时放置cookie 
Connection data(Map<String,String> data) 传递请求参数 
Connection data(String... keyvals) 传递请求参数
Document get() 以get方式发送请求并对返回结果进行解析
Document post()以post方式发送请求并对返回结果进行解析 
Connection userAgent(String userAgent) 
Connection header(String name, String value) 添加请求头
Connection referrer(String referrer) 设置请求来源

jsoup提供类似JS获取html元素:
getElementById(String id) 用id获得元素
getElementsByTag(String tag) 用标签获得元素
getElementsByClass(String className) 用class获得元素
getElementsByAttribute(String key)  用属性获得元素
同时还提供下面的方法提供获取兄弟节点:siblingElements(), firstElementSibling(), lastElementSibling();nextElementSibling(), previousElementSibling()

获得与设置元素的数据
attr(String key)  获得元素的数据 attr(String key, String value) 设置元素数据 
attributes() 获得所以属性
id(), className()  classNames() 获得id class得值
text()获得文本值
text(String value) 设置文本值
html() 获取html 
html(String value)设置html
outerHtml() 获得内部html
data()获得数据内容
tag()  获得tag 和 tagName() 获得tagname 

操作html元素:
append(String html), prepend(String html)
appendText(String text), prependText(String text)
appendElement(String tagName), prependElement(String tagName)
html(String value)

jsoup还提供了类似于JQuery方式的选择器
采用选择器来检索数据
tagname 使用标签名来定位,例如 a 
ns|tag     使用命名空间的标签定位,例如 fb:name 来查找 <fb:name> 元素 
#id     使用元素 id 定位,例如 #logo 
.class     使用元素的 class 属性定位,例如 .head 
*     定位所有元素 
[attribute] 使用元素的属性进行定位,例如 [href] 表示检索具有 href 属性的所有元素 
[^attr] 使用元素的属性名前缀进行定位,例如 [^data-] 用来查找 HTML5 的 dataset 属性 
[attr=value]使用属性值进行定位,例如 [width=500] 定位所有 width 属性值为 500 的元素 
[attr^=value],[attr$=value],[attr*=value] 这三个语法分别代表,属性以 value 开头、结尾以及包含 
[attr~=regex]使用正则表达式进行属性值的过滤,例如 img[src~=(?i)\.(png|jpe?g)] 
以上是最基本的选择器语法,这些语法也可以组合起来使用

组合用法
el#id      定位id值某个元素,例如 a#logo -> <a id=logo href= … > 
el.class 定位 class 为指定值的元素,例如 div.head -> <div class=head>xxxx</div> 
el[attr] 定位所有定义了某属性的元素,例如 a[href] 
以上三个任意组合     例如 a[href]#logo 、a[name].outerlink 

除了一些基本的语法以及这些语法进行组合外,jsoup 还支持使用表达式进行元素过滤选择
:lt(n)     例如 td:lt(3) 表示小于三列 
:gt(n)     div p:gt(2) 表示 div 中包含 2 个以上的 p 
:eq(n)     form input:eq(1) 表示只包含一个 input 的表单 
:has(seletor)     div:has(p) 表示包含了 p 元素的 div 
:not(selector)     div:not(.logo) 表示不包含 class=logo 元素的所有 div 列表 
:contains(text)     包含某文本的元素,不区分大小写,例如 p:contains(oschina) 
:containsOwn(text)     文本信息完全等于指定条件的过滤 
:matches(regex)     使用正则表达式进行文本过滤:div:matches((?i)login) 

:matchesOwn(regex)     使用正则表达式找到自身的文本 

http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/index.html?ca=drs-


分享到:
评论

相关推荐

    用Jsoup解析html的所有jar包

    这个压缩包文件“用Jsoup解析html的所有jar包”显然是包含了使用Jsoup进行HTML解析所需的全部依赖。 首先,我们需要了解Jsoup的基本用法。Jsoup的核心功能在于它能够通过连接到一个URL或读取本地HTML文件来获取HTML...

    jsoup解析HTML

    在名为"NewSipder"的项目中,你可能正在构建一个网络爬虫,利用JSoup解析HTML内容。爬虫可能包括以下步骤: 1. **设置连接参数**:配置Jsoup连接,如超时时间、重试次数等。 2. **抓取页面**:使用`Jsoup.connect()...

    Jsoup解析html+xml

    二、Jsoup解析HTML 1. **连接并下载HTML文档**:Jsoup提供`connect()`方法连接到URL并下载HTML内容,然后使用`get()`方法获取下载的文档。 ```java Document doc = Jsoup.connect("http://example.com").get(); ...

    使用Jsoup解析html网页

    Jsoup以浏览器的方式解析HTML,使得我们可以方便地通过CSS选择器来查找和操作元素,极大地简化了这一过程。 ### Jsoup的基本概念 1. **Jsoup连接(Connection)**:使用Jsoup的第一步是建立到目标网页的连接。这...

    jsoup解析html修改文件名

    本文将深入探讨如何使用Jsoup解析HTML,并根据解析结果来修改文件名。我们将通过一个简单的示例来展示这个过程。 首先,我们需要理解Jsoup的基本用法。Jsoup库提供了一个强大的API,可以方便地解析HTML文档,提取...

    jsoup解析html所需包1.7.3

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

    Jsoup解析Html获取新闻列表

    在本文中,我们将深入探讨如何利用Jsoup解析HTML,以便获取新闻列表等网页数据。首先,让我们了解Jsoup的基本用法,然后通过实例演示如何从一个HTML页面中提取新闻列表。 1. **Jsoup简介** - Jsoup是由Jonathon ...

    Jsoup解析html中文文档

    ### Jsoup解析HTML中文文档 #### 一、jsoup简介及优势 **jsoup**是一款专为Java设计的HTML解析库,它可以帮助开发者方便地解析HTML文档,支持直接解析URL地址、HTML文本等内容。jsoup提供了简洁易用的API接口,...

    JAVA jSOUP解析html

    `Test01.java`负责使用jSoup解析HTML并提取所需信息,而`UrlUtils.java`则辅助处理URL相关的操作,如生成合法请求的URL,或对获取的链接进行编码和解码。 总结,jSoup是Java中解析和操作HTML的强大工具,其易于使用...

    Jsoup解析html的示例

    **二、解析HTML** 1. **获取文本内容** Jsoup提供`text()`方法来提取元素内的文本,如上例所示的获取标题文本。 2. **获取属性值** 可以通过`attr()`方法获取HTML元素的属性值,例如获取链接的`href`属性: ```...

    使用Jsoup解析HTML数据的Demo

    这是使用Jsoup解析HTML得到数据的一个小例子,具体的使用方法请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47134255

    jsoupAPI解析html

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

    Jsoup解析html

    Jsoup是一款非常强大的Java库,专门用于解析HTML文档。它提供了简单易用的API,使得开发者可以方便地抓取和操作HTML数据,而无需复杂的正则表达式或DOM解析器的繁琐工作。在这个主题中,我们将深入探讨Jsoup的主要...

    httpClient采集jsoup解析

    例如,如果你想要抓取一个新闻网站的最新文章标题,可以先使用HttpClient发送请求获取网页源码,再用Jsoup解析HTML,找到包含文章标题的元素: ```java CloseableHttpClient httpClient = HttpClients.create...

    android使用jsoup 解析html文件

    本文将深入探讨如何在Android中利用`jsoup`库解析HTML文件并进行内容替换。 首先,让我们了解什么是`jsoup`。`jsoup`是一个Java库,提供了一种简单而强大的API,用于处理现实世界中的HTML。它可以解析HTML,提取和...

    使用jsoup解析html的table中的文本信息实例

    在本文中,我们将深入探讨如何使用Jsoup这个Java库来解析HTML文档,特别是提取HTML表格(table)中的文本信息。Jsoup是一个强大的库,它提供了方便的API来处理HTML,包括解析、查找、修改和输出HTML内容。让我们通过...

    jsoup 解析html

    在本文中,我们将深入探讨JSoup的核心功能、使用场景以及如何有效地利用它来解析HTML。 1. **JSoup的基本概念** - **DOM解析**:JSoup使用DOM解析方式,将HTML文档转化为一个可操作的Element树形结构。这种解析...

Global site tag (gtag.js) - Google Analytics