lxml.cssselect module

CSS Selectors based on XPath.

This module supports selecting XML/HTML tags based on CSS selectors. See the CSSSelector class for details.

This is a thin wrapper around cssselect 0.7 or later.

class lxml.cssselect.CSSSelector(css, namespaces=None, translator='xml')[source]

Bases: lxml.etree.XPath

A CSS selector.

Usage:

>>> from lxml import etree, cssselect
>>> select = cssselect.CSSSelector("a tag > child")

>>> root = etree.XML("<a><b><c/><tag><child>TEXT</child></tag></b></a>")
>>> [ el.tag for el in select(root) ]
['child']

To use CSS namespaces, you need to pass a prefix-to-namespace mapping as namespaces keyword argument:

>>> rdfns = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
>>> select_ns = cssselect.CSSSelector('root > rdf|Description',
...                                   namespaces={'rdf': rdfns})

>>> rdf = etree.XML((
...     '<root xmlns:rdf="%s">'
...       '<rdf:Description>blah</rdf:Description>'
...     '</root>') % rdfns)
>>> [(el.tag, el.text) for el in select_ns(rdf)]
[('{http://www.w3.org/1999/02/22-rdf-syntax-ns#}Description', 'blah')]
class lxml.cssselect.LxmlHTMLTranslator(xhtml=False)[source]

Bases: lxml.cssselect.LxmlTranslator, cssselect.xpath.HTMLTranslator

lxml extensions + HTML support.

class lxml.cssselect.LxmlTranslator[source]

Bases: cssselect.xpath.GenericTranslator

A custom CSS selector to XPath translator with lxml-specific extensions.

xpath_contains_function(xpath, function)[source]
lxml.cssselect._make_lower_case(context, s)[source]