Package lxml :: Package html

[hide private]
[frames] | no frames]

# Package html

source code

The `lxml.html` tool set for HTML handling.

Submodules | [hide private]

- lxml.html.ElementSoup: Legacy interface to the BeautifulSoup HTML parser.
- lxml.html._setmixin
- lxml.html.builder: A set of HTML generator tags for building HTML documents.
- lxml.html.clean: A cleanup tool for HTML.
- lxml.html.defs
- lxml.html.diff
- lxml.html.formfill
- lxml.html.html5parser: An interface to html5lib that mimics the lxml.html interface.
- lxml.html.soupparser: External interface to the BeautifulSoup HTML parser.
- lxml.html.usedoctest: Doctest module for HTML comparison.

Classes | [hide private]

| bytes str(object) -> string
| unicode str(object) -> string
| HtmlMixin
| _MethodFunc An object that represents a method on an element as a function; the function takes either an element or an HTML string. It returns whatever the function normally returns, or if the function works in-place (and so returns None) it returns a serialized form of the resulting document.
| HtmlComment
| HtmlElement
| HtmlProcessingInstruction
| HtmlEntity
| HtmlElementClassLookup A lookup scheme for HTML Element classes.
| FormElement Represents a <form> element.
| FieldsDict
| InputGetter An accessor that represents all the input fields in a form.
| InputMixin Mix-in for all input elements (input, select, and textarea)
| TextareaElement `<textarea>` element. You can get the name with `.name` and get/set the value with `.value`
| SelectElement `<select>` element. You can get the name with `.name`.
| MultipleSelectOptions Represents all the selected options in a `<select multiple>` element.
| RadioGroup This object represents several `<input type=radio>` elements that have the same name.
| CheckboxGroup Represents a group of checkboxes (`<input type=checkbox>`) that have the same name.
| CheckboxValues Represents the values of the checked checkboxes in a group of checkboxes with the same name.
| InputElement Represents an `<input>` element.
| LabelElement Represents a `<label>` element.
| HTMLParser An HTML parser that is configured to return lxml.html Element objects.
| XHTMLParser An XML parser that is configured to return lxml.html Element objects.

Functions | [hide private]

__fix_docstring(s) | source code

_unquote_match(s, pos) | source code

_transform_result(typ, result) Convert the result back into the input type. | source code

_nons(tag) | source code

document_fromstring(html, parser=None, **kw) | source code

fragments_fromstring(html, no_leading_text=False, base_url=None, parser=None, **kw) Parses several HTML elements, returning a list of elements. | source code

fragment_fromstring(html, create_parent=False, base_url=None, parser=None, **kw) Parses a single HTML element; it is an error if there is more than one element, or if anything but whitespace precedes or follows the element. | source code

fromstring(html, base_url=None, parser=None, **kw) Parse the html, returning a single element/document. | source code

parse(filename_or_url, parser=None, base_url=None, **kw) Parse a filename, URL, or file-like object into an HTML document tree. Note: this returns a tree, not an element. Use `parse(...).getroot()` to get the document root. | source code

_contains_block_level_tag(el) | source code

_element_name(el) | source code

submit_form(form, extra_values=None, open_http=None) Helper function to submit a form. Returns a file-like object, as from `urllib.urlopen()`. This object also has a `.geturl()` function, which shows the URL if there were any redirects. | source code

open_http_urllib(method, url, values) | source code

html_to_xhtml(html) Convert all tags in an HTML tree to XHTML by moving them to the XHTML namespace. | source code

xhtml_to_html(xhtml) Convert all tags in an XHTML tree to HTML by removing their XHTML namespace. | source code

__str_replace_meta_content_type(...) sub(repl, string[, count = 0]) --> newstring Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl. | source code

__bytes_replace_meta_content_type(...) sub(repl, string[, count = 0]) --> newstring Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl. | source code

tostring(doc, pretty_print=False, include_meta_content_type=False, encoding=None, method=`'``html``'`, with_tail=True, doctype=None) Return an HTML string representation of the document. | source code

open_in_browser(doc, encoding=None) Open the HTML document in a web browser, saving it to a temporary file to open it. Note that this does not delete the file after use. This is mainly meant for debugging. | source code

Element(*args, **kw) Create a new HTML Element. | source code

Variables | [hide private]

| basestring = `str, bytes`
| XHTML_NAMESPACE = ``'``http://www.w3.org/1999/xhtml``'``
| _rel_links_xpath = `descendant-or-self::a[@rel]|descendant-or-s`...``
| _options_xpath = `descendant-or-self::option|descendant-or-self`...``
| _forms_xpath = `descendant-or-self::form|descendant-or-self::x:`...``
| _class_xpath = `descendant-or-self::*[@class and contains(conca`...``
| _id_xpath = `descendant-or-self::*[@id=$id]`
| _collect_string_content = `string()`
| _css_url_re = `re.compile(r'`(?i)`url\(`(`"`[^`"`]``*`"`|`\'`[^`\'`]``*`\'`|``[^`\)`]``*``...``
| _css_import_re = `re.compile(r'@import "`(`.`*?``)`"')`
| _label_xpath = `//label[@for=$id]|//x:label[@for=$id]`
| _archive_re = `re.compile(r'`[^` `]``+`')`
| find_rel_links = `_MethodFunc('find_rel_links', copy= False)`
| find_class = `_MethodFunc('find_class', copy= False)`
| make_links_absolute = `_MethodFunc('make_links_absolute', copy=`...``
| resolve_base_href = `_MethodFunc('resolve_base_href', copy= True)`
| iterlinks = `_MethodFunc('iterlinks', copy= False)`
| rewrite_links = `_MethodFunc('rewrite_links', copy= True)`
| html_parser = `HTMLParser()`
| xhtml_parser = `XHTMLParser()`
| __package__ = ``'``lxml.html``'``

Function Details | [hide private]

### fragments_fromstring(html, no_leading_text=False, base_url=None, parser=None, **kw)

source code

Parses several HTML elements, returning a list of elements.

The first item in the list may be a string (though leading whitespace is removed). If no_leading_text is true, then it will be an error if there is leading text, and it will always be a list of only elements.

base_url will set the document's base_url attribute (and the tree's docinfo.URL)

