问题
采用CSS或类似jquery 选择器(selector)语法来处理HTML文档中的数据。
方法
利用方法:Element.select(String selector)和Elements.select(String selector)。
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Elements links = doc.select("a[href]"); // a with href
Elements pngs = doc.select("img[src$=.png]"); // img with src ending .png
Element masthead = doc.select("div.masthead").first();
// div with class=masthead
Elements resultLinks = doc.select("h3.r > a"); // direct a after h3
描述
Jsoup的元素支持类似CSS或(jquery)的选择器语法的查找匹配的元素,可实现功能强大且鲁棒性好的查询。
jsoup elements support a CSS(or jquery) like selector syntax to find matching elements, that allows very powerful and robust queries.
Select方法可作用于Document、Element或Elements,且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。
The selectmethod is available in a Document, Element, or in Elements. It is contextual, so you can filter by selecting from a specific element, or by chaining select calls.
选择(操作)返回元素列表(Elements),并提供一组方法来提取或处理结果。
Select returns a list of Elements (as Elements), which provides a range of methods to extract and manipulate the results.
选择器概要(Selector overview)
- Tagname:通过标签查找元素(例如:a)
- ns|tag:通过标签在命名空间查找元素,例如:fb|name查找<fb:name>元素
- #id:通过ID查找元素,例如#logo
- .class:通过类型名称查找元素,例如.masthead
- [attribute]:带有属性的元素,例如[href]
- [^attr]:带有名称前缀的元素,例如[^data-]查找HTML5带有数据集(dataset)属性的元素
- [attr=value]:带有属性值的元素,例如[width=500]
- [attr^=value],[attr$=value],[attr*=value]:包含属性且其值以value开头、结尾或包含value的元素,例如[href*=/path/]
- [attr~=regex]:属性值满足正则表达式的元素,例如img[src~=(?i)\.(png|jpe?g)]
- *:所有元素,例如*
选择器组合方法
- el#id::带有ID的元素ID,例如div#logo
- el.class:带类型的元素,例如. div.masthead
- el[attr]:包含属性的元素,例如a[href]
- 任意组合:例如a[href].highlight
- ancestor child:继承自某祖(父)元素的子元素,例如.body p查找“body”块下的p元素
- parent > child:直接为父元素后代的子元素,例如: div.content > pf查找p元素,body > * 查找body元素的直系子元素
- siblingA + siblingB:查找由同级元素A前导的同级元素,例如div.head + div
- siblingA ~ siblingX:查找同级元素A前导的同级元素X例如h1 ~ p
- el, el, el:多个选择器组合,查找匹配任一选择器的唯一元素,例如div.masthead, div.logo
伪选择器(Pseudo selectors)
- :lt(n):查找索引值(即DOM树中相对于其父元素的位置)小于n的同级元素,例如td:lt(3)
- :gt(n):查找查找索引值大于n的同级元素,例如div p:gt(2)
- :eq(n) :查找索引值等于n的同级元素,例如form input:eq(1)
- :has(seletor):查找匹配选择器包含元素的元素,例如div:has(p)
- :not(selector):查找不匹配选择器的元素,例如div:not(.logo)
- :contains(text):查找包含给定文本的元素,大小写铭感,例如p:contains(jsoup)
- :containsOwn(text):查找直接包含给定文本的元素
- :matches(regex):查找其文本匹配指定的正则表达式的元素,例如div:matches((?i)login)
- :matchesOwn(regex):查找其自身文本匹配指定的正则表达式的元素
- 注意:上述伪选择器是0-基数的,亦即第一个元素索引值为0,第二个元素index为1等
详见SelectorAPI 参考资料所列全部信息和细节。
【原文】http://jsoup.org/cookbook/extracting-data/selector-syntax
相关推荐
Jsoup select选择器基本的使用方法,一般套路都是打开浏览器开发者工具,找到需要爬取的网页信息所在的网页标签,标记。然后用选择器把子标签所在的“路径”用语句拼接起来。。select(".slst.mtw>ul>li>h3>a");例如要...
下面将详细介绍 JSoup 支持的各种 CSS 选择器及其用法。 1. **基本选择器**: - `*`: 通配符选择器,匹配任何元素。 - `tag`: 按照元素名称选择,如 `div` 选择所有的 `<div>` 元素。 - `#id`: 通过元素的 ID ...
通过jsoup提供的`select()`方法,我们可以轻松地将这些选择器应用于HTML文档,提取或修改所需的数据。例如,对于名为`testJsoup.html`的文件,我们可以这样做: ```java File file = new File("testJsoup.html"); ...
在新浪高尔夫频道的新闻抓取中,我们可以先通过jsoup连接到目标URL,然后使用CSS选择器找到新闻列表的元素。例如,如果新闻标题在class为"news-item-title"的元素中,我们可以这样获取: ```java Document doc = ...
2. 使用选择器方式:使用select()方法,可以使用CSS选择器来选择HTML元素。 Jsoup的选择器语法 Jsoup的选择器语法类似于CSS选择器,包括: * 元素选择器:使用标签名,例如"a",可以选择所有的超链接元素。 * ...
提供了对HTML结构的访问,如`select()`方法用于CSS选择器查询,`html()`方法获取或设置整个文档的HTML源码。 - **Element对象**:表示HTML元素,每个HTML标签都对应一个Element。Element拥有丰富的API,如`text()`...
3. CSS选择器:Jsoup支持CSS选择器,使得定位网页元素变得简单易行。例如,`doc.select("div.container")` 将选取所有class为container的div元素。 4. 清理和规范化:Jsoup提供了一种安全的方式来清理HTML,移除...
4. **选择元素**:利用CSS选择器选取需要的元素,如`doc.select("selector")`。 5. **提取数据**:使用Element对象的方法,如text()、attr()等,获取元素的文本或属性值。 6. **修改HTML**:如果需要修改页面内容,...
Jsoup 支持 CSS 选择器语法,这使得定位特定元素变得非常容易。例如,`doc.select("h1.title")` 将选取所有的 class 为 title 的 h1 元素。 8.从元素集合抽取属性、文本和 HTML 内容 `attr(String attributeKey)` ...
Jsoup提供了一种CSS选择器风格的API,`select()`方法可以用来查找文档中的元素。例如,我们可以使用类选择器、ID选择器、标签选择器等来定位新闻条目。一旦找到元素,可以通过`.text()`获取文本内容,通过`.attr()`...
- **Selector**:提供CSS选择器来查找HTML元素,如`select("tagname")`或`select(".class")`。 - **Parser**:用于解析HTML或XML字符串到Document对象。 - **Cleaner**和**Whitelist**:用于HTML清理,定义允许的...
jsoup还引入了对CSS选择器的支持,这使得从HTML文档中选取元素变得非常直观,尤其是对于熟悉Web开发的开发者来说。例如,`doc.select("div.classname")`将返回所有class为"classname"的`<div>`元素。这种选择器的...
jsoup支持CSS选择器,这使得定位HTML元素变得极其简单。CSS选择器语法广泛应用于网页设计中,现在也可以在jsoup中用于查找和操作HTML元素。例如,你可以使用".class"、"#id"、"[attribute=value]"等语法来选取元素。...
jsoup支持CSS选择器,这使得从HTML中选择特定元素变得轻而易举。使用类似jQuery的语法,如`select("div.container p")`,可以轻松地选取页面上所有class为"container"的div元素内的段落(p)。这种特性极大地提高了...
你可以通过CSS选择器选择元素,就像在jQuery中那样: ```java Elements links = doc.select("a[href]"); for (Element link : links) { System.out.println(link.attr("href")); } ``` **3. 数据提取** JSoup...
jsoup提供了丰富的选择器语法,类似于CSS选择器,可以轻松地定位到HTML元素。例如,获取网页的标题: ```java String title = doc.title(); System.out.println("Title: " + title); ``` 此外,我们还可以获取或...
例如,通过`doc.getElementById("id")`或`doc.select("css选择器")`,开发者可以快速定位到目标元素。 此外,jsoup还集成了CSS选择器,这使得开发者可以用类似jQuery的方式来选取HTML元素。对于熟悉前端开发的人来...
Jsoup的核心特性在于其能够模拟浏览器的行为,对HTML进行理解和解析,使得开发者可以像使用jQuery那样通过DOM和CSS选择器轻松地获取和操作HTML元素。 **一、Jsoup的功能** 1. **HTML解析**:Jsoup能够准确地解析...
3. **选择元素**:使用Jsoup提供的选择器方法,如`select()`,可以方便地定位到我们需要的HTML元素。例如,要选取所有的`<p>`标签,可以这样写: ```java Elements paragraphs = doc.select("p"); ``` 4. **...
6. **JsoupXpath**:虽然JSoup的主要选择方式是CSS选择器,但有时开发者可能更习惯于XPath表达式。JsoupXpath是一个可选的扩展,它为JSoup提供了XPath支持,使得那些熟悉XPath语法的开发者也能在JSoup中方便地工作。...