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

1.jsoup的主要功能如下:

  • 从一个URL,文件或字符串中解析HTML;
  • 使用DOM或CSS选择器来查找、取出数据;
  • 可操作HTML元素、属性、文本;

jsoup解析

1.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的

2.其中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) 设置请求来源

3.jsoup提供类似JS获取html元素:

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

4.获得与设置元素的数据

  • 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

5.操作html元素:

  • append(String html), prepend(String html)
  • appendText(String text), prependText(String text)
  • appendElement(String tagName), prependElement(String tagName)
  • html(String value)

6.jsoup还提供了类似于JQuery方式的选择器
  6.1.采用选择器来检索数据

  • 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)]
  • 以上是最基本的选择器语法,这些语法也可以组合起来使用

7.组合用法

  • 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)     使用正则表达式找到自身的文本

8.其他用法:

  • //url网址作为输入源
  • Document doc = Jsoup.connect("http://www.example.com").timeout(60000).get();
  • //File文件作为输入源
  • File input = new File("/tmp/input.html");
  • Document doc = Jsoup.parse(input, "UTF-8", "http://www.example.com/");
  • //String作为输入源
  • Document doc = Jsoup.parse(htmlStr);
  • 和java script类似,Jsoup提供了下列的函数
  • getElementById(String id) 通过id获得元素
  • getElementsByTag(String tag) 通过标签获得元素
  • getElementsByClass(String className) 通过class获得元素
  • getElementsByAttribute(String key) 通过属性获得元素

9.同时还提供下面的方法提供获取兄弟节点:

  • siblingElements(), firstElementSibling(), lastElementSibling();nextElementSibling(), previousElementSibling()

10用下面方法获得元素的数据:

  • 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

11.操作html提供了下面方法:

  • append(String html), prepend(String html)
  • appendText(String text), prependText(String text)
  • appendElement(String tagName), prependElement(String tagName)
  • html(String value)

本文来自 Key_MQL 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/key_mql/article/details/55522325?utm_source=copy

转载:Jsoup常用方法功能介绍(html解析器)的更多相关文章

  1. 邵国际: C 语言对象化设计实例 —— 命令解析器

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 邵国际 来源: 微信公众号linux阅码场(id: linuxdev) 内容简介 单片机工程师常常疑惑为什么 ...

  2. 高性能Java解析器实现过程详解

    如果你没有指定数据或语言标准的或开源的Java解析器, 可能经常要用Java实现你自己的数据或语言解析器.或者,可能有很多解析器可选,但是要么太慢,要么太耗内存,或者没有你需要的特定功能.或者开源解析 ...

  3. HTML解析器软件

    HTML解析器软件 HTML文档解析器 HTMLParser HTML Parser 是一个对HTML进行分析的快速实时的解析器,最新的发行版本是1.6,另外2.0的开发版本已经两年没有进展了.示例代 ...

  4. 如何实现一个SQL解析器

    ​作者:vivo 互联网搜索团队- Deng Jie 一.背景 随着技术的不断的发展,在大数据领域出现了越来越多的技术框架.而为了降低大数据的学习成本和难度,越来越多的大数据技术和应用开始支持SQL进 ...

  5. Python爬虫——使用 lxml 解析器爬取汽车之家二手车信息

    本次爬虫的目标是汽车之家的二手车销售信息,范围是全国,不过很可惜,汽车之家只显示100页信息,每页48条,也就是说最多只能够爬取4800条信息. 由于这次爬虫的主要目的是使用lxml解析器,所以在信息 ...

  6. Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本

    Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本 1. 框架选型的要求1 1.1. 文档多1 1.2. 跨平台1 2. html解析器特性:1 2.1. j ...

  7. Atitit.html解析器的选型&#160;jsoup&#160;nsoup&#160;,java&#160;c#&#160;.net&#160;版本号

    Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号 1. 框架选型的要求 1 1.1. 文档多 1 1.2. 跨平台 1 2. html解析器特性: 1 2 ...

  8. python模块介绍- HTMLParser 简单的HTML和XHTML解析器

    python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...

  9. jsoup Java HTML解析器:使用选择器语法来查找元素

    jsoup Java HTML解析器:使用选择器语法来查找元素 使用选择器语法来查找元素 问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select( ...

随机推荐

  1. ubuntu切换到root用户

    我们都知道使用su root命令,去切换到root权限,此时会提示输入密码,可是怎么也输不对,提示"Authentication failure", 解决办法如下 su root ...

  2. The Preliminary Contest for ICPC Asia Nanjing 2019 C. Tsy's number 5

    https://nanti.jisuanke.com/t/41300 题意:求\(\sum_{i=1}^n\phi(i)\phi(j)2^{\phi(i)\phi(j)}\) \(f_i=\sum_{ ...

  3. Hive学习详细版

    一.概述 1.Hadoop的开发问题 只能用java语言开发,存在语言门槛 需要对Hadoop底层原理,api比较了解才能做开发 开发调试比较麻烦 2.什么是Hive Hive是基于Hadoop的一个 ...

  4. 工作记录--WPF自定义控件,实现一个可设置编辑模式的TextBox

    原文:工作记录--WPF自定义控件,实现一个可设置编辑模式的TextBox 1. 背景 因为最近在使用wpf开发桌面端应用,在查看页面需要把TextBox和Combox等控件设置为只读的.原本是个很简 ...

  5. springcloud(十四)、ribbon负载均衡策略应用案例

    一.eureka-server服务中心项目不再创建 二.eureka-common-empdept公共组件项目不再掩饰 三.创建eureka-client-provider-empdept-one提供 ...

  6. php非法输入数据类型

    1.空白输入 2.超长输入(如大于256个字符) 3.特殊字符(如·!@#¥%……&*()—=|.:‘:<>;'"<>?.,) 4.控制字符(如\r\n等) ...

  7. 《你不知道的JavaScript》上卷——第1章

    知识点总结 1.什么是作用域? 作用域是根据名称查找变量的一套规则. 2.通常将JavaScript归类为“动态”或“解释执行”语言,但事实上它是一门编译语言. 3.编译 在传统编译语言的流程中,程序 ...

  8. [转]Java多线程

    一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌 ...

  9. [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...

  10. ubuntu下apache服务器操作方法小结,具有参考借鉴价值

    这篇文章主要介绍了ubuntu下apache服务器操作方法小结,非常不错,具有参考借鉴价值,需要的朋友可以参考下(http://www.0831jl.com)Linux系统为Ubuntu 一.Star ...