Class Selector
- java.lang.Object
-
- org.jsoup.select.Selector
-
public class Selector extends java.lang.ObjectCSS-like element selector, that finds elements matching a query.Selector syntax
A selector is a chain of simple selectors, separated by combinators. Selectors are case insensitive (including against elements, attributes, and attribute values).
The universal selector (*) is implicit when no element selector is supplied (i.e.
*.headerand.headeris equivalent).Pattern Matches Example *any element *tagelements with the given tag name div*|Eelements of type E in any namespace ns *|namefinds<fb:name>elementsns|Eelements of type E in the namespace ns fb|namefinds<fb:name>elements#idelements with attribute ID of "id" div#wrap,#logo.classelements with a class name of "class" div.left,.result[attr]elements with an attribute named "attr" (with any value) a[href],[title][^attrPrefix]elements with an attribute name starting with "attrPrefix". Use to find elements with HTML5 datasets [^data-],div[^data-][attr=val]elements with an attribute named "attr", and value equal to "val" img[width=500],a[rel=nofollow][attr="val"]elements with an attribute named "attr", and value equal to "val" span[hello="Cleveland"][goodbye="Columbus"],a[rel="nofollow"][attr^=valPrefix]elements with an attribute named "attr", and value starting with "valPrefix" a[href^=http:][attr$=valSuffix]elements with an attribute named "attr", and value ending with "valSuffix" img[src$=.png][attr*=valContaining]elements with an attribute named "attr", and value containing "valContaining" a[href*=/search/][attr~=regex]elements with an attribute named "attr", and value matching the regular expression img[src~=(?i)\\.(png|jpe?g)]The above may be combined in any order div.header[title]Combinators
E Fan F element descended from an E element div a,.logo h1E > Fan F direct child of E ol > liE + Fan F element immediately preceded by sibling E li + li,div.head + divE ~ Fan F element preceded by sibling E h1 ~ pE, F, Gall matching elements E, F, or G a[href], div, h3Pseudo selectors
:lt(n)elements whose sibling index is less than n td:lt(3)finds the first 3 cells of each row:gt(n)elements whose sibling index is greater than n td:gt(1)finds cells after skipping the first two:eq(n)elements whose sibling index is equal to n td:eq(0)finds the first cell of each row:has(selector)elements that contains at least one element matching the selector div:has(p)finds divs that contain p elements:not(selector)elements that do not match the selector. See also Elements.not(String)div:not(.logo)finds all divs that do not have the "logo" class.div:not(:has(div))finds divs that do not contain divs.:contains(text)elements that contains the specified text. The search is case insensitive. The text may appear in the found element, or any of its descendants. p:contains(jsoup)finds p elements containing the text "jsoup".:matches(regex)elements whose text matches the specified regular expression. The text may appear in the found element, or any of its descendants. td:matches(\\d+)finds table cells containing digits.div:matches((?i)login)finds divs containing the text, case insensitively.:containsOwn(text)elements that directly contain the specified text. The search is case insensitive. The text must appear in the found element, not any of its descendants. p:containsOwn(jsoup)finds p elements with own text "jsoup".:matchesOwn(regex)elements whose own text matches the specified regular expression. The text must appear in the found element, not any of its descendants. td:matchesOwn(\\d+)finds table cells directly containing digits.div:matchesOwn((?i)login)finds divs containing the text, case insensitively.:containsData(data)elements that contains the specified data. The contents of scriptandstyleelements, andcommentnodes (etc) are considered data nodes, not text nodes. The search is case insensitive. The data may appear in the found element, or any of its descendants.script:contains(jsoup)finds script elements containing the data "jsoup".The above may be combined in any order and with other selectors .light:contains(name):eq(0):matchTexttreats text nodes as elements, and so allows you to match against and select text nodes. Note that using this selector will modify the DOM, so you may want to
cloneyour document before using.p:matchText:firstChildwith input<p>One<br />Two</p>will return onePseudoTextElementwith text "One".Structural pseudo selectors
:rootThe element that is the root of the document. In HTML, this is the htmlelement:root:nth-child(an+b)elements that have
In addition to this,an+b-1siblings before it in the document tree, for any positive integer or zero value ofn, and has a parent element. For values ofaandbgreater than zero, this effectively divides the element's children into groups of a elements (the last group taking the remainder), and selecting the bth element of each group. For example, this allows the selectors to address every other row in a table, and could be used to alternate the color of paragraph text in a cycle of four. Theaandbvalues must be integers (positive, negative, or zero). The index of the first child of an element is 1.:nth-child()can takeoddandevenas arguments instead.oddhas the same signification as2n+1, andevenhas the same signification as2n.tr:nth-child(2n+1)finds every odd row of a table.:nth-child(10n-1)the 9th, 19th, 29th, etc, element.li:nth-child(5)the 5h li:nth-last-child(an+b)elements that have an+b-1siblings after it in the document tree. Otherwise like:nth-child()tr:nth-last-child(-n+2)the last two rows of a table:nth-of-type(an+b)pseudo-class notation represents an element that has an+b-1siblings with the same expanded element name before it in the document tree, for any zero or positive integer value of n, and has a parent elementimg:nth-of-type(2n+1):nth-last-of-type(an+b)pseudo-class notation represents an element that has an+b-1siblings with the same expanded element name after it in the document tree, for any zero or positive integer value of n, and has a parent elementimg:nth-last-of-type(2n+1):first-childelements that are the first child of some other element. div > p:first-child:last-childelements that are the last child of some other element. ol > li:last-child:first-of-typeelements that are the first sibling of its type in the list of children of its parent element dl dt:first-of-type:last-of-typeelements that are the last sibling of its type in the list of children of its parent element tr > td:last-of-type:only-childelements that have a parent element and whose parent element hasve no other element children :only-of-typean element that has a parent element and whose parent element has no other element children with the same expanded element name :emptyelements that have no children at all - See Also:
Element.select(String)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSelector.SelectorParseException
-
Constructor Summary
Constructors Modifier Constructor Description privateSelector()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description (package private) static ElementsfilterOut(java.util.Collection<Element> elements, java.util.Collection<Element> outs)static Elementsselect(java.lang.String query, java.lang.Iterable<Element> roots)Find elements matching selector.static Elementsselect(java.lang.String query, Element root)Find elements matching selector.static Elementsselect(Evaluator evaluator, Element root)Find elements matching selector.static ElementselectFirst(java.lang.String cssQuery, Element root)Find the first element that matches the query.
-
-
-
Method Detail
-
select
public static Elements select(java.lang.String query, Element root)
Find elements matching selector.- Parameters:
query- CSS selectorroot- root element to descend into- Returns:
- matching elements, empty if none
- Throws:
Selector.SelectorParseException- (unchecked) on an invalid CSS query.
-
select
public static Elements select(Evaluator evaluator, Element root)
Find elements matching selector.- Parameters:
evaluator- CSS selectorroot- root element to descend into- Returns:
- matching elements, empty if none
-
select
public static Elements select(java.lang.String query, java.lang.Iterable<Element> roots)
Find elements matching selector.- Parameters:
query- CSS selectorroots- root elements to descend into- Returns:
- matching elements, empty if none
-
filterOut
static Elements filterOut(java.util.Collection<Element> elements, java.util.Collection<Element> outs)
-
-