转载:Jsoup常用方法功能介绍(html解析器)
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解析器)的更多相关文章
- 邵国际: C 语言对象化设计实例 —— 命令解析器
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 邵国际 来源: 微信公众号linux阅码场(id: linuxdev) 内容简介 单片机工程师常常疑惑为什么 ...
- 高性能Java解析器实现过程详解
如果你没有指定数据或语言标准的或开源的Java解析器, 可能经常要用Java实现你自己的数据或语言解析器.或者,可能有很多解析器可选,但是要么太慢,要么太耗内存,或者没有你需要的特定功能.或者开源解析 ...
- HTML解析器软件
HTML解析器软件 HTML文档解析器 HTMLParser HTML Parser 是一个对HTML进行分析的快速实时的解析器,最新的发行版本是1.6,另外2.0的开发版本已经两年没有进展了.示例代 ...
- 如何实现一个SQL解析器
作者:vivo 互联网搜索团队- Deng Jie 一.背景 随着技术的不断的发展,在大数据领域出现了越来越多的技术框架.而为了降低大数据的学习成本和难度,越来越多的大数据技术和应用开始支持SQL进 ...
- Python爬虫——使用 lxml 解析器爬取汽车之家二手车信息
本次爬虫的目标是汽车之家的二手车销售信息,范围是全国,不过很可惜,汽车之家只显示100页信息,每页48条,也就是说最多只能够爬取4800条信息. 由于这次爬虫的主要目的是使用lxml解析器,所以在信息 ...
- 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 ...
- 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 ...
- python模块介绍- HTMLParser 简单的HTML和XHTML解析器
python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...
- jsoup Java HTML解析器:使用选择器语法来查找元素
jsoup Java HTML解析器:使用选择器语法来查找元素 使用选择器语法来查找元素 问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select( ...
随机推荐
- artTemplate(mark)
一个渲染性能出众模板引擎,无论在 NodeJS 还是在浏览器中都可以运行. 特性 拥有接近 JavaScript 渲染极限的的性能 调试友好:语法.运行时错误日志精确到模板所在行:支持在模板文件上打断 ...
- ubuntu下安装git提示无root权限
apt-get install git 获取git指令 sudo passwd root 重置unix密码 su root 键入密码 参考链接 https://www.cnblogs.com/2she ...
- php相关操作
array_unshift : 数组头部追加 用法如下: $arr = ['demo','dmoa']; array_unshift($arr,'demob'); //在$arr的前面追加demob ...
- C++调用JS,JS调用C++
JS调用C++,通过设置DIID_HTMLDocumentEvents事件,来捕获HTMLWINDOW上的事件,再通过事件对象的get_srcElement得到事件源,从而得到指定元素对象,从而获取元 ...
- duilib教程之duilib入门简明教程16.结合win32和MFC
虽然duilib自带在MFC中使用duilib的Demo,但只是MFC窗口和duilib窗口不重叠的情况.如果要在MFC窗口中嵌入duilib控件,或者在duilib控件中嵌入MFC的控件的话,就没有 ...
- react 高阶组件之小学版
高阶组件 多么高大上的概念,一般用来实现组件逻辑的抽象和复用,在很多三方库(redux)中都被使用到,但是开发普通有任务项目时,如果能合理使用高阶组件,也会显著的提高代码质量. 我们今天就用最简单的 ...
- hdu多校第三场 1007 (hdu6609) Find the answer 线段树
题意: 给定一组数,共n个,第i次把第i个数扔进来,要求你删掉前i-1个数中的一些(不许删掉刚加进来这个数),使得前i个数相加的和小于m.问你对于每个i,最少需要删掉几个数字. 题解: 肯定是优先删大 ...
- c#读取并异步写入文件,简单版,指定编码,保持原格式。
1.同步读取和写入 StreamReader objReader = new StreamReader("E://workspace//zzz//read.txt", Encodi ...
- Python接口测试框架实战与自动化进阶✍✍✍
Python接口测试框架实战与自动化进阶 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看 ...
- 一个简单的基于Tornado二手房信息统计项目的开发实现
Purpose 最近因为要买房子,扫过了各种信息,貌似lianjia上的数据还是靠点谱的(最起码房源图片没有太大的出入),心血来潮想着做几个图表来显示下房屋的数据信息,顺便练练手. 需求分析 1从li ...