### fragment_fromstring(html, create_parent=False, base_url=None, parser=None, **kw)

source code

Parses a single HTML element; it is an error if there is more than one element, or if anything but whitespace precedes or follows the element.

If create_parent is true (or is a tag name) then a parent node will be created to encapsulate the HTML in a single element. In this case, leading or trailing text is allowed.

base_url will set the document's base_url attribute (and the tree's docinfo.URL)

### fromstring(html, base_url=None, parser=None, **kw)

source code

Parse the html, returning a single element/document.

This tries to minimally parse the chunk of text, without knowing if it is a fragment or a document.

base_url will set the document's base_url attribute (and the tree's docinfo.URL)

### parse(filename_or_url, parser=None, base_url=None, **kw)

source code

Parse a filename, URL, or file-like object into an HTML document tree. Note: this returns a tree, not an element. Use `parse(...).getroot()` to get the document root.

You can override the base URL with the `base_url` keyword. This is most useful when parsing from a file-like object.

### submit_form(form, extra_values=None, open_http=None)

source code

Helper function to submit a form. Returns a file-like object, as from `urllib.urlopen()`. This object also has a `.geturl()` function, which shows the URL if there were any redirects.

You can use this like:

    form = doc.forms[0]
    form.inputs['foo'].value = 'bar' # etc
    response = form.submit()
    doc = parse(response)
    doc.make_links_absolute(response.geturl())

To change the HTTP requester, pass a function as `open_http` keyword argument that opens the URL for you. The function must have the following signature:

    open_http(method, URL, values)

The action is one of 'GET' or 'POST', the URL is the target URL as a string, and the values are a sequence of `(name, value)` tuples with the form data.

### tostring(doc, pretty_print=False, include_meta_content_type=False, encoding=None, method=`'``html``'`, with_tail=True, doctype=None)

source code

Return an HTML string representation of the document.

Note: if include_meta_content_type is true this will create a `<meta http-equiv="Content-Type" ...>` tag in the head; regardless of the value of include_meta_content_type any existing `<meta http-equiv="Content-Type" ...>` tag will be removed

The `encoding` argument controls the output encoding (defauts to ASCII, with &#...; character references for any characters outside of ASCII). Note that you can pass the name `'unicode'` as `encoding` argument to serialise to a unicode string.

The `method` argument defines the output method. It defaults to 'html', but can also be 'xml' for xhtml output, or 'text' to serialise to plain text without markup.

To leave out the tail text of the top-level element that is being serialised, pass `with_tail=False`.

The `doctype` option allows passing in a plain string that will be serialised before the XML tree. Note that passing in non well-formed content here will make the XML output non well-formed. Also, an existing doctype in the document tree will not be removed when serialising an ElementTree instance.

Example:

    >>> from lxml import html
    >>> root = html.fragment_fromstring('<p>Hello<br>world!</p>')

    >>> html.tostring(root)
    '<p>Hello<br>world!</p>'
    >>> html.tostring(root, method='html')
    '<p>Hello<br>world!</p>'

    >>> html.tostring(root, method='xml')
    '<p>Hello<br/>world!</p>'

    >>> html.tostring(root, method='text')
    'Helloworld!'

    >>> html.tostring(root, method='text', encoding=unicode)
    u'Helloworld!'

    >>> root = html.fragment_fromstring('<div><p>Hello<br>world!</p>TAIL</div>')
    >>> html.tostring(root[0], method='text', encoding=unicode)
    u'Helloworld!TAIL'

    >>> html.tostring(root[0], method='text', encoding=unicode, with_tail=False)
    u'Helloworld!'

    >>> doc = html.document_fromstring('<p>Hello<br>world!</p>')
    >>> html.tostring(doc, method='html', encoding=unicode)
    u'<html><body><p>Hello<br>world!</p></body></html>'

    >>> print(html.tostring(doc, method='html', encoding=unicode,
    ...          doctype='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'
    ...                  ' "http://www.w3.org/TR/html4/strict.dtd">'))
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><body><p>Hello<br>world!</p></body></html>

### Element(*args, **kw)

source code

Create a new HTML Element.

This can also be used for XHTML documents.

Variables Details | [hide private]

### _rel_links_xpath

Value:

      descendant-or-self::a[@rel]|descendant-or-self::x:a[@rel]

### _options_xpath

Value:

      descendant-or-self::option|descendant-or-self::x:option

### _forms_xpath

Value:

      descendant-or-self::form|descendant-or-self::x:form

### _class_xpath

Value:

      descendant-or-self::*[@class and contains(concat(' ', normalize-space(
      @class), ' '), concat(' ', $class_name, ' '))]

### _css_url_re

Value:

      re.compile(r'(?i)url\(("[^"]*"|\'[^\']*\'|[^\)]*)\)')

### make_links_absolute

Value:

      _MethodFunc('make_links_absolute', copy= True)