Jsoup使用选择器语法来查找元素

如果你想使用类似于CSS或jQuery的语法来查找和操作元素,我们可以使用Element.select(String selector) 和 Elements.select(String selector) 方法实现:

File input = new File("html path");
Document document = Jsoup.parser(input, "UTF-8", "http://www.baidu.com");Elements links = docment.select("a[href]");  //带有href属性的a元素
Elements pngs = document.select("img[src$=.png]"); 扩展名为.png的图片Element masthead = document.select("div.masthead").first;  //获取class=masthead的div标签的第一个div
Elements resultLinks = document.select("h3.r > a"); // 获取class=r的h3元素后面的a元素

解说:
jsoup elements对象支持类似CSS或者JQuery的选择器,来实现非常强大及灵活的查找功能。这个select方法在Document、Elements和Element中都可以使用,且是上下文相关的,因此可以实现指定元素的过滤,或者链式选择访问。
Select方法将返回一个Elements集合,并提供一组方法来抽取和处理结果。

Selector选择器概述:

tagname:通过标签查找元素,比如:a
ns|tag:通过标签在命名空间查找元素,比如:可以用fb|name语法来查找<fb:name>元素
#id:通过ID查找元素,比如:#logo
.class:通过class名称查找元素,比如:.masthead
[attrbute]:利用属性查找元素,比如:[href]
[^attr]:利用属性名称前缀来查找元素,比如:可以用[^data-]来查找带有HTML5 Dataset属性的元素
[attr=value]:利用属性值来查找元素,比如:[width=500]
[attr^=value]、[attr$=value]、[attr*=value]:利用匹配属性值开头、结尾或包含属性值来查找元素,比如:[href*=/path/detail?date=20180419]
[attr~=regex]:利用属性值匹配正则表达式来查找元素,比如:
*:这个符号将匹配所有

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
slblingA ~ siblingX:查找A元素之前的同级X元素,比如:h1~p
el,el,el:多个选择器组合,查找匹配任意选择器的唯一元素,例如:div.masthead,div.logo

伪选择器Selector

:lt(n):查找哪些元素的同级索引值小于n,比如:td:lt(3)表示小于三列的元素值
:gt(n):查找哪些元素的同级索引值大于n,比如:div p:gt(2)表示哪些div中有包含2个以上的p元素
:eq(n):查找哪些元素的同级索引值与n相等,比如: from input:eq(1)表示包含一个inout标签的Form元素
:has(selector):查找匹配选择器包含元素的元素,比如: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):查找自身包含文本匹配指定正则表达式的元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV 例程200篇】212. 绘制倾斜的矩形

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】212. 绘制倾斜的矩形 7.1 绘图函数基本参数 OpenCV提供了绘图功能&#xff0c;可以在图像上绘制直线、矩形、圆、椭圆等各种几何图形。 函数原型&#xff1a; 函数 cv.rectangle() 用来在图像上绘制垂直于图像边界的…

java注释的理解,java注解原理——记录一下自己的理解

最近因为系统可能要更换成java语言&#xff0c;于是每天都在拼命的研究java的相关知识和框架。之前学习注解的时候&#xff0c;没有太深入的去理解它&#xff0c;只是觉得标注一下挺好用&#xff0c;但是现在在学到spring aop的时候&#xff0c;突然发现注解的功能是如此强大。…

Jsoup从元素中抽取属性 文本和HTML

在解析获得一个Document实例对象&#xff0c;并查找到一些元素之后&#xff0c;我们如何取得在这些元素中的数据呢&#xff1f;&#xff1f;&#xff1f; 使用Jsoup抽取属性&#xff0c;一般方法如下&#xff1a; 1.要取得一个属性的值&#xff0c;可以使用Node.attr(String k…

CSDN 技能树使用体验与产品分析(1)

文章目录1. 什么是技能树2. 技能树的产品结构3. 技能树的使用3.1 产品入口3.2 知识点的模块设置3.3 『练习题』模块3.4 『参考资料』模块3.5 『讨论区』与『笔记』模块4. 结束语C 站近期隆重推出了一个新产品『技能树』&#xff0c;这是一个很好的方向。 很早就想写一篇介绍和…

【OpenCV 例程200篇】213. 绘制圆形

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】213. 绘制圆形 7.1 绘图函数基本参数 OpenCV提供了绘图功能&#xff0c;可以在图像上绘制直线、矩形、圆、椭圆等各种几何图形。 7.3 绘制圆形 函数原型&#xff1a; 函数 cv.circle() 用来在图像上绘制圆形。 cv…

Jsoup处理URLs

我们在处理HTML内容时&#xff0c;可能经常会遇到这种问题&#xff0c;需要将html页面里面的链接地址从相对地址转换成绝对地址&#xff0c;如何使用Jsoup来解决这个问题呢&#xff1f; 方法 在你解析文档时确保有指定base URI&#xff0c;然后 使用 abs: 属性前缀来取得包含b…

matlab的fft点数,matlab fft的点数问题

