parsel package¶
Submodules¶
parsel.csstranslator module¶
-
class
parsel.csstranslator.GenericTranslator[source]¶ Bases:
parsel.csstranslator.TranslatorMixin,cssselect.xpath.GenericTranslator
-
class
parsel.csstranslator.HTMLTranslator(xhtml=False)[source]¶ Bases:
parsel.csstranslator.TranslatorMixin,cssselect.xpath.HTMLTranslator
-
class
parsel.csstranslator.TranslatorMixin[source]¶ Bases:
objectThis mixin adds support to CSS pseudo elements via dynamic dispatch.
Currently supported pseudo-elements are
::textand::attr(ATTR_NAME).-
xpath_attr_functional_pseudo_element(xpath, function)[source]¶ Support selecting attribute values using ::attr() pseudo-element
-
parsel.selector module¶
XPath selectors based on lxml
-
class
parsel.selector.Selector(text=None, type=None, namespaces=None, root=None, base_url=None, _expr=None)[source]¶ Bases:
objectSelectorallows you to select parts of an XML or HTML text using CSS or XPath expressions and extract data from it.textis aunicodeobject in Python 2 or astrobject in Python 3typedefines the selector type, it can be"html","xml"orNone(default). IftypeisNone, the selector defaults to"html".-
property
attrib¶ Return the attributes dictionary for underlying element.
-
css(query)[source]¶ Apply the given CSS selector and return a
SelectorListinstance.queryis a string containing the CSS selector to apply.In the background, CSS queries are translated into XPath queries using cssselect library and run
.xpath()method.
-
extract()¶ Serialize and return the matched nodes in a single unicode string. Percent encoded content is unquoted.
-
get()[source]¶ Serialize and return the matched nodes in a single unicode string. Percent encoded content is unquoted.
-
namespaces¶
-
re(regex, replace_entities=True)[source]¶ Apply the given regex and return a list of unicode strings with the matches.
regexcan be either a compiled regular expression or a string which will be compiled to a regular expression usingre.compile(regex).By default, character entity references are replaced by their corresponding character (except for
&and<). Passingreplace_entitiesasFalseswitches off these replacements.
-
re_first(regex, default=None, replace_entities=True)[source]¶ Apply the given regex and return the first unicode string which matches. If there is no match, return the default value (
Noneif the argument is not provided).By default, character entity references are replaced by their corresponding character (except for
&and<). Passingreplace_entitiesasFalseswitches off these replacements.
-
register_namespace(prefix, uri)[source]¶ Register the given namespace to be used in this
Selector. Without registering namespaces you can’t select or extract data from non-standard namespaces. See Working on XML (and namespaces).
-
remove_namespaces()[source]¶ Remove all namespaces, allowing to traverse the document using namespace-less xpaths. See Removing namespaces.
-
root¶
-
selectorlist_cls¶ alias of
SelectorList
-
text¶
-
type¶
-
xpath(query, namespaces=None, **kwargs)[source]¶ Find nodes matching the xpath
queryand return the result as aSelectorListinstance with all elements flattened. List elements implementSelectorinterface too.queryis a string containing the XPATH query to apply.namespacesis an optionalprefix: namespace-urimapping (dict) for additional prefixes to those registered withregister_namespace(prefix, uri). Contrary toregister_namespace(), these prefixes are not saved for future calls.Any additional named arguments can be used to pass values for XPath variables in the XPath expression, e.g.:
selector.xpath('//a[href=$url]', url="http://www.example.com")
-
property
-
class
parsel.selector.SelectorList[source]¶ Bases:
listThe
SelectorListclass is a subclass of the builtinlistclass, which provides a few additional methods.-
property
attrib¶ Return the attributes dictionary for the first element. If the list is empty, return an empty dict.
-
css(query)[source]¶ Call the
.css()method for each element in this list and return their results flattened as anotherSelectorList.queryis the same argument as the one inSelector.css()
-
extract()¶ Call the
.get()method for each element is this list and return their results flattened, as a list of unicode strings.
-
extract_first(default=None)¶ Return the result of
.get()for the first element in this list. If the list is empty, return the default value.
-
get(default=None)[source]¶ Return the result of
.get()for the first element in this list. If the list is empty, return the default value.
-
getall()[source]¶ Call the
.get()method for each element is this list and return their results flattened, as a list of unicode strings.
-
re(regex, replace_entities=True)[source]¶ Call the
.re()method for each element in this list and return their results flattened, as a list of unicode strings.By default, character entity references are replaced by their corresponding character (except for
&and<. Passingreplace_entitiesasFalseswitches off these replacements.
-
re_first(regex, default=None, replace_entities=True)[source]¶ Call the
.re()method for the first element in this list and return the result in an unicode string. If the list is empty or the regex doesn’t match anything, return the default value (Noneif the argument is not provided).By default, character entity references are replaced by their corresponding character (except for
&and<. Passingreplace_entitiesasFalseswitches off these replacements.
-
xpath(xpath, namespaces=None, **kwargs)[source]¶ Call the
.xpath()method for each element in this list and return their results flattened as anotherSelectorList.queryis the same argument as the one inSelector.xpath()namespacesis an optionalprefix: namespace-urimapping (dict) for additional prefixes to those registered withregister_namespace(prefix, uri). Contrary toregister_namespace(), these prefixes are not saved for future calls.Any additional named arguments can be used to pass values for XPath variables in the XPath expression, e.g.:
selector.xpath('//a[href=$url]', url="http://www.example.com")
-
property
parsel.utils module¶
-
parsel.utils.extract_regex(regex, text, replace_entities=True)[source]¶ Extract a list of unicode strings from the given text/encoding using the following policies: * if the regex contains a named group called “extract” that will be returned * if the regex contains multiple numbered groups, all those will be returned (flattened) * if the regex doesn’t contain any group the entire regex matching is returned
-
parsel.utils.flatten(sequence) → list[source]¶ Returns a single, flat list which contains all elements retrieved from the sequence and all recursively contained sub-sequences (iterables). Examples: >>> [1, 2, [3,4], (5,6)] [1, 2, [3, 4], (5, 6)] >>> flatten([[[1,2,3], (42,None)], [4,5], [6], 7, (8,9,10)]) [1, 2, 3, 42, None, 4, 5, 6, 7, 8, 9, 10] >>> flatten([“foo”, “bar”]) [‘foo’, ‘bar’] >>> flatten([“foo”, [“baz”, 42], “bar”]) [‘foo’, ‘baz’, 42, ‘bar’]
Module contents¶
Parsel lets you extract text from XML/HTML documents using XPath or CSS selectors