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

标签: jsoup 选择 语法 | 发表时间:2013-03-05 00:39 | 作者:
出处:http://www.iteye.com

jsoup elements对象支持类似于Jquery的选择器语法,来实现非常强大和灵活的查找功能。

使用 Element.select(String selector) Elements.select(String selector) 方法实现:

这个 select 方法在 Document, Element,或 Elements对象中都可以使用。且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。

Select方法将返回一个 Elements集合,并提供一组方法来抽取和处理结果。

Selector选择器概述

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

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

伪选择器selectors

  • :lt(n): 查找哪些元素的同级索引值(它的位置在DOM树中是相对于它的父节点)小于n,比如: td:lt(3) 表示小于三列的元素
  • :gt(n):查找哪些元素的同级索引值大于 n ,比如div p:gt(2)表示哪些div中有包含2个以上的p元素
  • :eq(n): 查找哪些元素的同级索引值与 n相等,比如: form input:eq(1)表示包含一个input标签的Form元素
  • :has(seletor): 查找匹配选择器包含元素的元素,比如: 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): 查找自身包含文本匹配指定正则表达式的元素
  • 注意:上述伪选择器索引是从0开始的,也就是说第一个元素索引值为0,第二个元素index为1等

可以查看 Selector API参考来了解更详细的内容



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [jsoup 选择 语法] 推荐:

jsoup select 选择器

- - 编程语言 - ITeye博客
采用CSS或类似jquery 选择器(selector)语法来处理HTML文档中的数据. 利用方法: Element.select(String selector)和 Elements.select(String selector). Jsoup的元素支持类似CSS或(jquery)的选择器语法的查找匹配的元素,可实现功能强大且鲁棒性好的查询.

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

- - ITeye博客
jsoup elements对象支持类似于Jquery的选择器语法,来实现非常强大和灵活的查找功能. Element.select(String selector) 和. Elements.select(String selector) 方法实现:. 这个 select 方法在. Elements对象中都可以使用.

JSOUP实现简单爬虫

- - ITeye博客
这个说是简单爬虫 其实连个爬虫也算不上吧 功能太精简了.... 流程很简单: 输入几个初始的网页 然后通过JSOUP获取网页中的a标签的href的值. 接着把新得到的地址放入任务队列中. 实现中的worker是一个单线程的派发器 用于产生Parser. Parser用于完成网页的保存 网页的解析 以及入队列操作.

浅谈jsoup网页抓取技术

- - CSDN博客互联网推荐文章
        最近初步接触HTML的页面抓取技术,之前曾涉及较多的是XML解析,对于XML解析方法非常的多,使用dom4j是最方便的. HTML解析似乎用途会更多一些,对于HTML的页面解析却也不甚了解. 查了一些资料,了解到了jsoup页面解析技术,jsoup是一款java的HTML解析器,可以直接解析某个URL地址、HTML文本内容,它提供了一套非常省力的API,可通过DOM,CSS以及类似于jquery的操作方法来取出和操作数据.

使用JSoup解析HTML文件

- - Java译站
HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技术动态生成的. 你的浏览器会去解析HTML并替你去渲染它们. 不过如果你需要自己在Java程序中解析HTML文档并查找某些元素,标签,属性或者检查某个特定的元素是否存在的话,那又该如何呢.

使用 jsoup 对 HTML 文档进行解析和操作

- - 互联网旁观者
Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是: 从 HTML 中攫取你所需的信息和 扩展 HTMLParser 对自定义标签的处理能力. 但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup.

Jsoup-简单优雅的HTML dom解析工具

- - CSDN博客Web前端推荐文章
最近在做一个项目,需要在线从官网上下载选手的图片、名称信息,即做一个简易的网络爬虫,实时抓取最新官网选手数据. 在网上搜了很多开源工具,一开始试的是webharvest,搞了一个上午,终于被其奇怪的配置文件搞怕了,我就是想链接下载一个在线的HTML页面,然后解析其DOM元素,没有更好的工具吗. 终于,在google上找到了Jsoup,其官网( http://jsoup.org/)上的demo神奇的只有两句话.

Jsoup获取全国地区数据(省市县镇村) - liushaofeng.cn

- - 博客园_首页
  最近手头在做一些东西,需要一个全国各地的地域数据,从省市区到县镇乡街道的. 各种度娘,各种谷歌,都没找到一个完整的数据. 最后功夫不负有心人,总算找到一份相对来说比较完整的 数据,但是这里的数据也只是精确到镇级别,没有村一级的数据(后来通过分析数据源我知道了为什么,呵呵),在加上博主提供的有些数据存在冗余,对于有强迫症和追求完美的我,心想着我一定要自己动手去把这部分数据给爬取出来.

[Android实例] 利用Jsoup解析Html实现的Android招聘信息大全

- - CSDN博客推荐文章
看到很多招聘网站都没有推出招聘信息客户端,想来利用现成的资源,解析他们网站上提供招聘信息,这里就利用了Jsoup来解析HTML中的数据,实现整理归纳,然后显示的一个程序,也算是一个学习的程序吧,这里,我们先看一下图片,以下就程序源码. 源码下载: 点击打开链接. 作者:kangkangz4 发表于2011-12-13 11:09:34 原文链接.

利用jsoup爬取百度网盘资源分享连接(多线程)

- - CSDN博客推荐文章
       突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了. 知乎上有人说过最好的方法就是http://pan.baidu.com/wap抓取,一看果然链接后面的uk值是一串数字,就想到可以自己拼装链接,循环不断的去抽取页面. 于是自己分析了下页面结构,就开始了.