看完下面的&#xff0c;也许你会明白点The FFT functions (fft, fft2, fftn, ifft, ifft2, ifftn) are based on a library called FFTW [3],[4]. To compute an N-point DFT when N is composite (that is, when NN1N2), the FFTW library decomposes the problem using the C…

【OpenCV 例程200篇】214. 绘制椭圆的参数详解

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】214. 绘制椭圆的参数详解 OpenCV提供了绘图功能&#xff0c;可以在图像上绘制直线、矩形、圆、椭圆等各种几何图形。 7.4 绘制椭圆 函数原型&#xff1a; 函数 cv.ellipse() 用来在图像上绘制椭圆轮廓、填充椭圆、椭…

mysql外键猫头,SQL进阶

SQL进阶1.约束之主键约束非空、唯一、被引用当表的某一列被指定为主键之后&#xff0c;该列就不能为空&#xff0c;不能有重复值出现。创建表时指定主键的两种方式&#xff1a;CREATE TABLE stu1(sid CHAR(6) PRIMARY KEY,sname VARCHAR(20),age INT,gender VARCHAR(10));指定s…

Jsoup获取所有链接

从一个URL获得一个页面。然后提取页面中的所有链接、图片和其它辅助内容。并检查URLs和文本信息。 运行下面程序需要指定一个URLs作为参数 package org.jsoup.examples;import org.jsoup.Jsoup; import org.jsoup.helper.Validate; import org.jsoup.nodes.Document; import …

【OpenCV 例程200篇】215. 基于多段线绘制近似椭圆

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】215. 基于多段线绘制近似椭圆 如果需要对椭圆渲染进行更多控制&#xff0c;或者绘制粗略的椭圆边界&#xff0c;可以使用 cv.ellipse2Poly 检索曲线&#xff0c;然后使用多段线进行渲染或使用fillPoly进行填充。 函数…

【OpenCV 例程200篇】216. 绘制多段线和多边形

专栏地址&#xff1a;『youcans 的 OpenCV 例程200篇』 文章目录&#xff1a;『youcans 的 OpenCV 例程200篇-总目录』 【youcans 的 OpenCV 例程200篇】216. 绘制多段线和多边形 函数 cv.polylines() 用来绘制多边形曲线或多段线。 函数 cv.fillPoly() 用来绘制一个或多个填充…

Jsoup设置属性值

在处理html时&#xff0c;我们有时候可能想在解析一个Document之后修改其中的某些属性值&#xff0c;如图片地址、class名称等各种属性&#xff0c;然后再保存到磁盘或都输出到前台页面。 可以使用属性设置方法 Element.attr(String key, String value), 和 Elements.attr(St…

matlab mat文件 太大,MATLAB .mat文件中的开销过大

这对我来说似乎是个错误.解决方法是以块的形式写入预分配的数组.从预先分配开始&#xff1a;fid fopen(01_hit12.par, r);data fread(fid, inf, uint8);nlines nnz(data 10) 1;fclose(fid);matObj.moleculeNumber zeros(1,nlines,uint8);matObj.isotopeologueNumber zer…

Jsoup设置一个元素的HTML内容

获取一个元素中的HTML内容&#xff0c;可以使用Element中的HTML设置方法。 示例 Element div doc.select("div").first(); // <div></div> div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p><…

【youcans 的图像处理学习课】总目录

专栏地址&#xff1a;『youcans 的图像处理学习课』 【youcans 的图像处理学习课】总目录 youcansqq.com, 【youcans 的图像处理学习课】 更新日期&#xff1a;2022-06-30 本系列是学习冈萨雷斯《数字图像处理&#xff08;第四版&#xff09;》的笔记&#xff0c;篇目也是对照…

mysql数据库连接异常,mysql连接数据库时处理连接异常

连接数据库时处理连接异常 $db new PDO(‘mysql:hostlocalhost;dbnametest’, $user, $pass);$rs $db->query(“SELECT aa,bb,cc FROM foo”);if ($db->errorCode() ! ’00000′){print_r($db->errorInfo());exit;}$arr $rs->fetchAll();print_r($arr);$db nul…

【OpenCV 例程200篇】217. 鼠标交互获取多边形区域(ROI)

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】217. 鼠标交互获取多边形区域 函数 cv.selectROI 可以通过鼠标在图像上选择感兴趣的矩形区域&#xff08;ROI&#xff0c;region of interest&#xff09;。 如果要通过鼠标在图像上选择感兴趣的多边形区域&#xff0c…

Jsoup设置元素的文本内容

修改一个HTML文档中的文本内容。 示例如下 Element div doc.select("div").first(); // <div></div> div.text("five > four"); // <div>five > four</div> div.prepend("First "); div.append(" Last&qu…

php+分针和时针重合,时钟问题—两针重合

​ 时钟问题—两针重合含义&#xff1a;钟面上的分针追上时针与之重合。这种追击&#xff0c;总是分针追时针&#xff0c;追击速度为分针每分钟前进的6度减去时针每分钟前进的0.5度&#xff0c;等于5.5度。由于钟面是圆形&#xff0c;追击分为分针在后和在前两种情况&#x…