beautifulsoup4 API Reference

Full documentation for beautifulsoup4 (4.12.3)

beautifulsoup4.BeautifulSoup
Python Library Documentation: class BeautifulSoup in module bs4

class BeautifulSoup(bs4.element.Tag)
 |  BeautifulSoup(markup='', features=None, builder=None, parse_only=None, from_encoding=None, exclude_encodings=None, element_classes=None, **kwargs)
 |
 |  A data structure representing a parsed HTML or XML document.
 |
 |  Most of the methods you'll call on a BeautifulSoup object are inherited from
 |  PageElement or Tag.
 |
 |  Internally, this class defines the basic interface called by the
 |  tree builders when converting an HTML/XML document into a data
 |  structure. The interface abstracts away the differences between
 |  parsers. To write a new tree builder, you'll need to understand
 |  these methods as a whole.
 |
 |  These methods will be called by the BeautifulSoup constructor:
 |    * reset()
 |    * feed(markup)
 |
 |  The tree builder may call these methods from its feed() implementation:
 |    * handle_starttag(name, attrs) # See note about return value
 |    * handle_endtag(name)
 |    * handle_data(data) # Appends to the current data node
 |    * endData(containerClass) # Ends the current data node
 |
 |  No matter how complicated the underlying parser is, you should be
 |  able to build a tree using 'start tag' events, 'end tag' events,
 |  'data' events, and "done with data" events.
 |
 |  If you encounter an empty-element tag (aka a self-closing tag,
 |  like HTML's <br> tag), call handle_starttag and then
 |  handle_endtag.
 |
 |  Method resolution order:
 |      BeautifulSoup
 |      bs4.element.Tag
 |      bs4.element.PageElement
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __getstate__(self)
 |      Helper for pickle.
 |
 |  __init__(self, markup='', features=None, builder=None, parse_only=None, from_encoding=None, exclude_encodings=None, element_classes=None, **kwargs)
 |      Constructor.
 |
 |      :param markup: A string or a file-like object representing
 |       markup to be parsed.
 |
 |      :param features: Desirable features of the parser to be
 |       used. This may be the name of a specific parser ("lxml",
 |       "lxml-xml", "html.parser", or "html5lib") or it may be the
 |       type of markup to be used ("html", "html5", "xml"). It's
 |       recommended that you name a specific parser, so that
 |       Beautiful Soup gives you the same results across platforms
 |       and virtual environments.
 |
 |      :param builder: A TreeBuilder subclass to instantiate (or
 |       instance to use) instead of looking one up based on
 |       `features`. You only need to use this if you've implemented a
 |       custom TreeBuilder.
 |
 |      :param parse_only: A SoupStrainer. Only parts of the document
 |       matching the SoupStrainer will be considered. This is useful
 |       when parsing part of a document that would otherwise be too
 |       large to fit into memory.
 |
 |      :param from_encoding: A string indicating the encoding of the
 |       document to be parsed. Pass this in if Beautiful Soup is
 |       guessing wrongly about the document's encoding.
 |
 |      :param exclude_encodings: A list of strings indicating
 |       encodings known to be wrong. Pass this in if you don't know
 |       the document's encoding but you know Beautiful Soup's guess is
 |       wrong.
 |
 |      :param element_classes: A dictionary mapping BeautifulSoup
 |       classes like Tag and NavigableString, to other classes you'd
 |       like to be instantiated instead as the parse tree is
 |       built. This is useful for subclassing Tag or NavigableString
 |       to modify default behavior.
 |
 |      :param kwargs: For backwards compatibility purposes, the
 |       constructor accepts certain keyword arguments used in
 |       Beautiful Soup 3. None of these arguments do anything in
 |       Beautiful Soup 4; they will result in a warning and then be
 |       ignored.
 |
 |       Apart from this, any keyword arguments passed into the
 |       BeautifulSoup constructor are propagated to the TreeBuilder
 |       constructor. This makes it possible to configure a
 |       TreeBuilder by passing in arguments, not just by saying which
 |       one to use.
 |
 |  __setstate__(self, state)
 |
 |  decode(self, pretty_print=False, eventual_encoding='utf-8', formatter='minimal', iterator=None)
 |      Returns a string or Unicode representation of the parse tree
 |          as an HTML or XML document.
 |
 |      :param pretty_print: If this is True, indentation will be used to
 |          make the document more readable.
 |      :param eventual_encoding: The encoding of the final document.
 |          If this is None, the document will be a Unicode string.
 |
 |  endData(self, containerClass=None)
 |      Method called by the TreeBuilder when the end of a data segment
 |      occurs.
 |
 |  handle_data(self, data)
 |      Called by the tree builder when a chunk of textual data is encountered.
 |
 |  handle_endtag(self, name, nsprefix=None)
 |      Called by the tree builder when an ending tag is encountered.
 |
 |      :param name: Name of the tag.
 |      :param nsprefix: Namespace prefix for the tag.
 |
 |  handle_starttag(self, name, namespace, nsprefix, attrs, sourceline=None, sourcepos=None, namespaces=None)
 |      Called by the tree builder when a new tag is encountered.
 |
 |      :param name: Name of the tag.
 |      :param nsprefix: Namespace prefix for the tag.
 |      :param attrs: A dictionary of attribute values.
 |      :param sourceline: The line number where this tag was found in its
 |          source document.
 |      :param sourcepos: The character position within `sourceline` where this
 |          tag was found.
 |      :param namespaces: A dictionary of all namespace prefix mappings
 |          currently in scope in the document.
 |
 |      If this method returns None, the tag was rejected by an active
 |      SoupStrainer. You should proceed as if the tag had not occurred
 |      in the document. For instance, if this was a self-closing tag,
 |      don't call handle_endtag.
 |
 |  insert_after(self, *args)
 |      This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
 |      it because there is nothing before or after it in the parse tree.
 |
 |  insert_before(self, *args)
 |      This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
 |      it because there is nothing before or after it in the parse tree.
 |
 |  new_string(self, s, subclass=None)
 |      Create a new NavigableString associated with this BeautifulSoup
 |      object.
 |
 |  new_tag(self, name, namespace=None, nsprefix=None, attrs={}, sourceline=None, sourcepos=None, **kwattrs)
 |      Create a new Tag associated with this BeautifulSoup object.
 |
 |      :param name: The name of the new Tag.
 |      :param namespace: The URI of the new Tag's XML namespace, if any.
 |      :param prefix: The prefix for the new Tag's XML namespace, if any.
 |      :param attrs: A dictionary of this Tag's attribute values; can
 |          be used instead of `kwattrs` for attributes like 'class'
 |          that are reserved words in Python.
 |      :param sourceline: The line number where this tag was
 |          (purportedly) found in its source document.
 |      :param sourcepos: The character position within `sourceline` where this
 |          tag was (purportedly) found.
 |      :param kwattrs: Keyword arguments for the new Tag's attribute values.
 |
 |  object_was_parsed(self, o, parent=None, most_recent_element=None)
 |      Method called by the TreeBuilder to integrate an object into the parse tree.
 |
 |  popTag(self)
 |      Internal method called by _popToTag when a tag is closed.
 |
 |  pushTag(self, tag)
 |      Internal method called by handle_starttag when a tag is opened.
 |
 |  reset(self)
 |      Reset this object to a state as though it had never parsed any
 |      markup.
 |
 |  string_container(self, base_class=None)
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  ASCII_SPACES = ' \n\t\x0c\r'
 |
 |  DEFAULT_BUILDER_FEATURES = ['html', 'fast']
 |
 |  NO_PARSER_SPECIFIED_WARNING = 'No parser was explicitly specified, so ...
 |
 |  ROOT_TAG_NAME = '[document]'
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from bs4.element.Tag:
 |
 |  __bool__(self)
 |      A tag is non-None even if it has no contents.
 |
 |  __call__(self, *args, **kwargs)
 |      Calling a Tag like a function is the same as calling its
 |      find_all() method. Eg. tag('a') returns a list of all the A tags
 |      found within this tag.
 |
 |  __contains__(self, x)
 |
 |  __copy__(self)
 |      A copy of a Tag must always be a deep copy, because a Tag's
 |      children can only have one parent at a time.
 |
 |  __deepcopy__(self, memo, recursive=True)
 |      A deepcopy of a Tag is a new Tag, unconnected to the parse tree.
 |      Its contents are a copy of the old Tag's contents.
 |
 |  __delitem__(self, key)
 |      Deleting tag[key] deletes all 'key' attributes for the tag.
 |
 |  __eq__(self, other)
 |      Returns true iff this Tag has the same name, the same attributes,
 |      and the same contents (recursively) as `other`.
 |
 |  __getattr__(self, tag)
 |      Calling tag.subtag is the same as calling tag.find(name="subtag")
 |
 |  __getitem__(self, key)
 |      tag[key] returns the value of the 'key' attribute for the Tag,
 |      and throws an exception if it's not there.
 |
 |  __hash__(self)
 |      Return hash(self).
 |
 |  __iter__(self)
 |      Iterating over a Tag iterates over its contents.
 |
 |  __len__(self)
 |      The length of a Tag is the length of its list of contents.
 |
 |  __ne__(self, other)
 |      Returns true iff this Tag is not identical to `other`,
 |      as defined in __eq__.
 |
 |  __repr__ = __unicode__(self)
 |
 |  __setitem__(self, key, value)
 |      Setting tag[key] sets the value of the 'key' attribute for the
 |      tag.
 |
 |  __str__ = __unicode__(self)
 |
 |  __unicode__(self)
 |      Renders this PageElement as a Unicode string.
 |
 |  childGenerator(self)
 |      Deprecated generator.
 |
 |  clear(self, decompose=False)
 |      Wipe out all children of this PageElement by calling extract()
 |         on them.
 |
 |      :param decompose: If this is True, decompose() (a more
 |          destructive method) will be called instead of extract().
 |
 |  decode_contents(self, indent_level=None, eventual_encoding='utf-8', formatter='minimal')
 |      Renders the contents of this tag as a Unicode string.
 |
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |
 |      :param eventual_encoding: The tag is destined to be
 |         encoded into this encoding. decode_contents() is _not_
 |         responsible for performing that encoding. This information
 |         is passed in so that it can be substituted in if the
 |         document contains a <META> tag that mentions the document's
 |         encoding.
 |
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard Formatters.
 |
 |  decompose(self)
 |      Recursively destroys this PageElement and its children.
 |
 |      This element will be removed from the tree and wiped out; so
 |      will everything beneath it.
 |
 |      The behavior of a decomposed PageElement is undefined and you
 |      should never use one for anything, but if you need to _check_
 |      whether an element has been decomposed, you can use the
 |      `decomposed` property.
 |
 |  encode(self, encoding='utf-8', indent_level=None, formatter='minimal', errors='xmlcharrefreplace')
 |      Render a bytestring representation of this PageElement and its
 |      contents.
 |
 |      :param encoding: The destination encoding.
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard formatters.
 |      :param errors: An error handling strategy such as
 |          'xmlcharrefreplace'. This value is passed along into
 |          encode() and its value should be one of the constants
 |          defined by Python.
 |      :return: A bytestring.
 |
 |  encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal')
 |      Renders the contents of this PageElement as a bytestring.
 |
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |
 |      :param eventual_encoding: The bytestring will be in this encoding.
 |
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard Formatters.
 |
 |      :return: A bytestring.
 |
 |  find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
 |      Look in the children of this PageElement and find the first
 |      PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param recursive: If this is True, find() will perform a
 |          recursive search of this PageElement's children. Otherwise,
 |          only the direct children will be considered.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  findAll = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |
 |  findChild = find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
 |
 |  findChildren = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |
 |  find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |      Look in the children of this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param recursive: If this is True, find_all() will perform a
 |          recursive search of this PageElement's children. Otherwise,
 |          only the direct children will be considered.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  get(self, key, default=None)
 |      Returns the value of the 'key' attribute for the tag, or
 |      the value given for 'default' if it doesn't have that
 |      attribute.
 |
 |  get_attribute_list(self, key, default=None)
 |      The same as get(), but always returns a list.
 |
 |      :param key: The attribute to look for.
 |      :param default: Use this value if the attribute is not present
 |          on this PageElement.
 |      :return: A list of values, probably containing only a single
 |          value.
 |
 |  has_attr(self, key)
 |      Does this PageElement have an attribute with the given name?
 |
 |  has_key(self, key)
 |      Deprecated method. This was kind of misleading because has_key()
 |      (attributes) was different from __in__ (contents).
 |
 |      has_key() is gone in Python 3, anyway.
 |
 |  index(self, element)
 |      Find the index of a child by identity, not value.
 |
 |      Avoids issues with tag.contents.index(element) getting the
 |      index of equal elements.
 |
 |      :param element: Look for this PageElement in `self.contents`.
 |
 |  prettify(self, encoding=None, formatter='minimal')
 |      Pretty-print this PageElement as a string.
 |
 |      :param encoding: The eventual encoding of the string. If this is None,
 |          a Unicode string will be returned.
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard formatters.
 |      :return: A Unicode string (if encoding==None) or a bytestring
 |          (otherwise).
 |
 |  recursiveChildGenerator(self)
 |      Deprecated generator.
 |
 |  renderContents(self, encoding='utf-8', prettyPrint=False, indentLevel=0)
 |      Deprecated method for BS3 compatibility.
 |
 |  select(self, selector, namespaces=None, limit=None, **kwargs)
 |      Perform a CSS selection operation on the current element.
 |
 |      This uses the SoupSieve library.
 |
 |      :param selector: A string containing a CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param limit: After finding this number of results, stop looking.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |         soupsieve.select() method.
 |
 |      :return: A ResultSet of Tags.
 |      :rtype: bs4.element.ResultSet
 |
 |  select_one(self, selector, namespaces=None, **kwargs)
 |      Perform a CSS selection operation on the current element.
 |
 |      :param selector: A CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param kwargs: Keyword arguments to be passed into Soup Sieve's
 |         soupsieve.select() method.
 |
 |      :return: A Tag.
 |      :rtype: bs4.element.Tag
 |
 |  smooth(self)
 |      Smooth out this element's children by consolidating consecutive
 |      strings.
 |
 |      This makes pretty-printed output look more natural following a
 |      lot of operations that modified the tree.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from bs4.element.Tag:
 |
 |  children
 |      Iterate over all direct children of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  css
 |      Return an interface to the CSS selector API.
 |
 |  descendants
 |      Iterate over all children of this PageElement in a
 |      breadth-first sequence.
 |
 |      :yield: A sequence of PageElements.
 |
 |  isSelfClosing
 |      Is this tag an empty-element tag? (aka a self-closing tag)
 |
 |      A tag that has contents is never an empty-element tag.
 |
 |      A tag that has no contents may or may not be an empty-element
 |      tag. It depends on the builder used to create the tag. If the
 |      builder has a designated list of empty-element tags, then only
 |      a tag whose name shows up in that list is considered an
 |      empty-element tag.
 |
 |      If the builder has no designated list of empty-element tags,
 |      then any tag with no contents is an empty-element tag.
 |
 |  is_empty_element
 |      Is this tag an empty-element tag? (aka a self-closing tag)
 |
 |      A tag that has contents is never an empty-element tag.
 |
 |      A tag that has no contents may or may not be an empty-element
 |      tag. It depends on the builder used to create the tag. If the
 |      builder has a designated list of empty-element tags, then only
 |      a tag whose name shows up in that list is considered an
 |      empty-element tag.
 |
 |      If the builder has no designated list of empty-element tags,
 |      then any tag with no contents is an empty-element tag.
 |
 |  self_and_descendants
 |      Iterate over this PageElement and its children in a
 |      breadth-first sequence.
 |
 |      :yield: A sequence of PageElements.
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. Any strings of
 |          a subclass not found in this list will be ignored. By
 |          default, the subclasses considered are the ones found in
 |          self.interesting_string_types. If that's not specified,
 |          only NavigableString and CData objects will be
 |          considered. That means no comments, processing
 |          instructions, etc.
 |
 |      :yield: A sequence of strings.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from bs4.element.Tag:
 |
 |  parserClass
 |
 |  string
 |      Convenience property to get the single string within this
 |      PageElement.
 |
 |      TODO It might make sense to have NavigableString.string return
 |      itself.
 |
 |      :return: If this element has a single string child, return
 |       value is that string. If this element has one child tag,
 |       return value is the 'string' attribute of the child tag,
 |       recursively. If this element is itself a string, has no
 |       children, or has more than one child, return value is None.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from bs4.element.Tag:
 |
 |  DEFAULT_INTERESTING_STRING_TYPES = (<class 'bs4.element.NavigableStrin...
 |
 |  EMPTY_ELEMENT_EVENT = <object object>
 |
 |  END_ELEMENT_EVENT = <object object>
 |
 |  START_ELEMENT_EVENT = <object object>
 |
 |  STRING_ELEMENT_EVENT = <object object>
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from bs4.element.PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from bs4.element.PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from bs4.element.PageElement:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from bs4.element.PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.BeautifulStoneSoup
Python Library Documentation: class BeautifulStoneSoup in module bs4

class BeautifulStoneSoup(BeautifulSoup)
 |  BeautifulStoneSoup(*args, **kwargs)
 |
 |  Deprecated interface to an XML parser.
 |
 |  Method resolution order:
 |      BeautifulStoneSoup
 |      BeautifulSoup
 |      bs4.element.Tag
 |      bs4.element.PageElement
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __init__(self, *args, **kwargs)
 |      Constructor.
 |
 |      :param markup: A string or a file-like object representing
 |       markup to be parsed.
 |
 |      :param features: Desirable features of the parser to be
 |       used. This may be the name of a specific parser ("lxml",
 |       "lxml-xml", "html.parser", or "html5lib") or it may be the
 |       type of markup to be used ("html", "html5", "xml"). It's
 |       recommended that you name a specific parser, so that
 |       Beautiful Soup gives you the same results across platforms
 |       and virtual environments.
 |
 |      :param builder: A TreeBuilder subclass to instantiate (or
 |       instance to use) instead of looking one up based on
 |       `features`. You only need to use this if you've implemented a
 |       custom TreeBuilder.
 |
 |      :param parse_only: A SoupStrainer. Only parts of the document
 |       matching the SoupStrainer will be considered. This is useful
 |       when parsing part of a document that would otherwise be too
 |       large to fit into memory.
 |
 |      :param from_encoding: A string indicating the encoding of the
 |       document to be parsed. Pass this in if Beautiful Soup is
 |       guessing wrongly about the document's encoding.
 |
 |      :param exclude_encodings: A list of strings indicating
 |       encodings known to be wrong. Pass this in if you don't know
 |       the document's encoding but you know Beautiful Soup's guess is
 |       wrong.
 |
 |      :param element_classes: A dictionary mapping BeautifulSoup
 |       classes like Tag and NavigableString, to other classes you'd
 |       like to be instantiated instead as the parse tree is
 |       built. This is useful for subclassing Tag or NavigableString
 |       to modify default behavior.
 |
 |      :param kwargs: For backwards compatibility purposes, the
 |       constructor accepts certain keyword arguments used in
 |       Beautiful Soup 3. None of these arguments do anything in
 |       Beautiful Soup 4; they will result in a warning and then be
 |       ignored.
 |
 |       Apart from this, any keyword arguments passed into the
 |       BeautifulSoup constructor are propagated to the TreeBuilder
 |       constructor. This makes it possible to configure a
 |       TreeBuilder by passing in arguments, not just by saying which
 |       one to use.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from BeautifulSoup:
 |
 |  __getstate__(self)
 |      Helper for pickle.
 |
 |  __setstate__(self, state)
 |
 |  decode(self, pretty_print=False, eventual_encoding='utf-8', formatter='minimal', iterator=None)
 |      Returns a string or Unicode representation of the parse tree
 |          as an HTML or XML document.
 |
 |      :param pretty_print: If this is True, indentation will be used to
 |          make the document more readable.
 |      :param eventual_encoding: The encoding of the final document.
 |          If this is None, the document will be a Unicode string.
 |
 |  endData(self, containerClass=None)
 |      Method called by the TreeBuilder when the end of a data segment
 |      occurs.
 |
 |  handle_data(self, data)
 |      Called by the tree builder when a chunk of textual data is encountered.
 |
 |  handle_endtag(self, name, nsprefix=None)
 |      Called by the tree builder when an ending tag is encountered.
 |
 |      :param name: Name of the tag.
 |      :param nsprefix: Namespace prefix for the tag.
 |
 |  handle_starttag(self, name, namespace, nsprefix, attrs, sourceline=None, sourcepos=None, namespaces=None)
 |      Called by the tree builder when a new tag is encountered.
 |
 |      :param name: Name of the tag.
 |      :param nsprefix: Namespace prefix for the tag.
 |      :param attrs: A dictionary of attribute values.
 |      :param sourceline: The line number where this tag was found in its
 |          source document.
 |      :param sourcepos: The character position within `sourceline` where this
 |          tag was found.
 |      :param namespaces: A dictionary of all namespace prefix mappings
 |          currently in scope in the document.
 |
 |      If this method returns None, the tag was rejected by an active
 |      SoupStrainer. You should proceed as if the tag had not occurred
 |      in the document. For instance, if this was a self-closing tag,
 |      don't call handle_endtag.
 |
 |  insert_after(self, *args)
 |      This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
 |      it because there is nothing before or after it in the parse tree.
 |
 |  insert_before(self, *args)
 |      This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
 |      it because there is nothing before or after it in the parse tree.
 |
 |  new_string(self, s, subclass=None)
 |      Create a new NavigableString associated with this BeautifulSoup
 |      object.
 |
 |  new_tag(self, name, namespace=None, nsprefix=None, attrs={}, sourceline=None, sourcepos=None, **kwattrs)
 |      Create a new Tag associated with this BeautifulSoup object.
 |
 |      :param name: The name of the new Tag.
 |      :param namespace: The URI of the new Tag's XML namespace, if any.
 |      :param prefix: The prefix for the new Tag's XML namespace, if any.
 |      :param attrs: A dictionary of this Tag's attribute values; can
 |          be used instead of `kwattrs` for attributes like 'class'
 |          that are reserved words in Python.
 |      :param sourceline: The line number where this tag was
 |          (purportedly) found in its source document.
 |      :param sourcepos: The character position within `sourceline` where this
 |          tag was (purportedly) found.
 |      :param kwattrs: Keyword arguments for the new Tag's attribute values.
 |
 |  object_was_parsed(self, o, parent=None, most_recent_element=None)
 |      Method called by the TreeBuilder to integrate an object into the parse tree.
 |
 |  popTag(self)
 |      Internal method called by _popToTag when a tag is closed.
 |
 |  pushTag(self, tag)
 |      Internal method called by handle_starttag when a tag is opened.
 |
 |  reset(self)
 |      Reset this object to a state as though it had never parsed any
 |      markup.
 |
 |  string_container(self, base_class=None)
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from BeautifulSoup:
 |
 |  ASCII_SPACES = ' \n\t\x0c\r'
 |
 |  DEFAULT_BUILDER_FEATURES = ['html', 'fast']
 |
 |  NO_PARSER_SPECIFIED_WARNING = 'No parser was explicitly specified, so ...
 |
 |  ROOT_TAG_NAME = '[document]'
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from bs4.element.Tag:
 |
 |  __bool__(self)
 |      A tag is non-None even if it has no contents.
 |
 |  __call__(self, *args, **kwargs)
 |      Calling a Tag like a function is the same as calling its
 |      find_all() method. Eg. tag('a') returns a list of all the A tags
 |      found within this tag.
 |
 |  __contains__(self, x)
 |
 |  __copy__(self)
 |      A copy of a Tag must always be a deep copy, because a Tag's
 |      children can only have one parent at a time.
 |
 |  __deepcopy__(self, memo, recursive=True)
 |      A deepcopy of a Tag is a new Tag, unconnected to the parse tree.
 |      Its contents are a copy of the old Tag's contents.
 |
 |  __delitem__(self, key)
 |      Deleting tag[key] deletes all 'key' attributes for the tag.
 |
 |  __eq__(self, other)
 |      Returns true iff this Tag has the same name, the same attributes,
 |      and the same contents (recursively) as `other`.
 |
 |  __getattr__(self, tag)
 |      Calling tag.subtag is the same as calling tag.find(name="subtag")
 |
 |  __getitem__(self, key)
 |      tag[key] returns the value of the 'key' attribute for the Tag,
 |      and throws an exception if it's not there.
 |
 |  __hash__(self)
 |      Return hash(self).
 |
 |  __iter__(self)
 |      Iterating over a Tag iterates over its contents.
 |
 |  __len__(self)
 |      The length of a Tag is the length of its list of contents.
 |
 |  __ne__(self, other)
 |      Returns true iff this Tag is not identical to `other`,
 |      as defined in __eq__.
 |
 |  __repr__ = __unicode__(self)
 |
 |  __setitem__(self, key, value)
 |      Setting tag[key] sets the value of the 'key' attribute for the
 |      tag.
 |
 |  __str__ = __unicode__(self)
 |
 |  __unicode__(self)
 |      Renders this PageElement as a Unicode string.
 |
 |  childGenerator(self)
 |      Deprecated generator.
 |
 |  clear(self, decompose=False)
 |      Wipe out all children of this PageElement by calling extract()
 |         on them.
 |
 |      :param decompose: If this is True, decompose() (a more
 |          destructive method) will be called instead of extract().
 |
 |  decode_contents(self, indent_level=None, eventual_encoding='utf-8', formatter='minimal')
 |      Renders the contents of this tag as a Unicode string.
 |
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |
 |      :param eventual_encoding: The tag is destined to be
 |         encoded into this encoding. decode_contents() is _not_
 |         responsible for performing that encoding. This information
 |         is passed in so that it can be substituted in if the
 |         document contains a <META> tag that mentions the document's
 |         encoding.
 |
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard Formatters.
 |
 |  decompose(self)
 |      Recursively destroys this PageElement and its children.
 |
 |      This element will be removed from the tree and wiped out; so
 |      will everything beneath it.
 |
 |      The behavior of a decomposed PageElement is undefined and you
 |      should never use one for anything, but if you need to _check_
 |      whether an element has been decomposed, you can use the
 |      `decomposed` property.
 |
 |  encode(self, encoding='utf-8', indent_level=None, formatter='minimal', errors='xmlcharrefreplace')
 |      Render a bytestring representation of this PageElement and its
 |      contents.
 |
 |      :param encoding: The destination encoding.
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard formatters.
 |      :param errors: An error handling strategy such as
 |          'xmlcharrefreplace'. This value is passed along into
 |          encode() and its value should be one of the constants
 |          defined by Python.
 |      :return: A bytestring.
 |
 |  encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal')
 |      Renders the contents of this PageElement as a bytestring.
 |
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |
 |      :param eventual_encoding: The bytestring will be in this encoding.
 |
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard Formatters.
 |
 |      :return: A bytestring.
 |
 |  find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
 |      Look in the children of this PageElement and find the first
 |      PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param recursive: If this is True, find() will perform a
 |          recursive search of this PageElement's children. Otherwise,
 |          only the direct children will be considered.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  findAll = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |
 |  findChild = find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
 |
 |  findChildren = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |
 |  find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |      Look in the children of this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param recursive: If this is True, find_all() will perform a
 |          recursive search of this PageElement's children. Otherwise,
 |          only the direct children will be considered.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  get(self, key, default=None)
 |      Returns the value of the 'key' attribute for the tag, or
 |      the value given for 'default' if it doesn't have that
 |      attribute.
 |
 |  get_attribute_list(self, key, default=None)
 |      The same as get(), but always returns a list.
 |
 |      :param key: The attribute to look for.
 |      :param default: Use this value if the attribute is not present
 |          on this PageElement.
 |      :return: A list of values, probably containing only a single
 |          value.
 |
 |  has_attr(self, key)
 |      Does this PageElement have an attribute with the given name?
 |
 |  has_key(self, key)
 |      Deprecated method. This was kind of misleading because has_key()
 |      (attributes) was different from __in__ (contents).
 |
 |      has_key() is gone in Python 3, anyway.
 |
 |  index(self, element)
 |      Find the index of a child by identity, not value.
 |
 |      Avoids issues with tag.contents.index(element) getting the
 |      index of equal elements.
 |
 |      :param element: Look for this PageElement in `self.contents`.
 |
 |  prettify(self, encoding=None, formatter='minimal')
 |      Pretty-print this PageElement as a string.
 |
 |      :param encoding: The eventual encoding of the string. If this is None,
 |          a Unicode string will be returned.
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard formatters.
 |      :return: A Unicode string (if encoding==None) or a bytestring
 |          (otherwise).
 |
 |  recursiveChildGenerator(self)
 |      Deprecated generator.
 |
 |  renderContents(self, encoding='utf-8', prettyPrint=False, indentLevel=0)
 |      Deprecated method for BS3 compatibility.
 |
 |  select(self, selector, namespaces=None, limit=None, **kwargs)
 |      Perform a CSS selection operation on the current element.
 |
 |      This uses the SoupSieve library.
 |
 |      :param selector: A string containing a CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param limit: After finding this number of results, stop looking.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |         soupsieve.select() method.
 |
 |      :return: A ResultSet of Tags.
 |      :rtype: bs4.element.ResultSet
 |
 |  select_one(self, selector, namespaces=None, **kwargs)
 |      Perform a CSS selection operation on the current element.
 |
 |      :param selector: A CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param kwargs: Keyword arguments to be passed into Soup Sieve's
 |         soupsieve.select() method.
 |
 |      :return: A Tag.
 |      :rtype: bs4.element.Tag
 |
 |  smooth(self)
 |      Smooth out this element's children by consolidating consecutive
 |      strings.
 |
 |      This makes pretty-printed output look more natural following a
 |      lot of operations that modified the tree.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from bs4.element.Tag:
 |
 |  children
 |      Iterate over all direct children of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  css
 |      Return an interface to the CSS selector API.
 |
 |  descendants
 |      Iterate over all children of this PageElement in a
 |      breadth-first sequence.
 |
 |      :yield: A sequence of PageElements.
 |
 |  isSelfClosing
 |      Is this tag an empty-element tag? (aka a self-closing tag)
 |
 |      A tag that has contents is never an empty-element tag.
 |
 |      A tag that has no contents may or may not be an empty-element
 |      tag. It depends on the builder used to create the tag. If the
 |      builder has a designated list of empty-element tags, then only
 |      a tag whose name shows up in that list is considered an
 |      empty-element tag.
 |
 |      If the builder has no designated list of empty-element tags,
 |      then any tag with no contents is an empty-element tag.
 |
 |  is_empty_element
 |      Is this tag an empty-element tag? (aka a self-closing tag)
 |
 |      A tag that has contents is never an empty-element tag.
 |
 |      A tag that has no contents may or may not be an empty-element
 |      tag. It depends on the builder used to create the tag. If the
 |      builder has a designated list of empty-element tags, then only
 |      a tag whose name shows up in that list is considered an
 |      empty-element tag.
 |
 |      If the builder has no designated list of empty-element tags,
 |      then any tag with no contents is an empty-element tag.
 |
 |  self_and_descendants
 |      Iterate over this PageElement and its children in a
 |      breadth-first sequence.
 |
 |      :yield: A sequence of PageElements.
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. Any strings of
 |          a subclass not found in this list will be ignored. By
 |          default, the subclasses considered are the ones found in
 |          self.interesting_string_types. If that's not specified,
 |          only NavigableString and CData objects will be
 |          considered. That means no comments, processing
 |          instructions, etc.
 |
 |      :yield: A sequence of strings.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from bs4.element.Tag:
 |
 |  parserClass
 |
 |  string
 |      Convenience property to get the single string within this
 |      PageElement.
 |
 |      TODO It might make sense to have NavigableString.string return
 |      itself.
 |
 |      :return: If this element has a single string child, return
 |       value is that string. If this element has one child tag,
 |       return value is the 'string' attribute of the child tag,
 |       recursively. If this element is itself a string, has no
 |       children, or has more than one child, return value is None.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from bs4.element.Tag:
 |
 |  DEFAULT_INTERESTING_STRING_TYPES = (<class 'bs4.element.NavigableStrin...
 |
 |  EMPTY_ELEMENT_EVENT = <object object>
 |
 |  END_ELEMENT_EVENT = <object object>
 |
 |  START_ELEMENT_EVENT = <object object>
 |
 |  STRING_ELEMENT_EVENT = <object object>
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from bs4.element.PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from bs4.element.PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from bs4.element.PageElement:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from bs4.element.PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.CData
Python Library Documentation: class CData in module bs4.element

class CData(PreformattedString)
 |  CData(value)
 |
 |  A CDATA block.
 |
 |  Method resolution order:
 |      CData
 |      PreformattedString
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Data and other attributes defined here:
 |
 |  PREFIX = '<![CDATA['
 |
 |  SUFFIX = ']]>'
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PreformattedString:
 |
 |  output_ready(self, formatter=None)
 |      Make this string ready for output by adding any subclass-specific
 |          prefix or suffix.
 |
 |      :param formatter: A Formatter object, or a string naming one
 |          of the standard formatters. The string will be passed into the
 |          Formatter, but only to trigger any side effects: the return
 |          value is ignored.
 |
 |      :return: The string, with any subclass-specific prefix and
 |         suffix added on.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.CSS
Python Library Documentation: class CSS in module bs4.css

class CSS(builtins.object)
 |  CSS(tag, api=<module 'soupsieve' from 'C:\\Users\\Youse\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\soupsieve\\__init__.py'>)
 |
 |  A proxy object against the soupsieve library, to simplify its
 |  CSS selector API.
 |
 |  Acquire this object through the .css attribute on the
 |  BeautifulSoup object, or on the Tag you want to use as the
 |  starting point for a CSS selector.
 |
 |  The main advantage of doing this is that the tag to be selected
 |  against doesn't need to be explicitly specified in the function
 |  calls, since it's already scoped to a tag.
 |
 |  Methods defined here:
 |
 |  __init__(self, tag, api=<module 'soupsieve' from 'C:\\Users\\Youse\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\soupsieve\\__init__.py'>)
 |      Constructor.
 |
 |      You don't need to instantiate this class yourself; instead,
 |      access the .css attribute on the BeautifulSoup object, or on
 |      the Tag you want to use as the starting point for your CSS
 |      selector.
 |
 |      :param tag: All CSS selectors will use this as their starting
 |      point.
 |
 |      :param api: A plug-in replacement for the soupsieve module,
 |      designed mainly for use in tests.
 |
 |  closest(self, select, namespaces=None, flags=0, **kwargs)
 |      Find the Tag closest to this one that matches the given selector.
 |
 |      This uses the Soup Sieve library. For more information, see
 |      that library's documentation for the soupsieve.closest()
 |      method.
 |
 |      :param selector: A string containing a CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |          used in the CSS selector to namespace URIs. By default,
 |          Beautiful Soup will pass in the prefixes it encountered while
 |          parsing the document.
 |
 |      :param flags: Flags to be passed into Soup Sieve's
 |          soupsieve.closest() method.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |          soupsieve.closest() method.
 |
 |      :return: A Tag, or None if there is no match.
 |      :rtype: bs4.Tag
 |
 |  compile(self, select, namespaces=None, flags=0, **kwargs)
 |      Pre-compile a selector and return the compiled object.
 |
 |      :param selector: A CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param flags: Flags to be passed into Soup Sieve's
 |          soupsieve.compile() method.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |         soupsieve.compile() method.
 |
 |      :return: A precompiled selector object.
 |      :rtype: soupsieve.SoupSieve
 |
 |  escape(self, ident)
 |      Escape a CSS identifier.
 |
 |      This is a simple wrapper around soupselect.escape(). See the
 |      documentation for that function for more information.
 |
 |  filter(self, select, namespaces=None, flags=0, **kwargs)
 |      Filter this Tag's direct children based on the given CSS selector.
 |
 |      This uses the Soup Sieve library. It works the same way as
 |      passing this Tag into that library's soupsieve.filter()
 |      method. More information, for more information see the
 |      documentation for soupsieve.filter().
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |          used in the CSS selector to namespace URIs. By default,
 |          Beautiful Soup will pass in the prefixes it encountered while
 |          parsing the document.
 |
 |      :param flags: Flags to be passed into Soup Sieve's
 |          soupsieve.filter() method.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |          soupsieve.filter() method.
 |
 |      :return: A ResultSet of Tag objects.
 |      :rtype: bs4.element.ResultSet
 |
 |  iselect(self, select, namespaces=None, limit=0, flags=0, **kwargs)
 |      Perform a CSS selection operation on the current Tag.
 |
 |      This uses the Soup Sieve library. For more information, see
 |      that library's documentation for the soupsieve.iselect()
 |      method. It is the same as select(), but it returns a generator
 |      instead of a list.
 |
 |      :param selector: A string containing a CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |          used in the CSS selector to namespace URIs. By default,
 |          Beautiful Soup will pass in the prefixes it encountered while
 |          parsing the document.
 |
 |      :param limit: After finding this number of results, stop looking.
 |
 |      :param flags: Flags to be passed into Soup Sieve's
 |          soupsieve.iselect() method.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |          soupsieve.iselect() method.
 |
 |      :return: A generator
 |      :rtype: types.GeneratorType
 |
 |  match(self, select, namespaces=None, flags=0, **kwargs)
 |      Check whether this Tag matches the given CSS selector.
 |
 |      This uses the Soup Sieve library. For more information, see
 |      that library's documentation for the soupsieve.match()
 |      method.
 |
 |      :param: a CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |          used in the CSS selector to namespace URIs. By default,
 |          Beautiful Soup will pass in the prefixes it encountered while
 |          parsing the document.
 |
 |      :param flags: Flags to be passed into Soup Sieve's
 |          soupsieve.match() method.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |          soupsieve.match() method.
 |
 |      :return: True if this Tag matches the selector; False otherwise.
 |      :rtype: bool
 |
 |  select(self, select, namespaces=None, limit=0, flags=0, **kwargs)
 |      Perform a CSS selection operation on the current Tag.
 |
 |      This uses the Soup Sieve library. For more information, see
 |      that library's documentation for the soupsieve.select()
 |      method.
 |
 |      :param selector: A string containing a CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |          used in the CSS selector to namespace URIs. By default,
 |          Beautiful Soup will pass in the prefixes it encountered while
 |          parsing the document.
 |
 |      :param limit: After finding this number of results, stop looking.
 |
 |      :param flags: Flags to be passed into Soup Sieve's
 |          soupsieve.select() method.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |          soupsieve.select() method.
 |
 |      :return: A ResultSet of Tag objects.
 |      :rtype: bs4.element.ResultSet
 |
 |  select_one(self, select, namespaces=None, flags=0, **kwargs)
 |      Perform a CSS selection operation on the current Tag and return the
 |      first result.
 |
 |      This uses the Soup Sieve library. For more information, see
 |      that library's documentation for the soupsieve.select_one()
 |      method.
 |
 |      :param selector: A CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param flags: Flags to be passed into Soup Sieve's
 |          soupsieve.select_one() method.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |         soupsieve.select_one() method.
 |
 |      :return: A Tag, or None if the selector has no match.
 |      :rtype: bs4.element.Tag
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
beautifulsoup4.Comment
Python Library Documentation: class Comment in module bs4.element

class Comment(PreformattedString)
 |  Comment(value)
 |
 |  An HTML or XML comment.
 |
 |  Method resolution order:
 |      Comment
 |      PreformattedString
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Data and other attributes defined here:
 |
 |  PREFIX = '<!--'
 |
 |  SUFFIX = '-->'
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PreformattedString:
 |
 |  output_ready(self, formatter=None)
 |      Make this string ready for output by adding any subclass-specific
 |          prefix or suffix.
 |
 |      :param formatter: A Formatter object, or a string naming one
 |          of the standard formatters. The string will be passed into the
 |          Formatter, but only to trigger any side effects: the return
 |          value is ignored.
 |
 |      :return: The string, with any subclass-specific prefix and
 |         suffix added on.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.Counter
Python Library Documentation: class Counter in module collections

class Counter(builtins.dict)
 |  Counter(iterable=None, /, **kwds)
 |
 |  Dict subclass for counting hashable items.  Sometimes called a bag
 |  or multiset.  Elements are stored as dictionary keys and their counts
 |  are stored as dictionary values.
 |
 |  >>> c = Counter('abcdeabcdabcaba')  # count elements from a string
 |
 |  >>> c.most_common(3)                # three most common elements
 |  [('a', 5), ('b', 4), ('c', 3)]
 |  >>> sorted(c)                       # list all unique elements
 |  ['a', 'b', 'c', 'd', 'e']
 |  >>> ''.join(sorted(c.elements()))   # list elements with repetitions
 |  'aaaaabbbbcccdde'
 |  >>> sum(c.values())                 # total of all counts
 |  15
 |
 |  >>> c['a']                          # count of letter 'a'
 |  5
 |  >>> for elem in 'shazam':           # update counts from an iterable
 |  ...     c[elem] += 1                # by adding 1 to each element's count
 |  >>> c['a']                          # now there are seven 'a'
 |  7
 |  >>> del c['b']                      # remove all 'b'
 |  >>> c['b']                          # now there are zero 'b'
 |  0
 |
 |  >>> d = Counter('simsalabim')       # make another counter
 |  >>> c.update(d)                     # add in the second counter
 |  >>> c['a']                          # now there are nine 'a'
 |  9
 |
 |  >>> c.clear()                       # empty the counter
 |  >>> c
 |  Counter()
 |
 |  Note:  If a count is set to zero or reduced to zero, it will remain
 |  in the counter until the entry is deleted or the counter is cleared:
 |
 |  >>> c = Counter('aaabbc')
 |  >>> c['b'] -= 2                     # reduce the count of 'b' by two
 |  >>> c.most_common()                 # 'b' is still in, but its count is zero
 |  [('a', 3), ('c', 1), ('b', 0)]
 |
 |  Method resolution order:
 |      Counter
 |      builtins.dict
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __add__(self, other)
 |      Add counts from two counters.
 |
 |      >>> Counter('abbb') + Counter('bcc')
 |      Counter({'b': 4, 'c': 2, 'a': 1})
 |
 |  __and__(self, other)
 |      Intersection is the minimum of corresponding counts.
 |
 |      >>> Counter('abbb') & Counter('bcc')
 |      Counter({'b': 1})
 |
 |  __delitem__(self, elem)
 |      Like dict.__delitem__() but does not raise KeyError for missing values.
 |
 |  __eq__(self, other)
 |      True if all counts agree. Missing counts are treated as zero.
 |
 |  __ge__(self, other)
 |      True if all counts in self are a superset of those in other.
 |
 |  __gt__(self, other)
 |      True if all counts in self are a proper superset of those in other.
 |
 |  __iadd__(self, other)
 |      Inplace add from another counter, keeping only positive counts.
 |
 |      >>> c = Counter('abbb')
 |      >>> c += Counter('bcc')
 |      >>> c
 |      Counter({'b': 4, 'c': 2, 'a': 1})
 |
 |  __iand__(self, other)
 |      Inplace intersection is the minimum of corresponding counts.
 |
 |      >>> c = Counter('abbb')
 |      >>> c &= Counter('bcc')
 |      >>> c
 |      Counter({'b': 1})
 |
 |  __init__(self, iterable=None, /, **kwds)
 |      Create a new, empty Counter object.  And if given, count elements
 |      from an input iterable.  Or, initialize the count from another mapping
 |      of elements to their counts.
 |
 |      >>> c = Counter()                           # a new, empty counter
 |      >>> c = Counter('gallahad')                 # a new counter from an iterable
 |      >>> c = Counter({'a': 4, 'b': 2})           # a new counter from a mapping
 |      >>> c = Counter(a=4, b=2)                   # a new counter from keyword args
 |
 |  __ior__(self, other)
 |      Inplace union is the maximum of value from either counter.
 |
 |      >>> c = Counter('abbb')
 |      >>> c |= Counter('bcc')
 |      >>> c
 |      Counter({'b': 3, 'c': 2, 'a': 1})
 |
 |  __isub__(self, other)
 |      Inplace subtract counter, but keep only results with positive counts.
 |
 |      >>> c = Counter('abbbc')
 |      >>> c -= Counter('bccd')
 |      >>> c
 |      Counter({'b': 2, 'a': 1})
 |
 |  __le__(self, other)
 |      True if all counts in self are a subset of those in other.
 |
 |  __lt__(self, other)
 |      True if all counts in self are a proper subset of those in other.
 |
 |  __missing__(self, key)
 |      The count of elements not in the Counter is zero.
 |
 |  __ne__(self, other)
 |      True if any counts disagree. Missing counts are treated as zero.
 |
 |  __neg__(self)
 |      Subtracts from an empty counter.  Strips positive and zero counts,
 |      and flips the sign on negative counts.
 |
 |  __or__(self, other)
 |      Union is the maximum of value in either of the input counters.
 |
 |      >>> Counter('abbb') | Counter('bcc')
 |      Counter({'b': 3, 'c': 2, 'a': 1})
 |
 |  __pos__(self)
 |      Adds an empty counter, effectively stripping negative and zero counts
 |
 |  __reduce__(self)
 |      Helper for pickle.
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  __sub__(self, other)
 |      Subtract count, but keep only results with positive counts.
 |
 |      >>> Counter('abbbc') - Counter('bccd')
 |      Counter({'b': 2, 'a': 1})
 |
 |  copy(self)
 |      Return a shallow copy.
 |
 |  elements(self)
 |      Iterator over elements repeating each as many times as its count.
 |
 |      >>> c = Counter('ABCABC')
 |      >>> sorted(c.elements())
 |      ['A', 'A', 'B', 'B', 'C', 'C']
 |
 |      Knuth's example for prime factors of 1836:  2**2 * 3**3 * 17**1
 |
 |      >>> import math
 |      >>> prime_factors = Counter({2: 2, 3: 3, 17: 1})
 |      >>> math.prod(prime_factors.elements())
 |      1836
 |
 |      Note, if an element's count has been set to zero or is a negative
 |      number, elements() will ignore it.
 |
 |  most_common(self, n=None)
 |      List the n most common elements and their counts from the most
 |      common to the least.  If n is None, then list all element counts.
 |
 |      >>> Counter('abracadabra').most_common(3)
 |      [('a', 5), ('b', 2), ('r', 2)]
 |
 |  subtract(self, iterable=None, /, **kwds)
 |      Like dict.update() but subtracts counts instead of replacing them.
 |      Counts can be reduced below zero.  Both the inputs and outputs are
 |      allowed to contain zero and negative counts.
 |
 |      Source can be an iterable, a dictionary, or another Counter instance.
 |
 |      >>> c = Counter('which')
 |      >>> c.subtract('witch')             # subtract elements from another iterable
 |      >>> c.subtract(Counter('watch'))    # subtract elements from another counter
 |      >>> c['h']                          # 2 in which, minus 1 in witch, minus 1 in watch
 |      0
 |      >>> c['w']                          # 1 in which, minus 1 in witch, minus 1 in watch
 |      -1
 |
 |  total(self)
 |      Sum of the counts
 |
 |  update(self, iterable=None, /, **kwds)
 |      Like dict.update() but add counts instead of replacing them.
 |
 |      Source can be an iterable, a dictionary, or another Counter instance.
 |
 |      >>> c = Counter('which')
 |      >>> c.update('witch')           # add elements from another iterable
 |      >>> d = Counter('watch')
 |      >>> c.update(d)                 # add elements from another counter
 |      >>> c['h']                      # four 'h' in which, witch, and watch
 |      4
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  fromkeys(iterable, v=None)
 |      Create a new dictionary with keys from iterable and values set to value.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  __hash__ = None
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.dict:
 |
 |  __contains__(self, key, /)
 |      True if the dictionary has the specified key, else False.
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __reversed__(self, /)
 |      Return a reverse iterator over the dict keys.
 |
 |  __ror__(self, value, /)
 |      Return value|self.
 |
 |  __setitem__(self, key, value, /)
 |      Set self[key] to value.
 |
 |  __sizeof__(...)
 |      D.__sizeof__() -> size of D in memory, in bytes
 |
 |  clear(...)
 |      D.clear() -> None.  Remove all items from D.
 |
 |  get(self, key, default=None, /)
 |      Return the value for key if key is in the dictionary, else default.
 |
 |  items(...)
 |      D.items() -> a set-like object providing a view on D's items
 |
 |  keys(...)
 |      D.keys() -> a set-like object providing a view on D's keys
 |
 |  pop(...)
 |      D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
 |
 |      If the key is not found, return the default if given; otherwise,
 |      raise a KeyError.
 |
 |  popitem(self, /)
 |      Remove and return a (key, value) pair as a 2-tuple.
 |
 |      Pairs are returned in LIFO (last-in, first-out) order.
 |      Raises KeyError if the dict is empty.
 |
 |  setdefault(self, key, default=None, /)
 |      Insert key with a value of default if key is not in the dictionary.
 |
 |      Return the value for key if key is in the dictionary, else default.
 |
 |  values(...)
 |      D.values() -> an object providing a view on D's values
 |
 |  ----------------------------------------------------------------------
 |  Class methods inherited from builtins.dict:
 |
 |  __class_getitem__(...)
 |      See PEP 585
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.dict:
 |
 |  __new__(*args, **kwargs) class method of builtins.dict
 |      Create and return a new object.  See help(type) for accurate signature.
beautifulsoup4.DEFAULT_OUTPUT_ENCODING
Error rendering doc: No Python documentation found for 'utf-8'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.
beautifulsoup4.Declaration
Python Library Documentation: class Declaration in module bs4.element

class Declaration(PreformattedString)
 |  Declaration(value)
 |
 |  An XML declaration.
 |
 |  Method resolution order:
 |      Declaration
 |      PreformattedString
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Data and other attributes defined here:
 |
 |  PREFIX = '<?'
 |
 |  SUFFIX = '?>'
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PreformattedString:
 |
 |  output_ready(self, formatter=None)
 |      Make this string ready for output by adding any subclass-specific
 |          prefix or suffix.
 |
 |      :param formatter: A Formatter object, or a string naming one
 |          of the standard formatters. The string will be passed into the
 |          Formatter, but only to trigger any side effects: the return
 |          value is ignored.
 |
 |      :return: The string, with any subclass-specific prefix and
 |         suffix added on.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.Doctype
Python Library Documentation: class Doctype in module bs4.element

class Doctype(PreformattedString)
 |  Doctype(value)
 |
 |  A document type declaration.
 |
 |  Method resolution order:
 |      Doctype
 |      PreformattedString
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Class methods defined here:
 |
 |  for_name_and_ids(name, pub_id, system_id)
 |      Generate an appropriate document type declaration for a given
 |      public ID and system ID.
 |
 |      :param name: The name of the document's root element, e.g. 'html'.
 |      :param pub_id: The Formal Public Identifier for this document type,
 |          e.g. '-//W3C//DTD XHTML 1.1//EN'
 |      :param system_id: The system identifier for this document type,
 |          e.g. 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'
 |
 |      :return: A Doctype.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  PREFIX = '<!DOCTYPE '
 |
 |  SUFFIX = '>\n'
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PreformattedString:
 |
 |  output_ready(self, formatter=None)
 |      Make this string ready for output by adding any subclass-specific
 |          prefix or suffix.
 |
 |      :param formatter: A Formatter object, or a string naming one
 |          of the standard formatters. The string will be passed into the
 |          Formatter, but only to trigger any side effects: the return
 |          value is ignored.
 |
 |      :return: The string, with any subclass-specific prefix and
 |         suffix added on.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.FeatureNotFound
Python Library Documentation: class FeatureNotFound in module bs4

class FeatureNotFound(builtins.ValueError)
 |  Exception raised by the BeautifulSoup constructor if no parser with the
 |  requested features is found.
 |
 |  Method resolution order:
 |      FeatureNotFound
 |      builtins.ValueError
 |      builtins.Exception
 |      builtins.BaseException
 |      builtins.object
 |
 |  Data descriptors defined here:
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.ValueError:
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.ValueError:
 |
 |  __new__(*args, **kwargs) class method of builtins.ValueError
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.BaseException:
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __reduce__(...)
 |      Helper for pickle.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __setstate__(...)
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  add_note(...)
 |      Exception.add_note(note) --
 |      add a note to the exception
 |
 |  with_traceback(...)
 |      Exception.with_traceback(tb) --
 |      set self.__traceback__ to tb and return self.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from builtins.BaseException:
 |
 |  __cause__
 |      exception cause
 |
 |  __context__
 |      exception context
 |
 |  __dict__
 |
 |  __suppress_context__
 |
 |  __traceback__
 |
 |  args
beautifulsoup4.GuessedAtParserWarning
Python Library Documentation: class GuessedAtParserWarning in module bs4

class GuessedAtParserWarning(builtins.UserWarning)
 |  The warning issued when BeautifulSoup has to guess what parser to
 |  use -- probably because no parser was specified in the constructor.
 |
 |  Method resolution order:
 |      GuessedAtParserWarning
 |      builtins.UserWarning
 |      builtins.Warning
 |      builtins.Exception
 |      builtins.BaseException
 |      builtins.object
 |
 |  Data descriptors defined here:
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.UserWarning:
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.UserWarning:
 |
 |  __new__(*args, **kwargs) class method of builtins.UserWarning
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.BaseException:
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __reduce__(...)
 |      Helper for pickle.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __setstate__(...)
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  add_note(...)
 |      Exception.add_note(note) --
 |      add a note to the exception
 |
 |  with_traceback(...)
 |      Exception.with_traceback(tb) --
 |      set self.__traceback__ to tb and return self.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from builtins.BaseException:
 |
 |  __cause__
 |      exception cause
 |
 |  __context__
 |      exception context
 |
 |  __dict__
 |
 |  __suppress_context__
 |
 |  __traceback__
 |
 |  args
beautifulsoup4.HTMLParserTreeBuilder
Python Library Documentation: class HTMLParserTreeBuilder in module bs4.builder._htmlparser

class HTMLParserTreeBuilder(bs4.builder.HTMLTreeBuilder)
 |  HTMLParserTreeBuilder(parser_args=None, parser_kwargs=None, **kwargs)
 |
 |  A Beautiful soup `TreeBuilder` that uses the `HTMLParser` parser,
 |  found in the Python standard library.
 |
 |  Method resolution order:
 |      HTMLParserTreeBuilder
 |      bs4.builder.HTMLTreeBuilder
 |      bs4.builder.TreeBuilder
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __init__(self, parser_args=None, parser_kwargs=None, **kwargs)
 |      Constructor.
 |
 |      :param parser_args: Positional arguments to pass into
 |          the BeautifulSoupHTMLParser constructor, once it's
 |          invoked.
 |      :param parser_kwargs: Keyword arguments to pass into
 |          the BeautifulSoupHTMLParser constructor, once it's
 |          invoked.
 |      :param kwargs: Keyword arguments for the superclass constructor.
 |
 |  feed(self, markup)
 |      Run some incoming markup through some parsing process,
 |      populating the `BeautifulSoup` object in self.soup.
 |
 |  prepare_markup(self, markup, user_specified_encoding=None, document_declared_encoding=None, exclude_encodings=None)
 |      Run any preliminary steps necessary to make incoming markup
 |      acceptable to the parser.
 |
 |      :param markup: Some markup -- probably a bytestring.
 |      :param user_specified_encoding: The user asked to try this encoding.
 |      :param document_declared_encoding: The markup itself claims to be
 |          in this encoding.
 |      :param exclude_encodings: The user asked _not_ to try any of
 |          these encodings.
 |
 |      :yield: A series of 4-tuples:
 |       (markup, encoding, declared encoding,
 |        has undergone character replacement)
 |
 |       Each 4-tuple represents a strategy for converting the
 |       document to Unicode and parsing it. Each strategy will be tried
 |       in turn.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  NAME = 'html.parser'
 |
 |  TRACKS_LINE_NUMBERS = True
 |
 |  features = ['html.parser', 'html', 'strict']
 |
 |  is_xml = False
 |
 |  picklable = True
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from bs4.builder.HTMLTreeBuilder:
 |
 |  set_up_substitutions(self, tag)
 |      Replace the declared encoding in a <meta> tag with a placeholder,
 |      to be substituted when the tag is output to a string.
 |
 |      An HTML document may come in to Beautiful Soup as one
 |      encoding, but exit in a different encoding, and the <meta> tag
 |      needs to be changed to reflect this.
 |
 |      :param tag: A `Tag`
 |      :return: Whether or not a substitution was performed.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from bs4.builder.HTMLTreeBuilder:
 |
 |  DEFAULT_CDATA_LIST_ATTRIBUTES = {'*': ['class', 'accesskey', 'dropzone...
 |
 |  DEFAULT_PRESERVE_WHITESPACE_TAGS = {'pre', 'textarea'}
 |
 |  DEFAULT_STRING_CONTAINERS = {'rp': <class 'bs4.element.RubyParenthesis...
 |
 |  block_elements = {'address', 'article', 'aside', 'blockquote', 'canvas...
 |
 |  empty_element_tags = {'area', 'base', 'basefont', 'bgsound', 'br', 'co...
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from bs4.builder.TreeBuilder:
 |
 |  can_be_empty_element(self, tag_name)
 |      Might a tag with this name be an empty-element tag?
 |
 |      The final markup may or may not actually present this tag as
 |      self-closing.
 |
 |      For instance: an HTMLBuilder does not consider a <p> tag to be
 |      an empty-element tag (it's not in
 |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
 |      will be presented as "<p></p>", not "<p/>" or "<p>".
 |
 |      The default implementation has no opinion about which tags are
 |      empty-element tags, so a tag will be presented as an
 |      empty-element tag if and only if it has no children.
 |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
 |      be left alone.
 |
 |      :param tag_name: The name of a markup tag.
 |
 |  initialize_soup(self, soup)
 |      The BeautifulSoup object has been initialized and is now
 |      being associated with the TreeBuilder.
 |
 |      :param soup: A BeautifulSoup object.
 |
 |  reset(self)
 |      Do any work necessary to reset the underlying parser
 |      for a new document.
 |
 |      By default, this does nothing.
 |
 |  test_fragment_to_document(self, fragment)
 |      Wrap an HTML fragment to make it look like a document.
 |
 |      Different parsers do this differently. For instance, lxml
 |      introduces an empty <head> tag, and html5lib
 |      doesn't. Abstracting this away lets us write simple tests
 |      which run HTML fragments through the parser and compare the
 |      results against other HTML fragments.
 |
 |      This method should not be used outside of tests.
 |
 |      :param fragment: A string -- fragment of HTML.
 |      :return: A string -- a full HTML document.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from bs4.builder.TreeBuilder:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from bs4.builder.TreeBuilder:
 |
 |  ALTERNATE_NAMES = []
 |
 |  USE_DEFAULT = <object object>
beautifulsoup4.MarkupResemblesLocatorWarning
Python Library Documentation: class MarkupResemblesLocatorWarning in module bs4

class MarkupResemblesLocatorWarning(builtins.UserWarning)
 |  The warning issued when BeautifulSoup is given 'markup' that
 |  actually looks like a resource locator -- a URL or a path to a file
 |  on disk.
 |
 |  Method resolution order:
 |      MarkupResemblesLocatorWarning
 |      builtins.UserWarning
 |      builtins.Warning
 |      builtins.Exception
 |      builtins.BaseException
 |      builtins.object
 |
 |  Data descriptors defined here:
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.UserWarning:
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.UserWarning:
 |
 |  __new__(*args, **kwargs) class method of builtins.UserWarning
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.BaseException:
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __reduce__(...)
 |      Helper for pickle.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __setstate__(...)
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  add_note(...)
 |      Exception.add_note(note) --
 |      add a note to the exception
 |
 |  with_traceback(...)
 |      Exception.with_traceback(tb) --
 |      set self.__traceback__ to tb and return self.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from builtins.BaseException:
 |
 |  __cause__
 |      exception cause
 |
 |  __context__
 |      exception context
 |
 |  __dict__
 |
 |  __suppress_context__
 |
 |  __traceback__
 |
 |  args
beautifulsoup4.NavigableString
Python Library Documentation: class NavigableString in module bs4.element

class NavigableString(builtins.str, PageElement)
 |  NavigableString(value)
 |
 |  A Python Unicode string that is part of a parse tree.
 |
 |  When Beautiful Soup parses the markup <b>penguin</b>, it will
 |  create a NavigableString for the string "penguin".
 |
 |  Method resolution order:
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  output_ready(self, formatter='minimal')
 |      Run the string through the provided formatter.
 |
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  PREFIX = ''
 |
 |  SUFFIX = ''
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.PYTHON_SPECIFIC_ENCODINGS
Python Library Documentation: set object

class set(object)
 |  set() -> new empty set object
 |  set(iterable) -> new set object
 |
 |  Build an unordered collection of unique elements.
 |
 |  Methods defined here:
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __contains__(...)
 |      x.__contains__(y) <==> y in x.
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __iand__(self, value, /)
 |      Return self&=value.
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __ior__(self, value, /)
 |      Return self|=value.
 |
 |  __isub__(self, value, /)
 |      Return self-=value.
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __ixor__(self, value, /)
 |      Return self^=value.
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __or__(self, value, /)
 |      Return self|value.
 |
 |  __rand__(self, value, /)
 |      Return value&self.
 |
 |  __reduce__(...)
 |      Return state information for pickling.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __ror__(self, value, /)
 |      Return value|self.
 |
 |  __rsub__(self, value, /)
 |      Return value-self.
 |
 |  __rxor__(self, value, /)
 |      Return value^self.
 |
 |  __sizeof__(...)
 |      S.__sizeof__() -> size of S in memory, in bytes
 |
 |  __sub__(self, value, /)
 |      Return self-value.
 |
 |  __xor__(self, value, /)
 |      Return self^value.
 |
 |  add(...)
 |      Add an element to a set.
 |
 |      This has no effect if the element is already present.
 |
 |  clear(...)
 |      Remove all elements from this set.
 |
 |  copy(...)
 |      Return a shallow copy of a set.
 |
 |  difference(...)
 |      Return the difference of two or more sets as a new set.
 |
 |      (i.e. all elements that are in this set but not the others.)
 |
 |  difference_update(...)
 |      Remove all elements of another set from this set.
 |
 |  discard(...)
 |      Remove an element from a set if it is a member.
 |
 |      Unlike set.remove(), the discard() method does not raise
 |      an exception when an element is missing from the set.
 |
 |  intersection(...)
 |      Return the intersection of two sets as a new set.
 |
 |      (i.e. all elements that are in both sets.)
 |
 |  intersection_update(...)
 |      Update a set with the intersection of itself and another.
 |
 |  isdisjoint(...)
 |      Return True if two sets have a null intersection.
 |
 |  issubset(self, other, /)
 |      Test whether every element in the set is in other.
 |
 |  issuperset(self, other, /)
 |      Test whether every element in other is in the set.
 |
 |  pop(...)
 |      Remove and return an arbitrary set element.
 |      Raises KeyError if the set is empty.
 |
 |  remove(...)
 |      Remove an element from a set; it must be a member.
 |
 |      If the element is not a member, raise a KeyError.
 |
 |  symmetric_difference(...)
 |      Return the symmetric difference of two sets as a new set.
 |
 |      (i.e. all elements that are in exactly one of the sets.)
 |
 |  symmetric_difference_update(...)
 |      Update a set with the symmetric difference of itself and another.
 |
 |  union(...)
 |      Return the union of sets as a new set.
 |
 |      (i.e. all elements that are in either set.)
 |
 |  update(...)
 |      Update a set with the union of itself and others.
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  __class_getitem__(...)
 |      See PEP 585
 |
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |
 |  __new__(*args, **kwargs)
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  __hash__ = None
beautifulsoup4.PageElement
Python Library Documentation: class PageElement in module bs4.element

class PageElement(builtins.object)
 |  Contains the navigational information for some part of the page:
 |  that is, its current location in the parse tree.
 |
 |  NavigableString, Tag, etc. are all subclasses of PageElement.
 |
 |  Methods defined here:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.ParserRejectedMarkup
Python Library Documentation: class ParserRejectedMarkup in module bs4.builder

class ParserRejectedMarkup(builtins.Exception)
 |  ParserRejectedMarkup(message_or_exception)
 |
 |  An Exception to be raised when the underlying parser simply
 |  refuses to parse the given markup.
 |
 |  Method resolution order:
 |      ParserRejectedMarkup
 |      builtins.Exception
 |      builtins.BaseException
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __init__(self, message_or_exception)
 |      Explain why the parser rejected the given markup, either
 |      with a textual explanation or another exception.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.Exception:
 |
 |  __new__(*args, **kwargs) class method of builtins.Exception
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.BaseException:
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __reduce__(...)
 |      Helper for pickle.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __setstate__(...)
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  add_note(...)
 |      Exception.add_note(note) --
 |      add a note to the exception
 |
 |  with_traceback(...)
 |      Exception.with_traceback(tb) --
 |      set self.__traceback__ to tb and return self.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from builtins.BaseException:
 |
 |  __cause__
 |      exception cause
 |
 |  __context__
 |      exception context
 |
 |  __dict__
 |
 |  __suppress_context__
 |
 |  __traceback__
 |
 |  args
beautifulsoup4.ProcessingInstruction
Python Library Documentation: class ProcessingInstruction in module bs4.element

class ProcessingInstruction(PreformattedString)
 |  ProcessingInstruction(value)
 |
 |  A SGML processing instruction.
 |
 |  Method resolution order:
 |      ProcessingInstruction
 |      PreformattedString
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Data and other attributes defined here:
 |
 |  PREFIX = '<?'
 |
 |  SUFFIX = '>'
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PreformattedString:
 |
 |  output_ready(self, formatter=None)
 |      Make this string ready for output by adding any subclass-specific
 |          prefix or suffix.
 |
 |      :param formatter: A Formatter object, or a string naming one
 |          of the standard formatters. The string will be passed into the
 |          Formatter, but only to trigger any side effects: the return
 |          value is ignored.
 |
 |      :return: The string, with any subclass-specific prefix and
 |         suffix added on.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.ResultSet
Python Library Documentation: class ResultSet in module bs4.element

class ResultSet(builtins.list)
 |  ResultSet(source, result=())
 |
 |  A ResultSet is just a list that keeps track of the SoupStrainer
 |  that created it.
 |
 |  Method resolution order:
 |      ResultSet
 |      builtins.list
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __getattr__(self, key)
 |      Raise a helpful exception to explain a common code fix.
 |
 |  __init__(self, source, result=())
 |      Constructor.
 |
 |      :param source: A SoupStrainer.
 |      :param result: A list of PageElements.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.list:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __delitem__(self, key, /)
 |      Delete self[key].
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __getitem__(self, index, /)
 |      Return self[index].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __iadd__(self, value, /)
 |      Implement self+=value.
 |
 |  __imul__(self, value, /)
 |      Implement self*=value.
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __reversed__(self, /)
 |      Return a reverse iterator over the list.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __setitem__(self, key, value, /)
 |      Set self[key] to value.
 |
 |  __sizeof__(self, /)
 |      Return the size of the list in memory, in bytes.
 |
 |  append(self, object, /)
 |      Append object to the end of the list.
 |
 |  clear(self, /)
 |      Remove all items from list.
 |
 |  copy(self, /)
 |      Return a shallow copy of the list.
 |
 |  count(self, value, /)
 |      Return number of occurrences of value.
 |
 |  extend(self, iterable, /)
 |      Extend list by appending elements from the iterable.
 |
 |  index(self, value, start=0, stop=9223372036854775807, /)
 |      Return first index of value.
 |
 |      Raises ValueError if the value is not present.
 |
 |  insert(self, index, object, /)
 |      Insert object before index.
 |
 |  pop(self, index=-1, /)
 |      Remove and return item at index (default last).
 |
 |      Raises IndexError if list is empty or index is out of range.
 |
 |  remove(self, value, /)
 |      Remove first occurrence of value.
 |
 |      Raises ValueError if the value is not present.
 |
 |  reverse(self, /)
 |      Reverse *IN PLACE*.
 |
 |  sort(self, /, *, key=None, reverse=False)
 |      Sort the list in ascending order and return None.
 |
 |      The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
 |      order of two equal elements is maintained).
 |
 |      If a key function is given, apply it once to each list item and sort them,
 |      ascending or descending, according to their function values.
 |
 |      The reverse flag can be set to sort in descending order.
 |
 |  ----------------------------------------------------------------------
 |  Class methods inherited from builtins.list:
 |
 |  __class_getitem__(...)
 |      See PEP 585
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.list:
 |
 |  __new__(*args, **kwargs) class method of builtins.list
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from builtins.list:
 |
 |  __hash__ = None
beautifulsoup4.Script
Python Library Documentation: class Script in module bs4.element

class Script(NavigableString)
 |  Script(value)
 |
 |  A NavigableString representing an executable script (probably
 |  Javascript).
 |
 |  Used to distinguish executable code from textual content.
 |
 |  Method resolution order:
 |      Script
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  output_ready(self, formatter='minimal')
 |      Run the string through the provided formatter.
 |
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from NavigableString:
 |
 |  PREFIX = ''
 |
 |  SUFFIX = ''
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.SoupStrainer
Python Library Documentation: class SoupStrainer in module bs4.element

class SoupStrainer(builtins.object)
 |  SoupStrainer(name=None, attrs={}, string=None, **kwargs)
 |
 |  Encapsulates a number of ways of matching a markup element (tag or
 |  string).
 |
 |  This is primarily used to underpin the find_* methods, but you can
 |  create one yourself and pass it in as `parse_only` to the
 |  `BeautifulSoup` constructor, to parse a subset of a large
 |  document.
 |
 |  Methods defined here:
 |
 |  __init__(self, name=None, attrs={}, string=None, **kwargs)
 |      Constructor.
 |
 |      The SoupStrainer constructor takes the same arguments passed
 |      into the find_* methods. See the online documentation for
 |      detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |  __str__(self)
 |      A human-readable representation of this SoupStrainer.
 |
 |  search(self, markup)
 |      Find all items in `markup` that match this SoupStrainer.
 |
 |      Used by the core _find_all() method, which is ultimately
 |      called by all find_* methods.
 |
 |      :param markup: A PageElement or a list of them.
 |
 |  searchTag = search_tag(self, markup_name=None, markup_attrs={})
 |
 |  search_tag(self, markup_name=None, markup_attrs={})
 |      Check whether a Tag with the given name and attributes would
 |      match this SoupStrainer.
 |
 |      Used prospectively to decide whether to even bother creating a Tag
 |      object.
 |
 |      :param markup_name: A tag name as found in some markup.
 |      :param markup_attrs: A dictionary of attributes as found in some markup.
 |
 |      :return: True if the prospective tag would match this SoupStrainer;
 |          False otherwise.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
beautifulsoup4.StopParsing
Python Library Documentation: class StopParsing in module bs4

class StopParsing(builtins.Exception)
 |  Exception raised by a TreeBuilder if it's unable to continue parsing.
 |
 |  Method resolution order:
 |      StopParsing
 |      builtins.Exception
 |      builtins.BaseException
 |      builtins.object
 |
 |  Data descriptors defined here:
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.Exception:
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.Exception:
 |
 |  __new__(*args, **kwargs) class method of builtins.Exception
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.BaseException:
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __reduce__(...)
 |      Helper for pickle.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __setstate__(...)
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  add_note(...)
 |      Exception.add_note(note) --
 |      add a note to the exception
 |
 |  with_traceback(...)
 |      Exception.with_traceback(tb) --
 |      set self.__traceback__ to tb and return self.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from builtins.BaseException:
 |
 |  __cause__
 |      exception cause
 |
 |  __context__
 |      exception context
 |
 |  __dict__
 |
 |  __suppress_context__
 |
 |  __traceback__
 |
 |  args
beautifulsoup4.Stylesheet
Python Library Documentation: class Stylesheet in module bs4.element

class Stylesheet(NavigableString)
 |  Stylesheet(value)
 |
 |  A NavigableString representing an stylesheet (probably
 |  CSS).
 |
 |  Used to distinguish embedded stylesheets from textual content.
 |
 |  Method resolution order:
 |      Stylesheet
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  output_ready(self, formatter='minimal')
 |      Run the string through the provided formatter.
 |
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from NavigableString:
 |
 |  PREFIX = ''
 |
 |  SUFFIX = ''
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.Tag
Python Library Documentation: class Tag in module bs4.element

class Tag(PageElement)
 |  Tag(parser=None, builder=None, name=None, namespace=None, prefix=None, attrs=None, parent=None, previous=None, is_xml=None, sourceline=None, sourcepos=None, can_be_empty_element=None, cdata_list_attributes=None, preserve_whitespace_tags=None, interesting_string_types=None, namespaces=None)
 |
 |  Represents an HTML or XML tag that is part of a parse tree, along
 |  with its attributes and contents.
 |
 |  When Beautiful Soup parses the markup <b>penguin</b>, it will
 |  create a Tag object representing the <b> tag.
 |
 |  Method resolution order:
 |      Tag
 |      PageElement
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __bool__(self)
 |      A tag is non-None even if it has no contents.
 |
 |  __call__(self, *args, **kwargs)
 |      Calling a Tag like a function is the same as calling its
 |      find_all() method. Eg. tag('a') returns a list of all the A tags
 |      found within this tag.
 |
 |  __contains__(self, x)
 |
 |  __copy__(self)
 |      A copy of a Tag must always be a deep copy, because a Tag's
 |      children can only have one parent at a time.
 |
 |  __deepcopy__(self, memo, recursive=True)
 |      A deepcopy of a Tag is a new Tag, unconnected to the parse tree.
 |      Its contents are a copy of the old Tag's contents.
 |
 |  __delitem__(self, key)
 |      Deleting tag[key] deletes all 'key' attributes for the tag.
 |
 |  __eq__(self, other)
 |      Returns true iff this Tag has the same name, the same attributes,
 |      and the same contents (recursively) as `other`.
 |
 |  __getattr__(self, tag)
 |      Calling tag.subtag is the same as calling tag.find(name="subtag")
 |
 |  __getitem__(self, key)
 |      tag[key] returns the value of the 'key' attribute for the Tag,
 |      and throws an exception if it's not there.
 |
 |  __hash__(self)
 |      Return hash(self).
 |
 |  __init__(self, parser=None, builder=None, name=None, namespace=None, prefix=None, attrs=None, parent=None, previous=None, is_xml=None, sourceline=None, sourcepos=None, can_be_empty_element=None, cdata_list_attributes=None, preserve_whitespace_tags=None, interesting_string_types=None, namespaces=None)
 |      Basic constructor.
 |
 |      :param parser: A BeautifulSoup object.
 |      :param builder: A TreeBuilder.
 |      :param name: The name of the tag.
 |      :param namespace: The URI of this Tag's XML namespace, if any.
 |      :param prefix: The prefix for this Tag's XML namespace, if any.
 |      :param attrs: A dictionary of this Tag's attribute values.
 |      :param parent: The PageElement to use as this Tag's parent.
 |      :param previous: The PageElement that was parsed immediately before
 |          this tag.
 |      :param is_xml: If True, this is an XML tag. Otherwise, this is an
 |          HTML tag.
 |      :param sourceline: The line number where this tag was found in its
 |          source document.
 |      :param sourcepos: The character position within `sourceline` where this
 |          tag was found.
 |      :param can_be_empty_element: If True, this tag should be
 |          represented as <tag/>. If False, this tag should be represented
 |          as <tag></tag>.
 |      :param cdata_list_attributes: A list of attributes whose values should
 |          be treated as CDATA if they ever show up on this tag.
 |      :param preserve_whitespace_tags: A list of tag names whose contents
 |          should have their whitespace preserved.
 |      :param interesting_string_types: This is a NavigableString
 |          subclass or a tuple of them. When iterating over this
 |          Tag's strings in methods like Tag.strings or Tag.get_text,
 |          these are the types of strings that are interesting enough
 |          to be considered. The default is to consider
 |          NavigableString and CData the only interesting string
 |          subtypes.
 |      :param namespaces: A dictionary mapping currently active
 |          namespace prefixes to URIs. This can be used later to
 |          construct CSS selectors.
 |
 |  __iter__(self)
 |      Iterating over a Tag iterates over its contents.
 |
 |  __len__(self)
 |      The length of a Tag is the length of its list of contents.
 |
 |  __ne__(self, other)
 |      Returns true iff this Tag is not identical to `other`,
 |      as defined in __eq__.
 |
 |  __repr__ = __unicode__(self)
 |
 |  __setitem__(self, key, value)
 |      Setting tag[key] sets the value of the 'key' attribute for the
 |      tag.
 |
 |  __str__ = __unicode__(self)
 |
 |  __unicode__(self)
 |      Renders this PageElement as a Unicode string.
 |
 |  childGenerator(self)
 |      Deprecated generator.
 |
 |  clear(self, decompose=False)
 |      Wipe out all children of this PageElement by calling extract()
 |         on them.
 |
 |      :param decompose: If this is True, decompose() (a more
 |          destructive method) will be called instead of extract().
 |
 |  decode(self, indent_level=None, eventual_encoding='utf-8', formatter='minimal', iterator=None)
 |
 |  decode_contents(self, indent_level=None, eventual_encoding='utf-8', formatter='minimal')
 |      Renders the contents of this tag as a Unicode string.
 |
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |
 |      :param eventual_encoding: The tag is destined to be
 |         encoded into this encoding. decode_contents() is _not_
 |         responsible for performing that encoding. This information
 |         is passed in so that it can be substituted in if the
 |         document contains a <META> tag that mentions the document's
 |         encoding.
 |
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard Formatters.
 |
 |  decompose(self)
 |      Recursively destroys this PageElement and its children.
 |
 |      This element will be removed from the tree and wiped out; so
 |      will everything beneath it.
 |
 |      The behavior of a decomposed PageElement is undefined and you
 |      should never use one for anything, but if you need to _check_
 |      whether an element has been decomposed, you can use the
 |      `decomposed` property.
 |
 |  encode(self, encoding='utf-8', indent_level=None, formatter='minimal', errors='xmlcharrefreplace')
 |      Render a bytestring representation of this PageElement and its
 |      contents.
 |
 |      :param encoding: The destination encoding.
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard formatters.
 |      :param errors: An error handling strategy such as
 |          'xmlcharrefreplace'. This value is passed along into
 |          encode() and its value should be one of the constants
 |          defined by Python.
 |      :return: A bytestring.
 |
 |  encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal')
 |      Renders the contents of this PageElement as a bytestring.
 |
 |      :param indent_level: Each line of the rendering will be
 |         indented this many levels. (The formatter decides what a
 |         'level' means in terms of spaces or other characters
 |         output.) Used internally in recursive calls while
 |         pretty-printing.
 |
 |      :param eventual_encoding: The bytestring will be in this encoding.
 |
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard Formatters.
 |
 |      :return: A bytestring.
 |
 |  find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
 |      Look in the children of this PageElement and find the first
 |      PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param recursive: If this is True, find() will perform a
 |          recursive search of this PageElement's children. Otherwise,
 |          only the direct children will be considered.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  findAll = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |
 |  findChild = find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
 |
 |  findChildren = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |
 |  find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
 |      Look in the children of this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param recursive: If this is True, find_all() will perform a
 |          recursive search of this PageElement's children. Otherwise,
 |          only the direct children will be considered.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  get(self, key, default=None)
 |      Returns the value of the 'key' attribute for the tag, or
 |      the value given for 'default' if it doesn't have that
 |      attribute.
 |
 |  get_attribute_list(self, key, default=None)
 |      The same as get(), but always returns a list.
 |
 |      :param key: The attribute to look for.
 |      :param default: Use this value if the attribute is not present
 |          on this PageElement.
 |      :return: A list of values, probably containing only a single
 |          value.
 |
 |  has_attr(self, key)
 |      Does this PageElement have an attribute with the given name?
 |
 |  has_key(self, key)
 |      Deprecated method. This was kind of misleading because has_key()
 |      (attributes) was different from __in__ (contents).
 |
 |      has_key() is gone in Python 3, anyway.
 |
 |  index(self, element)
 |      Find the index of a child by identity, not value.
 |
 |      Avoids issues with tag.contents.index(element) getting the
 |      index of equal elements.
 |
 |      :param element: Look for this PageElement in `self.contents`.
 |
 |  prettify(self, encoding=None, formatter='minimal')
 |      Pretty-print this PageElement as a string.
 |
 |      :param encoding: The eventual encoding of the string. If this is None,
 |          a Unicode string will be returned.
 |      :param formatter: A Formatter object, or a string naming one of
 |          the standard formatters.
 |      :return: A Unicode string (if encoding==None) or a bytestring
 |          (otherwise).
 |
 |  recursiveChildGenerator(self)
 |      Deprecated generator.
 |
 |  renderContents(self, encoding='utf-8', prettyPrint=False, indentLevel=0)
 |      Deprecated method for BS3 compatibility.
 |
 |  select(self, selector, namespaces=None, limit=None, **kwargs)
 |      Perform a CSS selection operation on the current element.
 |
 |      This uses the SoupSieve library.
 |
 |      :param selector: A string containing a CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param limit: After finding this number of results, stop looking.
 |
 |      :param kwargs: Keyword arguments to be passed into SoupSieve's
 |         soupsieve.select() method.
 |
 |      :return: A ResultSet of Tags.
 |      :rtype: bs4.element.ResultSet
 |
 |  select_one(self, selector, namespaces=None, **kwargs)
 |      Perform a CSS selection operation on the current element.
 |
 |      :param selector: A CSS selector.
 |
 |      :param namespaces: A dictionary mapping namespace prefixes
 |         used in the CSS selector to namespace URIs. By default,
 |         Beautiful Soup will use the prefixes it encountered while
 |         parsing the document.
 |
 |      :param kwargs: Keyword arguments to be passed into Soup Sieve's
 |         soupsieve.select() method.
 |
 |      :return: A Tag.
 |      :rtype: bs4.element.Tag
 |
 |  smooth(self)
 |      Smooth out this element's children by consolidating consecutive
 |      strings.
 |
 |      This makes pretty-printed output look more natural following a
 |      lot of operations that modified the tree.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  children
 |      Iterate over all direct children of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  css
 |      Return an interface to the CSS selector API.
 |
 |  descendants
 |      Iterate over all children of this PageElement in a
 |      breadth-first sequence.
 |
 |      :yield: A sequence of PageElements.
 |
 |  isSelfClosing
 |      Is this tag an empty-element tag? (aka a self-closing tag)
 |
 |      A tag that has contents is never an empty-element tag.
 |
 |      A tag that has no contents may or may not be an empty-element
 |      tag. It depends on the builder used to create the tag. If the
 |      builder has a designated list of empty-element tags, then only
 |      a tag whose name shows up in that list is considered an
 |      empty-element tag.
 |
 |      If the builder has no designated list of empty-element tags,
 |      then any tag with no contents is an empty-element tag.
 |
 |  is_empty_element
 |      Is this tag an empty-element tag? (aka a self-closing tag)
 |
 |      A tag that has contents is never an empty-element tag.
 |
 |      A tag that has no contents may or may not be an empty-element
 |      tag. It depends on the builder used to create the tag. If the
 |      builder has a designated list of empty-element tags, then only
 |      a tag whose name shows up in that list is considered an
 |      empty-element tag.
 |
 |      If the builder has no designated list of empty-element tags,
 |      then any tag with no contents is an empty-element tag.
 |
 |  self_and_descendants
 |      Iterate over this PageElement and its children in a
 |      breadth-first sequence.
 |
 |      :yield: A sequence of PageElements.
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. Any strings of
 |          a subclass not found in this list will be ignored. By
 |          default, the subclasses considered are the ones found in
 |          self.interesting_string_types. If that's not specified,
 |          only NavigableString and CData objects will be
 |          considered. That means no comments, processing
 |          instructions, etc.
 |
 |      :yield: A sequence of strings.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  parserClass
 |
 |  string
 |      Convenience property to get the single string within this
 |      PageElement.
 |
 |      TODO It might make sense to have NavigableString.string return
 |      itself.
 |
 |      :return: If this element has a single string child, return
 |       value is that string. If this element has one child tag,
 |       return value is the 'string' attribute of the child tag,
 |       recursively. If this element is itself a string, has no
 |       children, or has more than one child, return value is None.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  DEFAULT_INTERESTING_STRING_TYPES = (<class 'bs4.element.NavigableStrin...
 |
 |  EMPTY_ELEMENT_EVENT = <object object>
 |
 |  END_ELEMENT_EVENT = <object object>
 |
 |  START_ELEMENT_EVENT = <object object>
 |
 |  STRING_ELEMENT_EVENT = <object object>
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.TemplateString
Python Library Documentation: class TemplateString in module bs4.element

class TemplateString(NavigableString)
 |  TemplateString(value)
 |
 |  A NavigableString representing a string found inside an HTML
 |  template embedded in a larger document.
 |
 |  Used to distinguish such strings from the main body of the document.
 |
 |  Method resolution order:
 |      TemplateString
 |      NavigableString
 |      builtins.str
 |      PageElement
 |      builtins.object
 |
 |  Methods inherited from NavigableString:
 |
 |  __copy__(self)
 |      A copy of a NavigableString can only be a deep copy, because
 |      only one PageElement can occupy a given place in a parse tree.
 |
 |  __deepcopy__(self, memo, recursive=False)
 |      A copy of a NavigableString has the same contents and class
 |      as the original, but it is not connected to the parse tree.
 |
 |      :param recursive: This parameter is ignored; it's only defined
 |         so that NavigableString.__deepcopy__ implements the same
 |         signature as Tag.__deepcopy__.
 |
 |  __getattr__(self, attr)
 |      text.string gives you text. This is for backwards
 |      compatibility for Navigable*String, but for CData* it lets you
 |      get the string without the CData wrapper.
 |
 |  __getnewargs__(self)
 |
 |  output_ready(self, formatter='minimal')
 |      Run the string through the provided formatter.
 |
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from NavigableString:
 |
 |  __new__(cls, value)
 |      Create a new NavigableString.
 |
 |      When unpickling a NavigableString, this method is called with
 |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
 |      passed in to the superclass's __new__ or the superclass won't know
 |      how to handle non-ASCII characters.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from NavigableString:
 |
 |  strings
 |      Yield all strings of certain classes, possibly stripping them.
 |
 |      This makes it easy for NavigableString to implement methods
 |      like get_text() as conveniences, creating a consistent
 |      text-extraction API across all PageElements.
 |
 |      :param strip: If True, all strings will be stripped before being
 |          yielded.
 |
 |      :param types: A tuple of NavigableString subclasses. If this
 |          NavigableString isn't one of those subclasses, the
 |          sequence will be empty. By default, the subclasses
 |          considered are NavigableString and CData objects. That
 |          means no comments, processing instructions, etc.
 |
 |      :yield: A sequence that either contains this string, or is empty.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from NavigableString:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  name
 |      Since a NavigableString is not a Tag, it has no .name.
 |
 |      This property is implemented so that code like this doesn't crash
 |      when run on a mixture of Tag and NavigableString objects:
 |          [x.name for x in tag.children]
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from NavigableString:
 |
 |  PREFIX = ''
 |
 |  SUFFIX = ''
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.str:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __format__(self, format_spec, /)
 |      Return a formatted version of the string as described by format_spec.
 |
 |  __ge__(self, value, /)
 |      Return self>=value.
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self>value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self<=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self<value.
 |
 |  __mod__(self, value, /)
 |      Return self%value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmod__(self, value, /)
 |      Return value%self.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __sizeof__(self, /)
 |      Return the size of the string in memory, in bytes.
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  capitalize(self, /)
 |      Return a capitalized version of the string.
 |
 |      More specifically, make the first character have upper case and the rest lower
 |      case.
 |
 |  casefold(self, /)
 |      Return a version of the string suitable for caseless comparisons.
 |
 |  center(self, width, fillchar=' ', /)
 |      Return a centered string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  count(...)
 |      S.count(sub[, start[, end]]) -> int
 |
 |      Return the number of non-overlapping occurrences of substring sub in
 |      string S[start:end].  Optional arguments start and end are
 |      interpreted as in slice notation.
 |
 |  encode(self, /, encoding='utf-8', errors='strict')
 |      Encode the string using the codec registered for encoding.
 |
 |      encoding
 |        The encoding in which to encode the string.
 |      errors
 |        The error handling scheme to use for encoding errors.
 |        The default is 'strict' meaning that encoding errors raise a
 |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
 |        'xmlcharrefreplace' as well as any other name registered with
 |        codecs.register_error that can handle UnicodeEncodeErrors.
 |
 |  endswith(...)
 |      S.endswith(suffix[, start[, end]]) -> bool
 |
 |      Return True if S ends with the specified suffix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      suffix can also be a tuple of strings to try.
 |
 |  expandtabs(self, /, tabsize=8)
 |      Return a copy where all tab characters are expanded using spaces.
 |
 |      If tabsize is not given, a tab size of 8 characters is assumed.
 |
 |  find(...)
 |      S.find(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  format(...)
 |      S.format(*args, **kwargs) -> str
 |
 |      Return a formatted version of S, using substitutions from args and kwargs.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  format_map(...)
 |      S.format_map(mapping) -> str
 |
 |      Return a formatted version of S, using substitutions from mapping.
 |      The substitutions are identified by braces ('{' and '}').
 |
 |  index(...)
 |      S.index(sub[, start[, end]]) -> int
 |
 |      Return the lowest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  isalnum(self, /)
 |      Return True if the string is an alpha-numeric string, False otherwise.
 |
 |      A string is alpha-numeric if all characters in the string are alpha-numeric and
 |      there is at least one character in the string.
 |
 |  isalpha(self, /)
 |      Return True if the string is an alphabetic string, False otherwise.
 |
 |      A string is alphabetic if all characters in the string are alphabetic and there
 |      is at least one character in the string.
 |
 |  isascii(self, /)
 |      Return True if all characters in the string are ASCII, False otherwise.
 |
 |      ASCII characters have code points in the range U+0000-U+007F.
 |      Empty string is ASCII too.
 |
 |  isdecimal(self, /)
 |      Return True if the string is a decimal string, False otherwise.
 |
 |      A string is a decimal string if all characters in the string are decimal and
 |      there is at least one character in the string.
 |
 |  isdigit(self, /)
 |      Return True if the string is a digit string, False otherwise.
 |
 |      A string is a digit string if all characters in the string are digits and there
 |      is at least one character in the string.
 |
 |  isidentifier(self, /)
 |      Return True if the string is a valid Python identifier, False otherwise.
 |
 |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
 |      such as "def" or "class".
 |
 |  islower(self, /)
 |      Return True if the string is a lowercase string, False otherwise.
 |
 |      A string is lowercase if all cased characters in the string are lowercase and
 |      there is at least one cased character in the string.
 |
 |  isnumeric(self, /)
 |      Return True if the string is a numeric string, False otherwise.
 |
 |      A string is numeric if all characters in the string are numeric and there is at
 |      least one character in the string.
 |
 |  isprintable(self, /)
 |      Return True if the string is printable, False otherwise.
 |
 |      A string is printable if all of its characters are considered printable in
 |      repr() or if it is empty.
 |
 |  isspace(self, /)
 |      Return True if the string is a whitespace string, False otherwise.
 |
 |      A string is whitespace if all characters in the string are whitespace and there
 |      is at least one character in the string.
 |
 |  istitle(self, /)
 |      Return True if the string is a title-cased string, False otherwise.
 |
 |      In a title-cased string, upper- and title-case characters may only
 |      follow uncased characters and lowercase characters only cased ones.
 |
 |  isupper(self, /)
 |      Return True if the string is an uppercase string, False otherwise.
 |
 |      A string is uppercase if all cased characters in the string are uppercase and
 |      there is at least one cased character in the string.
 |
 |  join(self, iterable, /)
 |      Concatenate any number of strings.
 |
 |      The string whose method is called is inserted in between each given string.
 |      The result is returned as a new string.
 |
 |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
 |
 |  ljust(self, width, fillchar=' ', /)
 |      Return a left-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  lower(self, /)
 |      Return a copy of the string converted to lowercase.
 |
 |  lstrip(self, chars=None, /)
 |      Return a copy of the string with leading whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  partition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string.  If the separator is found,
 |      returns a 3-tuple containing the part before the separator, the separator
 |      itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing the original string
 |      and two empty strings.
 |
 |  removeprefix(self, prefix, /)
 |      Return a str with the given prefix string removed if present.
 |
 |      If the string starts with the prefix string, return string[len(prefix):].
 |      Otherwise, return a copy of the original string.
 |
 |  removesuffix(self, suffix, /)
 |      Return a str with the given suffix string removed if present.
 |
 |      If the string ends with the suffix string and that suffix is not empty,
 |      return string[:-len(suffix)]. Otherwise, return a copy of the original
 |      string.
 |
 |  replace(self, old, new, count=-1, /)
 |      Return a copy with all occurrences of substring old replaced by new.
 |
 |        count
 |          Maximum number of occurrences to replace.
 |          -1 (the default value) means replace all occurrences.
 |
 |      If the optional argument count is given, only the first count occurrences are
 |      replaced.
 |
 |  rfind(...)
 |      S.rfind(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Return -1 on failure.
 |
 |  rindex(...)
 |      S.rindex(sub[, start[, end]]) -> int
 |
 |      Return the highest index in S where substring sub is found,
 |      such that sub is contained within S[start:end].  Optional
 |      arguments start and end are interpreted as in slice notation.
 |
 |      Raises ValueError when the substring is not found.
 |
 |  rjust(self, width, fillchar=' ', /)
 |      Return a right-justified string of length width.
 |
 |      Padding is done using the specified fill character (default is a space).
 |
 |  rpartition(self, sep, /)
 |      Partition the string into three parts using the given separator.
 |
 |      This will search for the separator in the string, starting at the end. If
 |      the separator is found, returns a 3-tuple containing the part before the
 |      separator, the separator itself, and the part after it.
 |
 |      If the separator is not found, returns a 3-tuple containing two empty strings
 |      and the original string.
 |
 |  rsplit(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the end of the string and works to the front.
 |
 |  rstrip(self, chars=None, /)
 |      Return a copy of the string with trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the substrings in the string, using sep as the separator string.
 |
 |        sep
 |          The separator used to split the string.
 |
 |          When set to None (the default value), will split on any whitespace
 |          character (including \n \r \t \f and spaces) and will discard
 |          empty strings from the result.
 |        maxsplit
 |          Maximum number of splits.
 |          -1 (the default value) means no limit.
 |
 |      Splitting starts at the front of the string and works to the end.
 |
 |      Note, str.split() is mainly useful for data that has been intentionally
 |      delimited.  With natural text that includes punctuation, consider using
 |      the regular expression module.
 |
 |  splitlines(self, /, keepends=False)
 |      Return a list of the lines in the string, breaking at line boundaries.
 |
 |      Line breaks are not included in the resulting list unless keepends is given and
 |      true.
 |
 |  startswith(...)
 |      S.startswith(prefix[, start[, end]]) -> bool
 |
 |      Return True if S starts with the specified prefix, False otherwise.
 |      With optional start, test S beginning at that position.
 |      With optional end, stop comparing S at that position.
 |      prefix can also be a tuple of strings to try.
 |
 |  strip(self, chars=None, /)
 |      Return a copy of the string with leading and trailing whitespace removed.
 |
 |      If chars is given and not None, remove characters in chars instead.
 |
 |  swapcase(self, /)
 |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
 |
 |  title(self, /)
 |      Return a version of the string where each word is titlecased.
 |
 |      More specifically, words start with uppercased characters and all remaining
 |      cased characters have lower case.
 |
 |  translate(self, table, /)
 |      Replace each character in the string using the given translation table.
 |
 |        table
 |          Translation table, which must be a mapping of Unicode ordinals to
 |          Unicode ordinals, strings, or None.
 |
 |      The table must implement lookup/indexing via __getitem__, for instance a
 |      dictionary or list.  If this operation raises LookupError, the character is
 |      left untouched.  Characters mapped to None are deleted.
 |
 |  upper(self, /)
 |      Return a copy of the string converted to uppercase.
 |
 |  zfill(self, width, /)
 |      Pad a numeric string with zeros on the left, to fill a field of the given width.
 |
 |      The string is never truncated.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.str:
 |
 |  maketrans(...)
 |      Return a translation table usable for str.translate().
 |
 |      If there is only one argument, it must be a dictionary mapping Unicode
 |      ordinals (integers) or characters to Unicode ordinals, strings or None.
 |      Character keys will be then converted to ordinals.
 |      If there are two arguments, they must be strings of equal length, and
 |      in the resulting dictionary, each character in x will be mapped to the
 |      character at the same position in y. If there is a third argument, it
 |      must be a string, whose characters will be mapped to None in the result.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from PageElement:
 |
 |  append(self, tag)
 |      Appends the given PageElement to the contents of this one.
 |
 |      :param tag: A PageElement.
 |
 |  extend(self, tags)
 |      Appends the given PageElements to this one's contents.
 |
 |      :param tags: A list of PageElements. If a single Tag is
 |          provided instead, this PageElement's contents will be extended
 |          with that Tag's contents.
 |
 |  extract(self, _self_index=None)
 |      Destructively rips this element out of the tree.
 |
 |      :param _self_index: The location of this element in its parent's
 |         .contents, if known. Passing this in allows for a performance
 |         optimization.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
 |
 |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |
 |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |
 |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |
 |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all PageElements that match the given criteria and appear
 |      later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet containing PageElements.
 |
 |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Look backwards in the document from this PageElement and find all
 |      PageElements that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_next(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the first PageElement that matches the given criteria and
 |      appears later in the document than this PageElement.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Find the closest sibling to this PageElement that matches the
 |      given criteria and appears later in the document.
 |
 |      All find_* methods take a common set of arguments. See the
 |      online documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Find all siblings of this PageElement that match the given criteria
 |      and appear later in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  find_parent(self, name=None, attrs={}, **kwargs)
 |      Find the closest parent of this PageElement that matches the given
 |      criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
 |      Find all parents of this PageElement that match the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
 |      Look backwards in the document from this PageElement and find the
 |      first PageElement that matches the given criteria.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
 |      Returns the closest sibling to this PageElement that matches the
 |      given criteria and appears earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
 |      Returns all siblings to this PageElement that match the
 |      given criteria and appear earlier in the document.
 |
 |      All find_* methods take a common set of arguments. See the online
 |      documentation for detailed explanations.
 |
 |      :param name: A filter on tag name.
 |      :param attrs: A dictionary of filters on attribute values.
 |      :param string: A filter for a NavigableString with specific text.
 |      :param limit: Stop looking after finding this many results.
 |      :kwargs: A dictionary of filters on attribute values.
 |      :return: A ResultSet of PageElements.
 |      :rtype: bs4.element.ResultSet
 |
 |  format_string(self, s, formatter)
 |      Format the given string using the given formatter.
 |
 |      :param s: A string.
 |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
 |
 |  formatter_for_name(self, formatter)
 |      Look up or create a Formatter for the given identifier,
 |      if necessary.
 |
 |      :param formatter: Can be a Formatter object (used as-is), a
 |          function (used as the entity substitution hook for an
 |          XMLFormatter or HTMLFormatter), or a string (used to look
 |          up an XMLFormatter or HTMLFormatter in the appropriate
 |          registry.
 |
 |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |
 |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  insert(self, position, new_child)
 |      Insert a new PageElement in the list of this PageElement's children.
 |
 |      This works the same way as `list.insert`.
 |
 |      :param position: The numeric position that should be occupied
 |         in `self.children` by the new PageElement.
 |      :param new_child: A PageElement.
 |
 |  insert_after(self, *args)
 |      Makes the given element(s) the immediate successor of this one.
 |
 |      The elements will have the same parent, and the given elements
 |      will be immediately after this one.
 |
 |      :param args: One or more PageElements.
 |
 |  insert_before(self, *args)
 |      Makes the given element(s) the immediate predecessor of this one.
 |
 |      All the elements will have the same parent, and the given elements
 |      will be immediately before this one.
 |
 |      :param args: One or more PageElements.
 |
 |  nextGenerator(self)
 |      # Old non-property versions of the generators, for backwards
 |      # compatibility with BS3.
 |
 |  nextSiblingGenerator(self)
 |
 |  parentGenerator(self)
 |
 |  previousGenerator(self)
 |
 |  previousSiblingGenerator(self)
 |
 |  replaceWith = replace_with(self, *args)
 |
 |  replaceWithChildren = unwrap(self)
 |
 |  replace_with(self, *args)
 |      Replace this PageElement with one or more PageElements, keeping the
 |      rest of the tree the same.
 |
 |      :param args: One or more PageElements.
 |      :return: `self`, no longer part of the tree.
 |
 |  replace_with_children = unwrap(self)
 |
 |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
 |      Sets up the initial relations between this element and
 |      other elements.
 |
 |      :param parent: The parent of this element.
 |
 |      :param previous_element: The element parsed immediately before
 |          this one.
 |
 |      :param next_element: The element parsed immediately before
 |          this one.
 |
 |      :param previous_sibling: The most recently encountered element
 |          on the same level of the parse tree as this one.
 |
 |      :param previous_sibling: The next element to be encountered
 |          on the same level of the parse tree as this one.
 |
 |  unwrap(self)
 |      Replace this PageElement with its contents.
 |
 |      :return: `self`, no longer part of the tree.
 |
 |  wrap(self, wrap_inside)
 |      Wrap this PageElement inside another one.
 |
 |      :param wrap_inside: A PageElement.
 |      :return: `wrap_inside`, occupying the position in the tree that used
 |         to be occupied by `self`, and with `self` inside it.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from PageElement:
 |
 |  decomposed
 |      Check whether a PageElement has been decomposed.
 |
 |      :rtype: bool
 |
 |  next
 |      The PageElement, if any, that was parsed just after this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  next_elements
 |      All PageElements that were parsed after this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  next_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      later.
 |
 |      :yield: A sequence of PageElements.
 |
 |  parents
 |      All PageElements that are parents of this PageElement.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous
 |      The PageElement, if any, that was parsed just before this one.
 |
 |      :return: A PageElement.
 |      :rtype: bs4.element.Tag | bs4.element.NavigableString
 |
 |  previous_elements
 |      All PageElements that were parsed before this one.
 |
 |      :yield: A sequence of PageElements.
 |
 |  previous_siblings
 |      All PageElements that are siblings of this one but were parsed
 |      earlier.
 |
 |      :yield: A sequence of PageElements.
 |
 |  stripped_strings
 |      Yield all strings in this PageElement, stripping them first.
 |
 |      :yield: A sequence of stripped strings.
 |
 |  text
 |      Get all child strings of this PageElement, concatenated using the
 |      given separator.
 |
 |      :param separator: Strings will be concatenated using this separator.
 |
 |      :param strip: If True, strings will be stripped before being
 |          concatenated.
 |
 |      :param types: A tuple of NavigableString subclasses. Any
 |          strings of a subclass not found in this list will be
 |          ignored. Although there are exceptions, the default
 |          behavior in most cases is to consider only NavigableString
 |          and CData objects. That means no comments, processing
 |          instructions, etc.
 |
 |      :return: A string.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from PageElement:
 |
 |  nextSibling
 |
 |  previousSibling
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from PageElement:
 |
 |  default = <object object>
 |
 |  known_xml = None
beautifulsoup4.UnicodeDammit
Python Library Documentation: class UnicodeDammit in module bs4.dammit

class UnicodeDammit(builtins.object)
 |  UnicodeDammit(markup, known_definite_encodings=[], smart_quotes_to=None, is_html=False, exclude_encodings=[], user_encodings=None, override_encodings=None)
 |
 |  A class for detecting the encoding of a *ML document and
 |  converting it to a Unicode string. If the source encoding is
 |  windows-1252, can replace MS smart quotes with their HTML or XML
 |  equivalents.
 |
 |  Methods defined here:
 |
 |  __init__(self, markup, known_definite_encodings=[], smart_quotes_to=None, is_html=False, exclude_encodings=[], user_encodings=None, override_encodings=None)
 |      Constructor.
 |
 |      :param markup: A bytestring representing markup in an unknown encoding.
 |
 |      :param known_definite_encodings: When determining the encoding
 |          of `markup`, these encodings will be tried first, in
 |          order. In HTML terms, this corresponds to the "known
 |          definite encoding" step defined here:
 |          https://html.spec.whatwg.org/multipage/parsing.html#parsing-with-a-known-character-encoding
 |
 |      :param user_encodings: These encodings will be tried after the
 |          `known_definite_encodings` have been tried and failed, and
 |          after an attempt to sniff the encoding by looking at a
 |          byte order mark has failed. In HTML terms, this
 |          corresponds to the step "user has explicitly instructed
 |          the user agent to override the document's character
 |          encoding", defined here:
 |          https://html.spec.whatwg.org/multipage/parsing.html#determining-the-character-encoding
 |
 |      :param override_encodings: A deprecated alias for
 |          known_definite_encodings. Any encodings here will be tried
 |          immediately after the encodings in
 |          known_definite_encodings.
 |
 |      :param smart_quotes_to: By default, Microsoft smart quotes will, like all other characters, be converted
 |         to Unicode characters. Setting this to 'ascii' will convert them to ASCII quotes instead.
 |         Setting it to 'xml' will convert them to XML entity references, and setting it to 'html'
 |         will convert them to HTML entity references.
 |      :param is_html: If True, this markup is considered to be HTML. Otherwise
 |          it's assumed to be XML.
 |      :param exclude_encodings: These encodings will not be considered, even
 |          if the sniffing code thinks they might make sense.
 |
 |  find_codec(self, charset)
 |      Convert the name of a character set to a codec name.
 |
 |      :param charset: The name of a character set.
 |      :return: The name of a codec.
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  detwingle(in_bytes, main_encoding='utf8', embedded_encoding='windows-1252')
 |      Fix characters from one encoding embedded in some other encoding.
 |
 |      Currently the only situation supported is Windows-1252 (or its
 |      subset ISO-8859-1), embedded in UTF-8.
 |
 |      :param in_bytes: A bytestring that you suspect contains
 |          characters from multiple encodings. Note that this _must_
 |          be a bytestring. If you've already converted the document
 |          to Unicode, you're too late.
 |      :param main_encoding: The primary encoding of `in_bytes`.
 |      :param embedded_encoding: The encoding that was used to embed characters
 |          in the main document.
 |      :return: A bytestring in which `embedded_encoding`
 |        characters have been converted to their `main_encoding`
 |        equivalents.
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  declared_html_encoding
 |      If the markup is an HTML document, returns the encoding declared _within_
 |      the document.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  CHARSET_ALIASES = {'macintosh': 'mac-roman', 'x-sjis': 'shift-jis'}
 |
 |  ENCODINGS_WITH_SMART_QUOTES = ['windows-1252', 'iso-8859-1', 'iso-8859...
 |
 |  FIRST_MULTIBYTE_MARKER = 194
 |
 |  LAST_MULTIBYTE_MARKER = 244
 |
 |  MS_CHARS = {b'\x80': ('euro', '20AC'), b'\x81': ' ', b'\x82': ('sbquo'...
 |
 |  MS_CHARS_TO_ASCII = {b'\x80': 'EUR', b'\x81': ' ', b'\x82': ',', b'\x8...
 |
 |  MULTIBYTE_MARKERS_AND_SIZES = [(194, 223, 2), (224, 239, 3), (240, 244...
 |
 |  WINDOWS_1252_TO_UTF8 = {128: b'\xe2\x82\xac', 130: b'\xe2\x80\x9a', 13...
beautifulsoup4.XMLParsedAsHTMLWarning
Python Library Documentation: class XMLParsedAsHTMLWarning in module bs4.builder

class XMLParsedAsHTMLWarning(builtins.UserWarning)
 |  The warning issued when an HTML parser is used to parse
 |  XML that is not XHTML.
 |
 |  Method resolution order:
 |      XMLParsedAsHTMLWarning
 |      builtins.UserWarning
 |      builtins.Warning
 |      builtins.Exception
 |      builtins.BaseException
 |      builtins.object
 |
 |  Data descriptors defined here:
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  MESSAGE = 'It looks like you\'re parsing an XML document usi...atures=...
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.UserWarning:
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Static methods inherited from builtins.UserWarning:
 |
 |  __new__(*args, **kwargs) class method of builtins.UserWarning
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from builtins.BaseException:
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __reduce__(...)
 |      Helper for pickle.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __setstate__(...)
 |
 |  __str__(self, /)
 |      Return str(self).
 |
 |  add_note(...)
 |      Exception.add_note(note) --
 |      add a note to the exception
 |
 |  with_traceback(...)
 |      Exception.with_traceback(tb) --
 |      set self.__traceback__ to tb and return self.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from builtins.BaseException:
 |
 |  __cause__
 |      exception cause
 |
 |  __context__
 |      exception context
 |
 |  __dict__
 |
 |  __suppress_context__
 |
 |  __traceback__
 |
 |  args
beautifulsoup4.builder
Python Library Documentation: package bs4.builder in bs4

NAME
    bs4.builder - # Use of this source code is governed by the MIT license.

PACKAGE CONTENTS
    _html5lib
    _htmlparser
    _lxml

CLASSES
    builtins.object
        TreeBuilder
            HTMLTreeBuilder
                bs4.builder._html5lib.HTML5TreeBuilder
                bs4.builder._htmlparser.HTMLParserTreeBuilder
                bs4.builder._lxml.LXMLTreeBuilder(HTMLTreeBuilder, bs4.builder._lxml.LXMLTreeBuilderForXML)
            SAXTreeBuilder
            bs4.builder._lxml.LXMLTreeBuilderForXML
        TreeBuilderRegistry

    class HTML5TreeBuilder(bs4.builder.HTMLTreeBuilder)
     |  HTML5TreeBuilder(multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |
     |  Use html5lib to build a tree.
     |
     |  Note that this TreeBuilder does not support some features common
     |  to HTML TreeBuilders. Some of these features could theoretically
     |  be implemented, but at the very least it's quite difficult,
     |  because html5lib moves the parse tree around as it's being built.
     |
     |  * This TreeBuilder doesn't use different subclasses of NavigableString
     |    based on the name of the tag in which the string was found.
     |
     |  * You can't use a SoupStrainer to parse only part of a document.
     |
     |  Method resolution order:
     |      HTML5TreeBuilder
     |      bs4.builder.HTMLTreeBuilder
     |      bs4.builder.TreeBuilder
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  create_treebuilder(self, namespaceHTMLElements)
     |
     |  feed(self, markup)
     |      Run some incoming markup through some parsing process,
     |      populating the `BeautifulSoup` object in self.soup.
     |
     |      This method is not implemented in TreeBuilder; it must be
     |      implemented in subclasses.
     |
     |      :return: None.
     |
     |  prepare_markup(self, markup, user_specified_encoding, document_declared_encoding=None, exclude_encodings=None)
     |      Run any preliminary steps necessary to make incoming markup
     |      acceptable to the parser.
     |
     |      :param markup: Some markup -- probably a bytestring.
     |      :param user_specified_encoding: The user asked to try this encoding.
     |      :param document_declared_encoding: The markup itself claims to be
     |          in this encoding. NOTE: This argument is not used by the
     |          calling code and can probably be removed.
     |      :param exclude_encodings: The user asked _not_ to try any of
     |          these encodings.
     |
     |      :yield: A series of 4-tuples:
     |       (markup, encoding, declared encoding,
     |        has undergone character replacement)
     |
     |       Each 4-tuple represents a strategy for converting the
     |       document to Unicode and parsing it. Each strategy will be tried
     |       in turn.
     |
     |       By default, the only strategy is to parse the markup
     |       as-is. See `LXMLTreeBuilderForXML` and
     |       `HTMLParserTreeBuilder` for implementations that take into
     |       account the quirks of particular parsers.
     |
     |  test_fragment_to_document(self, fragment)
     |      See `TreeBuilder`.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  NAME = 'html5lib'
     |
     |  TRACKS_LINE_NUMBERS = True
     |
     |  features = ['html5lib', 'permissive', 'html5', 'html']
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from bs4.builder.HTMLTreeBuilder:
     |
     |  set_up_substitutions(self, tag)
     |      Replace the declared encoding in a <meta> tag with a placeholder,
     |      to be substituted when the tag is output to a string.
     |
     |      An HTML document may come in to Beautiful Soup as one
     |      encoding, but exit in a different encoding, and the <meta> tag
     |      needs to be changed to reflect this.
     |
     |      :param tag: A `Tag`
     |      :return: Whether or not a substitution was performed.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.builder.HTMLTreeBuilder:
     |
     |  DEFAULT_CDATA_LIST_ATTRIBUTES = {'*': ['class', 'accesskey', 'dropzone...
     |
     |  DEFAULT_PRESERVE_WHITESPACE_TAGS = {'pre', 'textarea'}
     |
     |  DEFAULT_STRING_CONTAINERS = {'rp': <class 'bs4.element.RubyParenthesis...
     |
     |  block_elements = {'address', 'article', 'aside', 'blockquote', 'canvas...
     |
     |  empty_element_tags = {'area', 'base', 'basefont', 'bgsound', 'br', 'co...
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from bs4.builder.TreeBuilder:
     |
     |  __init__(self, multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |      Constructor.
     |
     |      :param multi_valued_attributes: If this is set to None, the
     |       TreeBuilder will not turn any values for attributes like
     |       'class' into lists. Setting this to a dictionary will
     |       customize this behavior; look at DEFAULT_CDATA_LIST_ATTRIBUTES
     |       for an example.
     |
     |       Internally, these are called "CDATA list attributes", but that
     |       probably doesn't make sense to an end-user, so the argument name
     |       is `multi_valued_attributes`.
     |
     |      :param preserve_whitespace_tags: A list of tags to treat
     |       the way <pre> tags are treated in HTML. Tags in this list
     |       are immune from pretty-printing; their contents will always be
     |       output as-is.
     |
     |      :param string_containers: A dictionary mapping tag names to
     |      the classes that should be instantiated to contain the textual
     |      contents of those tags. The default is to use NavigableString
     |      for every tag, no matter what the name. You can override the
     |      default by changing DEFAULT_STRING_CONTAINERS.
     |
     |      :param store_line_numbers: If the parser keeps track of the
     |       line numbers and positions of the original markup, that
     |       information will, by default, be stored in each corresponding
     |       `Tag` object. You can turn this off by passing
     |       store_line_numbers=False. If the parser you're using doesn't
     |       keep track of this information, then setting store_line_numbers=True
     |       will do nothing.
     |
     |  can_be_empty_element(self, tag_name)
     |      Might a tag with this name be an empty-element tag?
     |
     |      The final markup may or may not actually present this tag as
     |      self-closing.
     |
     |      For instance: an HTMLBuilder does not consider a <p> tag to be
     |      an empty-element tag (it's not in
     |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
     |      will be presented as "<p></p>", not "<p/>" or "<p>".
     |
     |      The default implementation has no opinion about which tags are
     |      empty-element tags, so a tag will be presented as an
     |      empty-element tag if and only if it has no children.
     |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
     |      be left alone.
     |
     |      :param tag_name: The name of a markup tag.
     |
     |  initialize_soup(self, soup)
     |      The BeautifulSoup object has been initialized and is now
     |      being associated with the TreeBuilder.
     |
     |      :param soup: A BeautifulSoup object.
     |
     |  reset(self)
     |      Do any work necessary to reset the underlying parser
     |      for a new document.
     |
     |      By default, this does nothing.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from bs4.builder.TreeBuilder:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.builder.TreeBuilder:
     |
     |  ALTERNATE_NAMES = []
     |
     |  USE_DEFAULT = <object object>
     |
     |  is_xml = False
     |
     |  picklable = False

    class HTMLParserTreeBuilder(bs4.builder.HTMLTreeBuilder)
     |  HTMLParserTreeBuilder(parser_args=None, parser_kwargs=None, **kwargs)
     |
     |  A Beautiful soup `TreeBuilder` that uses the `HTMLParser` parser,
     |  found in the Python standard library.
     |
     |  Method resolution order:
     |      HTMLParserTreeBuilder
     |      bs4.builder.HTMLTreeBuilder
     |      bs4.builder.TreeBuilder
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __init__(self, parser_args=None, parser_kwargs=None, **kwargs)
     |      Constructor.
     |
     |      :param parser_args: Positional arguments to pass into
     |          the BeautifulSoupHTMLParser constructor, once it's
     |          invoked.
     |      :param parser_kwargs: Keyword arguments to pass into
     |          the BeautifulSoupHTMLParser constructor, once it's
     |          invoked.
     |      :param kwargs: Keyword arguments for the superclass constructor.
     |
     |  feed(self, markup)
     |      Run some incoming markup through some parsing process,
     |      populating the `BeautifulSoup` object in self.soup.
     |
     |  prepare_markup(self, markup, user_specified_encoding=None, document_declared_encoding=None, exclude_encodings=None)
     |      Run any preliminary steps necessary to make incoming markup
     |      acceptable to the parser.
     |
     |      :param markup: Some markup -- probably a bytestring.
     |      :param user_specified_encoding: The user asked to try this encoding.
     |      :param document_declared_encoding: The markup itself claims to be
     |          in this encoding.
     |      :param exclude_encodings: The user asked _not_ to try any of
     |          these encodings.
     |
     |      :yield: A series of 4-tuples:
     |       (markup, encoding, declared encoding,
     |        has undergone character replacement)
     |
     |       Each 4-tuple represents a strategy for converting the
     |       document to Unicode and parsing it. Each strategy will be tried
     |       in turn.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  NAME = 'html.parser'
     |
     |  TRACKS_LINE_NUMBERS = True
     |
     |  features = ['html.parser', 'html', 'strict']
     |
     |  is_xml = False
     |
     |  picklable = True
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from bs4.builder.HTMLTreeBuilder:
     |
     |  set_up_substitutions(self, tag)
     |      Replace the declared encoding in a <meta> tag with a placeholder,
     |      to be substituted when the tag is output to a string.
     |
     |      An HTML document may come in to Beautiful Soup as one
     |      encoding, but exit in a different encoding, and the <meta> tag
     |      needs to be changed to reflect this.
     |
     |      :param tag: A `Tag`
     |      :return: Whether or not a substitution was performed.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.builder.HTMLTreeBuilder:
     |
     |  DEFAULT_CDATA_LIST_ATTRIBUTES = {'*': ['class', 'accesskey', 'dropzone...
     |
     |  DEFAULT_PRESERVE_WHITESPACE_TAGS = {'pre', 'textarea'}
     |
     |  DEFAULT_STRING_CONTAINERS = {'rp': <class 'bs4.element.RubyParenthesis...
     |
     |  block_elements = {'address', 'article', 'aside', 'blockquote', 'canvas...
     |
     |  empty_element_tags = {'area', 'base', 'basefont', 'bgsound', 'br', 'co...
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from bs4.builder.TreeBuilder:
     |
     |  can_be_empty_element(self, tag_name)
     |      Might a tag with this name be an empty-element tag?
     |
     |      The final markup may or may not actually present this tag as
     |      self-closing.
     |
     |      For instance: an HTMLBuilder does not consider a <p> tag to be
     |      an empty-element tag (it's not in
     |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
     |      will be presented as "<p></p>", not "<p/>" or "<p>".
     |
     |      The default implementation has no opinion about which tags are
     |      empty-element tags, so a tag will be presented as an
     |      empty-element tag if and only if it has no children.
     |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
     |      be left alone.
     |
     |      :param tag_name: The name of a markup tag.
     |
     |  initialize_soup(self, soup)
     |      The BeautifulSoup object has been initialized and is now
     |      being associated with the TreeBuilder.
     |
     |      :param soup: A BeautifulSoup object.
     |
     |  reset(self)
     |      Do any work necessary to reset the underlying parser
     |      for a new document.
     |
     |      By default, this does nothing.
     |
     |  test_fragment_to_document(self, fragment)
     |      Wrap an HTML fragment to make it look like a document.
     |
     |      Different parsers do this differently. For instance, lxml
     |      introduces an empty <head> tag, and html5lib
     |      doesn't. Abstracting this away lets us write simple tests
     |      which run HTML fragments through the parser and compare the
     |      results against other HTML fragments.
     |
     |      This method should not be used outside of tests.
     |
     |      :param fragment: A string -- fragment of HTML.
     |      :return: A string -- a full HTML document.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from bs4.builder.TreeBuilder:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.builder.TreeBuilder:
     |
     |  ALTERNATE_NAMES = []
     |
     |  USE_DEFAULT = <object object>

    class HTMLTreeBuilder(TreeBuilder)
     |  HTMLTreeBuilder(multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |
     |  This TreeBuilder knows facts about HTML.
     |
     |  Such as which tags are empty-element tags.
     |
     |  Method resolution order:
     |      HTMLTreeBuilder
     |      TreeBuilder
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  set_up_substitutions(self, tag)
     |      Replace the declared encoding in a <meta> tag with a placeholder,
     |      to be substituted when the tag is output to a string.
     |
     |      An HTML document may come in to Beautiful Soup as one
     |      encoding, but exit in a different encoding, and the <meta> tag
     |      needs to be changed to reflect this.
     |
     |      :param tag: A `Tag`
     |      :return: Whether or not a substitution was performed.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  DEFAULT_CDATA_LIST_ATTRIBUTES = {'*': ['class', 'accesskey', 'dropzone...
     |
     |  DEFAULT_PRESERVE_WHITESPACE_TAGS = {'pre', 'textarea'}
     |
     |  DEFAULT_STRING_CONTAINERS = {'rp': <class 'bs4.element.RubyParenthesis...
     |
     |  block_elements = {'address', 'article', 'aside', 'blockquote', 'canvas...
     |
     |  empty_element_tags = {'area', 'base', 'basefont', 'bgsound', 'br', 'co...
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from TreeBuilder:
     |
     |  __init__(self, multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |      Constructor.
     |
     |      :param multi_valued_attributes: If this is set to None, the
     |       TreeBuilder will not turn any values for attributes like
     |       'class' into lists. Setting this to a dictionary will
     |       customize this behavior; look at DEFAULT_CDATA_LIST_ATTRIBUTES
     |       for an example.
     |
     |       Internally, these are called "CDATA list attributes", but that
     |       probably doesn't make sense to an end-user, so the argument name
     |       is `multi_valued_attributes`.
     |
     |      :param preserve_whitespace_tags: A list of tags to treat
     |       the way <pre> tags are treated in HTML. Tags in this list
     |       are immune from pretty-printing; their contents will always be
     |       output as-is.
     |
     |      :param string_containers: A dictionary mapping tag names to
     |      the classes that should be instantiated to contain the textual
     |      contents of those tags. The default is to use NavigableString
     |      for every tag, no matter what the name. You can override the
     |      default by changing DEFAULT_STRING_CONTAINERS.
     |
     |      :param store_line_numbers: If the parser keeps track of the
     |       line numbers and positions of the original markup, that
     |       information will, by default, be stored in each corresponding
     |       `Tag` object. You can turn this off by passing
     |       store_line_numbers=False. If the parser you're using doesn't
     |       keep track of this information, then setting store_line_numbers=True
     |       will do nothing.
     |
     |  can_be_empty_element(self, tag_name)
     |      Might a tag with this name be an empty-element tag?
     |
     |      The final markup may or may not actually present this tag as
     |      self-closing.
     |
     |      For instance: an HTMLBuilder does not consider a <p> tag to be
     |      an empty-element tag (it's not in
     |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
     |      will be presented as "<p></p>", not "<p/>" or "<p>".
     |
     |      The default implementation has no opinion about which tags are
     |      empty-element tags, so a tag will be presented as an
     |      empty-element tag if and only if it has no children.
     |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
     |      be left alone.
     |
     |      :param tag_name: The name of a markup tag.
     |
     |  feed(self, markup)
     |      Run some incoming markup through some parsing process,
     |      populating the `BeautifulSoup` object in self.soup.
     |
     |      This method is not implemented in TreeBuilder; it must be
     |      implemented in subclasses.
     |
     |      :return: None.
     |
     |  initialize_soup(self, soup)
     |      The BeautifulSoup object has been initialized and is now
     |      being associated with the TreeBuilder.
     |
     |      :param soup: A BeautifulSoup object.
     |
     |  prepare_markup(self, markup, user_specified_encoding=None, document_declared_encoding=None, exclude_encodings=None)
     |      Run any preliminary steps necessary to make incoming markup
     |      acceptable to the parser.
     |
     |      :param markup: Some markup -- probably a bytestring.
     |      :param user_specified_encoding: The user asked to try this encoding.
     |      :param document_declared_encoding: The markup itself claims to be
     |          in this encoding. NOTE: This argument is not used by the
     |          calling code and can probably be removed.
     |      :param exclude_encodings: The user asked _not_ to try any of
     |          these encodings.
     |
     |      :yield: A series of 4-tuples:
     |       (markup, encoding, declared encoding,
     |        has undergone character replacement)
     |
     |       Each 4-tuple represents a strategy for converting the
     |       document to Unicode and parsing it. Each strategy will be tried
     |       in turn.
     |
     |       By default, the only strategy is to parse the markup
     |       as-is. See `LXMLTreeBuilderForXML` and
     |       `HTMLParserTreeBuilder` for implementations that take into
     |       account the quirks of particular parsers.
     |
     |  reset(self)
     |      Do any work necessary to reset the underlying parser
     |      for a new document.
     |
     |      By default, this does nothing.
     |
     |  test_fragment_to_document(self, fragment)
     |      Wrap an HTML fragment to make it look like a document.
     |
     |      Different parsers do this differently. For instance, lxml
     |      introduces an empty <head> tag, and html5lib
     |      doesn't. Abstracting this away lets us write simple tests
     |      which run HTML fragments through the parser and compare the
     |      results against other HTML fragments.
     |
     |      This method should not be used outside of tests.
     |
     |      :param fragment: A string -- fragment of HTML.
     |      :return: A string -- a full HTML document.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from TreeBuilder:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from TreeBuilder:
     |
     |  ALTERNATE_NAMES = []
     |
     |  NAME = '[Unknown tree builder]'
     |
     |  TRACKS_LINE_NUMBERS = False
     |
     |  USE_DEFAULT = <object object>
     |
     |  features = []
     |
     |  is_xml = False
     |
     |  picklable = False

    class LXMLTreeBuilder(bs4.builder.HTMLTreeBuilder, LXMLTreeBuilderForXML)
     |  LXMLTreeBuilder(parser=None, empty_element_tags=None, **kwargs)
     |
     |  Method resolution order:
     |      LXMLTreeBuilder
     |      bs4.builder.HTMLTreeBuilder
     |      LXMLTreeBuilderForXML
     |      bs4.builder.TreeBuilder
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  default_parser(self, encoding)
     |      Find the default parser for the given encoding.
     |
     |      :param encoding: A string.
     |      :return: Either a parser object or a class, which
     |        will be instantiated with default arguments.
     |
     |  feed(self, markup)
     |      Run some incoming markup through some parsing process,
     |      populating the `BeautifulSoup` object in self.soup.
     |
     |      This method is not implemented in TreeBuilder; it must be
     |      implemented in subclasses.
     |
     |      :return: None.
     |
     |  test_fragment_to_document(self, fragment)
     |      See `TreeBuilder`.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  ALTERNATE_NAMES = ['lxml-html']
     |
     |  NAME = 'lxml'
     |
     |  features = ['lxml-html', 'lxml', 'html', 'fast', 'permissive']
     |
     |  is_xml = False
     |
     |  processing_instruction_class = <class 'bs4.element.ProcessingInstructi...
     |      A SGML processing instruction.
     |
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from bs4.builder.HTMLTreeBuilder:
     |
     |  set_up_substitutions(self, tag)
     |      Replace the declared encoding in a <meta> tag with a placeholder,
     |      to be substituted when the tag is output to a string.
     |
     |      An HTML document may come in to Beautiful Soup as one
     |      encoding, but exit in a different encoding, and the <meta> tag
     |      needs to be changed to reflect this.
     |
     |      :param tag: A `Tag`
     |      :return: Whether or not a substitution was performed.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.builder.HTMLTreeBuilder:
     |
     |  DEFAULT_CDATA_LIST_ATTRIBUTES = {'*': ['class', 'accesskey', 'dropzone...
     |
     |  DEFAULT_PRESERVE_WHITESPACE_TAGS = {'pre', 'textarea'}
     |
     |  DEFAULT_STRING_CONTAINERS = {'rp': <class 'bs4.element.RubyParenthesis...
     |
     |  block_elements = {'address', 'article', 'aside', 'blockquote', 'canvas...
     |
     |  empty_element_tags = {'area', 'base', 'basefont', 'bgsound', 'br', 'co...
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from LXMLTreeBuilderForXML:
     |
     |  __init__(self, parser=None, empty_element_tags=None, **kwargs)
     |      Constructor.
     |
     |      :param multi_valued_attributes: If this is set to None, the
     |       TreeBuilder will not turn any values for attributes like
     |       'class' into lists. Setting this to a dictionary will
     |       customize this behavior; look at DEFAULT_CDATA_LIST_ATTRIBUTES
     |       for an example.
     |
     |       Internally, these are called "CDATA list attributes", but that
     |       probably doesn't make sense to an end-user, so the argument name
     |       is `multi_valued_attributes`.
     |
     |      :param preserve_whitespace_tags: A list of tags to treat
     |       the way <pre> tags are treated in HTML. Tags in this list
     |       are immune from pretty-printing; their contents will always be
     |       output as-is.
     |
     |      :param string_containers: A dictionary mapping tag names to
     |      the classes that should be instantiated to contain the textual
     |      contents of those tags. The default is to use NavigableString
     |      for every tag, no matter what the name. You can override the
     |      default by changing DEFAULT_STRING_CONTAINERS.
     |
     |      :param store_line_numbers: If the parser keeps track of the
     |       line numbers and positions of the original markup, that
     |       information will, by default, be stored in each corresponding
     |       `Tag` object. You can turn this off by passing
     |       store_line_numbers=False. If the parser you're using doesn't
     |       keep track of this information, then setting store_line_numbers=True
     |       will do nothing.
     |
     |  close(self)
     |
     |  comment(self, content)
     |      Handle comments as Comment objects.
     |
     |  data(self, content)
     |
     |  doctype(self, name, pubid, system)
     |
     |  end(self, name)
     |
     |  initialize_soup(self, soup)
     |      Let the BeautifulSoup object know about the standard namespace
     |      mapping.
     |
     |      :param soup: A `BeautifulSoup`.
     |
     |  parser_for(self, encoding)
     |      Instantiate an appropriate parser for the given encoding.
     |
     |      :param encoding: A string.
     |      :return: A parser object such as an `etree.XMLParser`.
     |
     |  pi(self, target, data)
     |
     |  prepare_markup(self, markup, user_specified_encoding=None, exclude_encodings=None, document_declared_encoding=None)
     |      Run any preliminary steps necessary to make incoming markup
     |      acceptable to the parser.
     |
     |      lxml really wants to get a bytestring and convert it to
     |      Unicode itself. So instead of using UnicodeDammit to convert
     |      the bytestring to Unicode using different encodings, this
     |      implementation uses EncodingDetector to iterate over the
     |      encodings, and tell lxml to try to parse the document as each
     |      one in turn.
     |
     |      :param markup: Some markup -- hopefully a bytestring.
     |      :param user_specified_encoding: The user asked to try this encoding.
     |      :param document_declared_encoding: The markup itself claims to be
     |          in this encoding.
     |      :param exclude_encodings: The user asked _not_ to try any of
     |          these encodings.
     |
     |      :yield: A series of 4-tuples:
     |       (markup, encoding, declared encoding,
     |        has undergone character replacement)
     |
     |       Each 4-tuple represents a strategy for converting the
     |       document to Unicode and parsing it. Each strategy will be tried
     |       in turn.
     |
     |  start(self, name, attrs, nsmap={})
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from LXMLTreeBuilderForXML:
     |
     |  CHUNK_SIZE = 512
     |
     |  DEFAULT_NSMAPS = {'xml': 'http://www.w3.org/XML/1998/namespace'}
     |
     |  DEFAULT_NSMAPS_INVERTED = {'http://www.w3.org/XML/1998/namespace': 'xm...
     |
     |  DEFAULT_PARSER_CLASS = <class 'lxml.etree.XMLParser'>
     |      XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False,                  load_dtd=False, no_network=True, decompress=False, ns_clean=False,                  recover=False, schema: XMLSchema =None, huge_tree=False,                  remove_blank_text=False, resolve_entities='internal',                  remove_comments=False, remove_pis=False, strip_cdata=True,                  collect_ids=True, target=None, compact=True)
     |
     |      The XML parser.
     |
     |      Parsers can be supplied as additional argument to various parse
     |      functions of the lxml API.  A default parser is always available
     |      and can be replaced by a call to the global function
     |      'set_default_parser'.  New parsers can be created at any time
     |      without a major run-time overhead.
     |
     |      The keyword arguments in the constructor are mainly based on the
     |      libxml2 parser configuration.  A DTD will also be loaded if DTD
     |      validation or attribute default values are requested (unless you
     |      additionally provide an XMLSchema from which the default
     |      attributes can be read).
     |
     |      Available boolean keyword arguments:
     |
     |      - attribute_defaults - inject default attributes from DTD or XMLSchema
     |      - dtd_validation     - validate against a DTD referenced by the document
     |      - load_dtd           - use DTD for parsing
     |      - no_network         - prevent network access for related files (default: True)
     |      - decompress         - automatically decompress gzip input
     |                             (default: False, changed in lxml 6.0, disabling only affects libxml2 2.15+)
     |      - ns_clean           - clean up redundant namespace declarations
     |      - recover            - try hard to parse through broken XML
     |      - remove_blank_text  - discard blank text nodes that appear ignorable
     |      - remove_comments    - discard comments
     |      - remove_pis         - discard processing instructions
     |      - strip_cdata        - replace CDATA sections by normal text content (default: True)
     |      - compact            - save memory for short text content (default: True)
     |      - collect_ids        - use a hash table of XML IDs for fast access
     |                             (default: True, always True with DTD validation)
     |      - huge_tree          - disable security restrictions and support very deep trees
     |                             and very long text content
     |
     |      Other keyword arguments:
     |
     |      - resolve_entities - replace entities by their text value: False for keeping the
     |            entity references, True for resolving them, and 'internal' for resolving
     |            internal definitions only (no external file/URL access).
     |            The default used to be True and was changed to 'internal' in lxml 5.0.
     |      - encoding - override the document encoding (note: libiconv encoding name)
     |      - target   - a parser target object that will receive the parse events
     |      - schema   - an XMLSchema to validate against
     |
     |      Note that you should avoid sharing parsers between threads.  While this is
     |      not harmful, it is more efficient to use separate parsers.  This does not
     |      apply to the default parser.
     |
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from bs4.builder.TreeBuilder:
     |
     |  can_be_empty_element(self, tag_name)
     |      Might a tag with this name be an empty-element tag?
     |
     |      The final markup may or may not actually present this tag as
     |      self-closing.
     |
     |      For instance: an HTMLBuilder does not consider a <p> tag to be
     |      an empty-element tag (it's not in
     |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
     |      will be presented as "<p></p>", not "<p/>" or "<p>".
     |
     |      The default implementation has no opinion about which tags are
     |      empty-element tags, so a tag will be presented as an
     |      empty-element tag if and only if it has no children.
     |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
     |      be left alone.
     |
     |      :param tag_name: The name of a markup tag.
     |
     |  reset(self)
     |      Do any work necessary to reset the underlying parser
     |      for a new document.
     |
     |      By default, this does nothing.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from bs4.builder.TreeBuilder:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.builder.TreeBuilder:
     |
     |  TRACKS_LINE_NUMBERS = False
     |
     |  USE_DEFAULT = <object object>
     |
     |  picklable = False

    class LXMLTreeBuilderForXML(bs4.builder.TreeBuilder)
     |  LXMLTreeBuilderForXML(parser=None, empty_element_tags=None, **kwargs)
     |
     |  Method resolution order:
     |      LXMLTreeBuilderForXML
     |      bs4.builder.TreeBuilder
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __init__(self, parser=None, empty_element_tags=None, **kwargs)
     |      Constructor.
     |
     |      :param multi_valued_attributes: If this is set to None, the
     |       TreeBuilder will not turn any values for attributes like
     |       'class' into lists. Setting this to a dictionary will
     |       customize this behavior; look at DEFAULT_CDATA_LIST_ATTRIBUTES
     |       for an example.
     |
     |       Internally, these are called "CDATA list attributes", but that
     |       probably doesn't make sense to an end-user, so the argument name
     |       is `multi_valued_attributes`.
     |
     |      :param preserve_whitespace_tags: A list of tags to treat
     |       the way <pre> tags are treated in HTML. Tags in this list
     |       are immune from pretty-printing; their contents will always be
     |       output as-is.
     |
     |      :param string_containers: A dictionary mapping tag names to
     |      the classes that should be instantiated to contain the textual
     |      contents of those tags. The default is to use NavigableString
     |      for every tag, no matter what the name. You can override the
     |      default by changing DEFAULT_STRING_CONTAINERS.
     |
     |      :param store_line_numbers: If the parser keeps track of the
     |       line numbers and positions of the original markup, that
     |       information will, by default, be stored in each corresponding
     |       `Tag` object. You can turn this off by passing
     |       store_line_numbers=False. If the parser you're using doesn't
     |       keep track of this information, then setting store_line_numbers=True
     |       will do nothing.
     |
     |  close(self)
     |
     |  comment(self, content)
     |      Handle comments as Comment objects.
     |
     |  data(self, content)
     |
     |  default_parser(self, encoding)
     |      Find the default parser for the given encoding.
     |
     |      :param encoding: A string.
     |      :return: Either a parser object or a class, which
     |        will be instantiated with default arguments.
     |
     |  doctype(self, name, pubid, system)
     |
     |  end(self, name)
     |
     |  feed(self, markup)
     |      Run some incoming markup through some parsing process,
     |      populating the `BeautifulSoup` object in self.soup.
     |
     |      This method is not implemented in TreeBuilder; it must be
     |      implemented in subclasses.
     |
     |      :return: None.
     |
     |  initialize_soup(self, soup)
     |      Let the BeautifulSoup object know about the standard namespace
     |      mapping.
     |
     |      :param soup: A `BeautifulSoup`.
     |
     |  parser_for(self, encoding)
     |      Instantiate an appropriate parser for the given encoding.
     |
     |      :param encoding: A string.
     |      :return: A parser object such as an `etree.XMLParser`.
     |
     |  pi(self, target, data)
     |
     |  prepare_markup(self, markup, user_specified_encoding=None, exclude_encodings=None, document_declared_encoding=None)
     |      Run any preliminary steps necessary to make incoming markup
     |      acceptable to the parser.
     |
     |      lxml really wants to get a bytestring and convert it to
     |      Unicode itself. So instead of using UnicodeDammit to convert
     |      the bytestring to Unicode using different encodings, this
     |      implementation uses EncodingDetector to iterate over the
     |      encodings, and tell lxml to try to parse the document as each
     |      one in turn.
     |
     |      :param markup: Some markup -- hopefully a bytestring.
     |      :param user_specified_encoding: The user asked to try this encoding.
     |      :param document_declared_encoding: The markup itself claims to be
     |          in this encoding.
     |      :param exclude_encodings: The user asked _not_ to try any of
     |          these encodings.
     |
     |      :yield: A series of 4-tuples:
     |       (markup, encoding, declared encoding,
     |        has undergone character replacement)
     |
     |       Each 4-tuple represents a strategy for converting the
     |       document to Unicode and parsing it. Each strategy will be tried
     |       in turn.
     |
     |  start(self, name, attrs, nsmap={})
     |
     |  test_fragment_to_document(self, fragment)
     |      See `TreeBuilder`.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  ALTERNATE_NAMES = ['xml']
     |
     |  CHUNK_SIZE = 512
     |
     |  DEFAULT_NSMAPS = {'xml': 'http://www.w3.org/XML/1998/namespace'}
     |
     |  DEFAULT_NSMAPS_INVERTED = {'http://www.w3.org/XML/1998/namespace': 'xm...
     |
     |  DEFAULT_PARSER_CLASS = <class 'lxml.etree.XMLParser'>
     |      XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False,                  load_dtd=False, no_network=True, decompress=False, ns_clean=False,                  recover=False, schema: XMLSchema =None, huge_tree=False,                  remove_blank_text=False, resolve_entities='internal',                  remove_comments=False, remove_pis=False, strip_cdata=True,                  collect_ids=True, target=None, compact=True)
     |
     |      The XML parser.
     |
     |      Parsers can be supplied as additional argument to various parse
     |      functions of the lxml API.  A default parser is always available
     |      and can be replaced by a call to the global function
     |      'set_default_parser'.  New parsers can be created at any time
     |      without a major run-time overhead.
     |
     |      The keyword arguments in the constructor are mainly based on the
     |      libxml2 parser configuration.  A DTD will also be loaded if DTD
     |      validation or attribute default values are requested (unless you
     |      additionally provide an XMLSchema from which the default
     |      attributes can be read).
     |
     |      Available boolean keyword arguments:
     |
     |      - attribute_defaults - inject default attributes from DTD or XMLSchema
     |      - dtd_validation     - validate against a DTD referenced by the document
     |      - load_dtd           - use DTD for parsing
     |      - no_network         - prevent network access for related files (default: True)
     |      - decompress         - automatically decompress gzip input
     |                             (default: False, changed in lxml 6.0, disabling only affects libxml2 2.15+)
     |      - ns_clean           - clean up redundant namespace declarations
     |      - recover            - try hard to parse through broken XML
     |      - remove_blank_text  - discard blank text nodes that appear ignorable
     |      - remove_comments    - discard comments
     |      - remove_pis         - discard processing instructions
     |      - strip_cdata        - replace CDATA sections by normal text content (default: True)
     |      - compact            - save memory for short text content (default: True)
     |      - collect_ids        - use a hash table of XML IDs for fast access
     |                             (default: True, always True with DTD validation)
     |      - huge_tree          - disable security restrictions and support very deep trees
     |                             and very long text content
     |
     |      Other keyword arguments:
     |
     |      - resolve_entities - replace entities by their text value: False for keeping the
     |            entity references, True for resolving them, and 'internal' for resolving
     |            internal definitions only (no external file/URL access).
     |            The default used to be True and was changed to 'internal' in lxml 5.0.
     |      - encoding - override the document encoding (note: libiconv encoding name)
     |      - target   - a parser target object that will receive the parse events
     |      - schema   - an XMLSchema to validate against
     |
     |      Note that you should avoid sharing parsers between threads.  While this is
     |      not harmful, it is more efficient to use separate parsers.  This does not
     |      apply to the default parser.
     |
     |
     |  NAME = 'lxml-xml'
     |
     |  features = ['lxml-xml', 'lxml', 'xml', 'fast', 'permissive']
     |
     |  is_xml = True
     |
     |  processing_instruction_class = <class 'bs4.element.XMLProcessingInstru...
     |      An XML processing instruction.
     |
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from bs4.builder.TreeBuilder:
     |
     |  can_be_empty_element(self, tag_name)
     |      Might a tag with this name be an empty-element tag?
     |
     |      The final markup may or may not actually present this tag as
     |      self-closing.
     |
     |      For instance: an HTMLBuilder does not consider a <p> tag to be
     |      an empty-element tag (it's not in
     |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
     |      will be presented as "<p></p>", not "<p/>" or "<p>".
     |
     |      The default implementation has no opinion about which tags are
     |      empty-element tags, so a tag will be presented as an
     |      empty-element tag if and only if it has no children.
     |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
     |      be left alone.
     |
     |      :param tag_name: The name of a markup tag.
     |
     |  reset(self)
     |      Do any work necessary to reset the underlying parser
     |      for a new document.
     |
     |      By default, this does nothing.
     |
     |  set_up_substitutions(self, tag)
     |      Set up any substitutions that will need to be performed on
     |      a `Tag` when it's output as a string.
     |
     |      By default, this does nothing. See `HTMLTreeBuilder` for a
     |      case where this is used.
     |
     |      :param tag: A `Tag`
     |      :return: Whether or not a substitution was performed.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from bs4.builder.TreeBuilder:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.builder.TreeBuilder:
     |
     |  DEFAULT_CDATA_LIST_ATTRIBUTES = defaultdict(<class 'list'>, {})
     |
     |  DEFAULT_PRESERVE_WHITESPACE_TAGS = set()
     |
     |  DEFAULT_STRING_CONTAINERS = {}
     |
     |  TRACKS_LINE_NUMBERS = False
     |
     |  USE_DEFAULT = <object object>
     |
     |  empty_element_tags = None
     |
     |  picklable = False

    class SAXTreeBuilder(TreeBuilder)
     |  SAXTreeBuilder(multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |
     |  A Beautiful Soup treebuilder that listens for SAX events.
     |
     |  This is not currently used for anything, but it demonstrates
     |  how a simple TreeBuilder would work.
     |
     |  Method resolution order:
     |      SAXTreeBuilder
     |      TreeBuilder
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  characters(self, content)
     |
     |  close(self)
     |
     |  endDocument(self)
     |
     |  endElement(self, name)
     |
     |  endElementNS(self, nsTuple, nodeName)
     |
     |  endPrefixMapping(self, prefix)
     |
     |  feed(self, markup)
     |      Run some incoming markup through some parsing process,
     |      populating the `BeautifulSoup` object in self.soup.
     |
     |      This method is not implemented in TreeBuilder; it must be
     |      implemented in subclasses.
     |
     |      :return: None.
     |
     |  startDocument(self)
     |
     |  startElement(self, name, attrs)
     |
     |  startElementNS(self, nsTuple, nodeName, attrs)
     |
     |  startPrefixMapping(self, prefix, nodeValue)
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from TreeBuilder:
     |
     |  __init__(self, multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |      Constructor.
     |
     |      :param multi_valued_attributes: If this is set to None, the
     |       TreeBuilder will not turn any values for attributes like
     |       'class' into lists. Setting this to a dictionary will
     |       customize this behavior; look at DEFAULT_CDATA_LIST_ATTRIBUTES
     |       for an example.
     |
     |       Internally, these are called "CDATA list attributes", but that
     |       probably doesn't make sense to an end-user, so the argument name
     |       is `multi_valued_attributes`.
     |
     |      :param preserve_whitespace_tags: A list of tags to treat
     |       the way <pre> tags are treated in HTML. Tags in this list
     |       are immune from pretty-printing; their contents will always be
     |       output as-is.
     |
     |      :param string_containers: A dictionary mapping tag names to
     |      the classes that should be instantiated to contain the textual
     |      contents of those tags. The default is to use NavigableString
     |      for every tag, no matter what the name. You can override the
     |      default by changing DEFAULT_STRING_CONTAINERS.
     |
     |      :param store_line_numbers: If the parser keeps track of the
     |       line numbers and positions of the original markup, that
     |       information will, by default, be stored in each corresponding
     |       `Tag` object. You can turn this off by passing
     |       store_line_numbers=False. If the parser you're using doesn't
     |       keep track of this information, then setting store_line_numbers=True
     |       will do nothing.
     |
     |  can_be_empty_element(self, tag_name)
     |      Might a tag with this name be an empty-element tag?
     |
     |      The final markup may or may not actually present this tag as
     |      self-closing.
     |
     |      For instance: an HTMLBuilder does not consider a <p> tag to be
     |      an empty-element tag (it's not in
     |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
     |      will be presented as "<p></p>", not "<p/>" or "<p>".
     |
     |      The default implementation has no opinion about which tags are
     |      empty-element tags, so a tag will be presented as an
     |      empty-element tag if and only if it has no children.
     |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
     |      be left alone.
     |
     |      :param tag_name: The name of a markup tag.
     |
     |  initialize_soup(self, soup)
     |      The BeautifulSoup object has been initialized and is now
     |      being associated with the TreeBuilder.
     |
     |      :param soup: A BeautifulSoup object.
     |
     |  prepare_markup(self, markup, user_specified_encoding=None, document_declared_encoding=None, exclude_encodings=None)
     |      Run any preliminary steps necessary to make incoming markup
     |      acceptable to the parser.
     |
     |      :param markup: Some markup -- probably a bytestring.
     |      :param user_specified_encoding: The user asked to try this encoding.
     |      :param document_declared_encoding: The markup itself claims to be
     |          in this encoding. NOTE: This argument is not used by the
     |          calling code and can probably be removed.
     |      :param exclude_encodings: The user asked _not_ to try any of
     |          these encodings.
     |
     |      :yield: A series of 4-tuples:
     |       (markup, encoding, declared encoding,
     |        has undergone character replacement)
     |
     |       Each 4-tuple represents a strategy for converting the
     |       document to Unicode and parsing it. Each strategy will be tried
     |       in turn.
     |
     |       By default, the only strategy is to parse the markup
     |       as-is. See `LXMLTreeBuilderForXML` and
     |       `HTMLParserTreeBuilder` for implementations that take into
     |       account the quirks of particular parsers.
     |
     |  reset(self)
     |      Do any work necessary to reset the underlying parser
     |      for a new document.
     |
     |      By default, this does nothing.
     |
     |  set_up_substitutions(self, tag)
     |      Set up any substitutions that will need to be performed on
     |      a `Tag` when it's output as a string.
     |
     |      By default, this does nothing. See `HTMLTreeBuilder` for a
     |      case where this is used.
     |
     |      :param tag: A `Tag`
     |      :return: Whether or not a substitution was performed.
     |
     |  test_fragment_to_document(self, fragment)
     |      Wrap an HTML fragment to make it look like a document.
     |
     |      Different parsers do this differently. For instance, lxml
     |      introduces an empty <head> tag, and html5lib
     |      doesn't. Abstracting this away lets us write simple tests
     |      which run HTML fragments through the parser and compare the
     |      results against other HTML fragments.
     |
     |      This method should not be used outside of tests.
     |
     |      :param fragment: A string -- fragment of HTML.
     |      :return: A string -- a full HTML document.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from TreeBuilder:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from TreeBuilder:
     |
     |  ALTERNATE_NAMES = []
     |
     |  DEFAULT_CDATA_LIST_ATTRIBUTES = defaultdict(<class 'list'>, {})
     |
     |  DEFAULT_PRESERVE_WHITESPACE_TAGS = set()
     |
     |  DEFAULT_STRING_CONTAINERS = {}
     |
     |  NAME = '[Unknown tree builder]'
     |
     |  TRACKS_LINE_NUMBERS = False
     |
     |  USE_DEFAULT = <object object>
     |
     |  empty_element_tags = None
     |
     |  features = []
     |
     |  is_xml = False
     |
     |  picklable = False

    class TreeBuilder(builtins.object)
     |  TreeBuilder(multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |
     |  Turn a textual document into a Beautiful Soup object tree.
     |
     |  Methods defined here:
     |
     |  __init__(self, multi_valued_attributes=<object object at 0x000002349DC48CA0>, preserve_whitespace_tags=<object object at 0x000002349DC48CA0>, store_line_numbers=<object object at 0x000002349DC48CA0>, string_containers=<object object at 0x000002349DC48CA0>)
     |      Constructor.
     |
     |      :param multi_valued_attributes: If this is set to None, the
     |       TreeBuilder will not turn any values for attributes like
     |       'class' into lists. Setting this to a dictionary will
     |       customize this behavior; look at DEFAULT_CDATA_LIST_ATTRIBUTES
     |       for an example.
     |
     |       Internally, these are called "CDATA list attributes", but that
     |       probably doesn't make sense to an end-user, so the argument name
     |       is `multi_valued_attributes`.
     |
     |      :param preserve_whitespace_tags: A list of tags to treat
     |       the way <pre> tags are treated in HTML. Tags in this list
     |       are immune from pretty-printing; their contents will always be
     |       output as-is.
     |
     |      :param string_containers: A dictionary mapping tag names to
     |      the classes that should be instantiated to contain the textual
     |      contents of those tags. The default is to use NavigableString
     |      for every tag, no matter what the name. You can override the
     |      default by changing DEFAULT_STRING_CONTAINERS.
     |
     |      :param store_line_numbers: If the parser keeps track of the
     |       line numbers and positions of the original markup, that
     |       information will, by default, be stored in each corresponding
     |       `Tag` object. You can turn this off by passing
     |       store_line_numbers=False. If the parser you're using doesn't
     |       keep track of this information, then setting store_line_numbers=True
     |       will do nothing.
     |
     |  can_be_empty_element(self, tag_name)
     |      Might a tag with this name be an empty-element tag?
     |
     |      The final markup may or may not actually present this tag as
     |      self-closing.
     |
     |      For instance: an HTMLBuilder does not consider a <p> tag to be
     |      an empty-element tag (it's not in
     |      HTMLBuilder.empty_element_tags). This means an empty <p> tag
     |      will be presented as "<p></p>", not "<p/>" or "<p>".
     |
     |      The default implementation has no opinion about which tags are
     |      empty-element tags, so a tag will be presented as an
     |      empty-element tag if and only if it has no children.
     |      "<foo></foo>" will become "<foo/>", and "<foo>bar</foo>" will
     |      be left alone.
     |
     |      :param tag_name: The name of a markup tag.
     |
     |  feed(self, markup)
     |      Run some incoming markup through some parsing process,
     |      populating the `BeautifulSoup` object in self.soup.
     |
     |      This method is not implemented in TreeBuilder; it must be
     |      implemented in subclasses.
     |
     |      :return: None.
     |
     |  initialize_soup(self, soup)
     |      The BeautifulSoup object has been initialized and is now
     |      being associated with the TreeBuilder.
     |
     |      :param soup: A BeautifulSoup object.
     |
     |  prepare_markup(self, markup, user_specified_encoding=None, document_declared_encoding=None, exclude_encodings=None)
     |      Run any preliminary steps necessary to make incoming markup
     |      acceptable to the parser.
     |
     |      :param markup: Some markup -- probably a bytestring.
     |      :param user_specified_encoding: The user asked to try this encoding.
     |      :param document_declared_encoding: The markup itself claims to be
     |          in this encoding. NOTE: This argument is not used by the
     |          calling code and can probably be removed.
     |      :param exclude_encodings: The user asked _not_ to try any of
     |          these encodings.
     |
     |      :yield: A series of 4-tuples:
     |       (markup, encoding, declared encoding,
     |        has undergone character replacement)
     |
     |       Each 4-tuple represents a strategy for converting the
     |       document to Unicode and parsing it. Each strategy will be tried
     |       in turn.
     |
     |       By default, the only strategy is to parse the markup
     |       as-is. See `LXMLTreeBuilderForXML` and
     |       `HTMLParserTreeBuilder` for implementations that take into
     |       account the quirks of particular parsers.
     |
     |  reset(self)
     |      Do any work necessary to reset the underlying parser
     |      for a new document.
     |
     |      By default, this does nothing.
     |
     |  set_up_substitutions(self, tag)
     |      Set up any substitutions that will need to be performed on
     |      a `Tag` when it's output as a string.
     |
     |      By default, this does nothing. See `HTMLTreeBuilder` for a
     |      case where this is used.
     |
     |      :param tag: A `Tag`
     |      :return: Whether or not a substitution was performed.
     |
     |  test_fragment_to_document(self, fragment)
     |      Wrap an HTML fragment to make it look like a document.
     |
     |      Different parsers do this differently. For instance, lxml
     |      introduces an empty <head> tag, and html5lib
     |      doesn't. Abstracting this away lets us write simple tests
     |      which run HTML fragments through the parser and compare the
     |      results against other HTML fragments.
     |
     |      This method should not be used outside of tests.
     |
     |      :param fragment: A string -- fragment of HTML.
     |      :return: A string -- a full HTML document.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  ALTERNATE_NAMES = []
     |
     |  DEFAULT_CDATA_LIST_ATTRIBUTES = defaultdict(<class 'list'>, {})
     |
     |  DEFAULT_PRESERVE_WHITESPACE_TAGS = set()
     |
     |  DEFAULT_STRING_CONTAINERS = {}
     |
     |  NAME = '[Unknown tree builder]'
     |
     |  TRACKS_LINE_NUMBERS = False
     |
     |  USE_DEFAULT = <object object>
     |
     |  empty_element_tags = None
     |
     |  features = []
     |
     |  is_xml = False
     |
     |  picklable = False

    class TreeBuilderRegistry(builtins.object)
     |  A way of looking up TreeBuilder subclasses by their name or by desired
     |  features.
     |
     |  Methods defined here:
     |
     |  __init__(self)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |
     |  lookup(self, *features)
     |      Look up a TreeBuilder subclass with the desired features.
     |
     |      :param features: A list of features to look for. If none are
     |          provided, the most recently registered TreeBuilder subclass
     |          will be used.
     |      :return: A TreeBuilder subclass, or None if there's no
     |          registered subclass with all the requested features.
     |
     |  register(self, treebuilder_class)
     |      Register a treebuilder based on its advertised features.
     |
     |      :param treebuilder_class: A subclass of Treebuilder. its .features
     |         attribute should list its features.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object

DATA
    __all__ = ['HTMLTreeBuilder', 'SAXTreeBuilder', 'TreeBuilder', 'TreeBu...
    __license__ = 'MIT'

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\bs4\builder\__init__.py

beautifulsoup4.builder_registry
Python Library Documentation: TreeBuilderRegistry in module bs4.builder object

class TreeBuilderRegistry(builtins.object)
 |  A way of looking up TreeBuilder subclasses by their name or by desired
 |  features.
 |
 |  Methods defined here:
 |
 |  __init__(self)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  lookup(self, *features)
 |      Look up a TreeBuilder subclass with the desired features.
 |
 |      :param features: A list of features to look for. If none are
 |          provided, the most recently registered TreeBuilder subclass
 |          will be used.
 |      :return: A TreeBuilder subclass, or None if there's no
 |          registered subclass with all the requested features.
 |
 |  register(self, treebuilder_class)
 |      Register a treebuilder based on its advertised features.
 |
 |      :param treebuilder_class: A subclass of Treebuilder. its .features
 |         attribute should list its features.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
beautifulsoup4.css
Python Library Documentation: module bs4.css in bs4

NAME
    bs4.css - Integration code for CSS selectors using Soup Sieve (pypi: soupsieve).

CLASSES
    builtins.object
        CSS

    class CSS(builtins.object)
     |  CSS(tag, api=<module 'soupsieve' from 'C:\\Users\\Youse\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\soupsieve\\__init__.py'>)
     |
     |  A proxy object against the soupsieve library, to simplify its
     |  CSS selector API.
     |
     |  Acquire this object through the .css attribute on the
     |  BeautifulSoup object, or on the Tag you want to use as the
     |  starting point for a CSS selector.
     |
     |  The main advantage of doing this is that the tag to be selected
     |  against doesn't need to be explicitly specified in the function
     |  calls, since it's already scoped to a tag.
     |
     |  Methods defined here:
     |
     |  __init__(self, tag, api=<module 'soupsieve' from 'C:\\Users\\Youse\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\soupsieve\\__init__.py'>)
     |      Constructor.
     |
     |      You don't need to instantiate this class yourself; instead,
     |      access the .css attribute on the BeautifulSoup object, or on
     |      the Tag you want to use as the starting point for your CSS
     |      selector.
     |
     |      :param tag: All CSS selectors will use this as their starting
     |      point.
     |
     |      :param api: A plug-in replacement for the soupsieve module,
     |      designed mainly for use in tests.
     |
     |  closest(self, select, namespaces=None, flags=0, **kwargs)
     |      Find the Tag closest to this one that matches the given selector.
     |
     |      This uses the Soup Sieve library. For more information, see
     |      that library's documentation for the soupsieve.closest()
     |      method.
     |
     |      :param selector: A string containing a CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |          used in the CSS selector to namespace URIs. By default,
     |          Beautiful Soup will pass in the prefixes it encountered while
     |          parsing the document.
     |
     |      :param flags: Flags to be passed into Soup Sieve's
     |          soupsieve.closest() method.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |          soupsieve.closest() method.
     |
     |      :return: A Tag, or None if there is no match.
     |      :rtype: bs4.Tag
     |
     |  compile(self, select, namespaces=None, flags=0, **kwargs)
     |      Pre-compile a selector and return the compiled object.
     |
     |      :param selector: A CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |         used in the CSS selector to namespace URIs. By default,
     |         Beautiful Soup will use the prefixes it encountered while
     |         parsing the document.
     |
     |      :param flags: Flags to be passed into Soup Sieve's
     |          soupsieve.compile() method.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |         soupsieve.compile() method.
     |
     |      :return: A precompiled selector object.
     |      :rtype: soupsieve.SoupSieve
     |
     |  escape(self, ident)
     |      Escape a CSS identifier.
     |
     |      This is a simple wrapper around soupselect.escape(). See the
     |      documentation for that function for more information.
     |
     |  filter(self, select, namespaces=None, flags=0, **kwargs)
     |      Filter this Tag's direct children based on the given CSS selector.
     |
     |      This uses the Soup Sieve library. It works the same way as
     |      passing this Tag into that library's soupsieve.filter()
     |      method. More information, for more information see the
     |      documentation for soupsieve.filter().
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |          used in the CSS selector to namespace URIs. By default,
     |          Beautiful Soup will pass in the prefixes it encountered while
     |          parsing the document.
     |
     |      :param flags: Flags to be passed into Soup Sieve's
     |          soupsieve.filter() method.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |          soupsieve.filter() method.
     |
     |      :return: A ResultSet of Tag objects.
     |      :rtype: bs4.element.ResultSet
     |
     |  iselect(self, select, namespaces=None, limit=0, flags=0, **kwargs)
     |      Perform a CSS selection operation on the current Tag.
     |
     |      This uses the Soup Sieve library. For more information, see
     |      that library's documentation for the soupsieve.iselect()
     |      method. It is the same as select(), but it returns a generator
     |      instead of a list.
     |
     |      :param selector: A string containing a CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |          used in the CSS selector to namespace URIs. By default,
     |          Beautiful Soup will pass in the prefixes it encountered while
     |          parsing the document.
     |
     |      :param limit: After finding this number of results, stop looking.
     |
     |      :param flags: Flags to be passed into Soup Sieve's
     |          soupsieve.iselect() method.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |          soupsieve.iselect() method.
     |
     |      :return: A generator
     |      :rtype: types.GeneratorType
     |
     |  match(self, select, namespaces=None, flags=0, **kwargs)
     |      Check whether this Tag matches the given CSS selector.
     |
     |      This uses the Soup Sieve library. For more information, see
     |      that library's documentation for the soupsieve.match()
     |      method.
     |
     |      :param: a CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |          used in the CSS selector to namespace URIs. By default,
     |          Beautiful Soup will pass in the prefixes it encountered while
     |          parsing the document.
     |
     |      :param flags: Flags to be passed into Soup Sieve's
     |          soupsieve.match() method.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |          soupsieve.match() method.
     |
     |      :return: True if this Tag matches the selector; False otherwise.
     |      :rtype: bool
     |
     |  select(self, select, namespaces=None, limit=0, flags=0, **kwargs)
     |      Perform a CSS selection operation on the current Tag.
     |
     |      This uses the Soup Sieve library. For more information, see
     |      that library's documentation for the soupsieve.select()
     |      method.
     |
     |      :param selector: A string containing a CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |          used in the CSS selector to namespace URIs. By default,
     |          Beautiful Soup will pass in the prefixes it encountered while
     |          parsing the document.
     |
     |      :param limit: After finding this number of results, stop looking.
     |
     |      :param flags: Flags to be passed into Soup Sieve's
     |          soupsieve.select() method.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |          soupsieve.select() method.
     |
     |      :return: A ResultSet of Tag objects.
     |      :rtype: bs4.element.ResultSet
     |
     |  select_one(self, select, namespaces=None, flags=0, **kwargs)
     |      Perform a CSS selection operation on the current Tag and return the
     |      first result.
     |
     |      This uses the Soup Sieve library. For more information, see
     |      that library's documentation for the soupsieve.select_one()
     |      method.
     |
     |      :param selector: A CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |         used in the CSS selector to namespace URIs. By default,
     |         Beautiful Soup will use the prefixes it encountered while
     |         parsing the document.
     |
     |      :param flags: Flags to be passed into Soup Sieve's
     |          soupsieve.select_one() method.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |         soupsieve.select_one() method.
     |
     |      :return: A Tag, or None if the selector has no match.
     |      :rtype: bs4.element.Tag
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\bs4\css.py

beautifulsoup4.dammit
Python Library Documentation: module bs4.dammit in bs4

NAME
    bs4.dammit - Beautiful Soup bonus library: Unicode, Dammit

DESCRIPTION
    This library converts a bytestream to Unicode through any means
    necessary. It is heavily based on code from Mark Pilgrim's Universal
    Feed Parser. It works best on XML and HTML, but it does not rewrite the
    XML or HTML to reflect a new encoding; that's the tree builder's job.

CLASSES
    builtins.object
        EncodingDetector
        EntitySubstitution
        UnicodeDammit

    class EncodingDetector(builtins.object)
     |  EncodingDetector(markup, known_definite_encodings=None, is_html=False, exclude_encodings=None, user_encodings=None, override_encodings=None)
     |
     |  Suggests a number of possible encodings for a bytestring.
     |
     |  Order of precedence:
     |
     |  1. Encodings you specifically tell EncodingDetector to try first
     |  (the known_definite_encodings argument to the constructor).
     |
     |  2. An encoding determined by sniffing the document's byte-order mark.
     |
     |  3. Encodings you specifically tell EncodingDetector to try if
     |  byte-order mark sniffing fails (the user_encodings argument to the
     |  constructor).
     |
     |  4. An encoding declared within the bytestring itself, either in an
     |  XML declaration (if the bytestring is to be interpreted as an XML
     |  document), or in a <meta> tag (if the bytestring is to be
     |  interpreted as an HTML document.)
     |
     |  5. An encoding detected through textual analysis by chardet,
     |  cchardet, or a similar external library.
     |
     |  4. UTF-8.
     |
     |  5. Windows-1252.
     |
     |  Methods defined here:
     |
     |  __init__(self, markup, known_definite_encodings=None, is_html=False, exclude_encodings=None, user_encodings=None, override_encodings=None)
     |      Constructor.
     |
     |      :param markup: Some markup in an unknown encoding.
     |
     |      :param known_definite_encodings: When determining the encoding
     |          of `markup`, these encodings will be tried first, in
     |          order. In HTML terms, this corresponds to the "known
     |          definite encoding" step defined here:
     |          https://html.spec.whatwg.org/multipage/parsing.html#parsing-with-a-known-character-encoding
     |
     |      :param user_encodings: These encodings will be tried after the
     |          `known_definite_encodings` have been tried and failed, and
     |          after an attempt to sniff the encoding by looking at a
     |          byte order mark has failed. In HTML terms, this
     |          corresponds to the step "user has explicitly instructed
     |          the user agent to override the document's character
     |          encoding", defined here:
     |          https://html.spec.whatwg.org/multipage/parsing.html#determining-the-character-encoding
     |
     |      :param override_encodings: A deprecated alias for
     |          known_definite_encodings. Any encodings here will be tried
     |          immediately after the encodings in
     |          known_definite_encodings.
     |
     |      :param is_html: If True, this markup is considered to be
     |          HTML. Otherwise it's assumed to be XML.
     |
     |      :param exclude_encodings: These encodings will not be tried,
     |          even if they otherwise would be.
     |
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |
     |  find_declared_encoding(markup, is_html=False, search_entire_document=False)
     |      Given a document, tries to find its declared encoding.
     |
     |      An XML encoding is declared at the beginning of the document.
     |
     |      An HTML encoding is declared in a <meta> tag, hopefully near the
     |      beginning of the document.
     |
     |      :param markup: Some markup.
     |      :param is_html: If True, this markup is considered to be HTML. Otherwise
     |          it's assumed to be XML.
     |      :param search_entire_document: Since an encoding is supposed to declared near the beginning
     |          of the document, most of the time it's only necessary to search a few kilobytes of data.
     |          Set this to True to force this method to search the entire document.
     |
     |  strip_byte_order_mark(data)
     |      If a byte-order mark is present, strip it and return the encoding it implies.
     |
     |      :param data: Some markup.
     |      :return: A 2-tuple (modified data, implied encoding)
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |
     |  encodings
     |      Yield a number of encodings that might work for this markup.
     |
     |      :yield: A sequence of strings.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object

    class EntitySubstitution(builtins.object)
     |  The ability to substitute XML or HTML entities for certain characters.
     |
     |  Class methods defined here:
     |
     |  quoted_attribute_value(value)
     |      Make a value into a quoted XML attribute, possibly escaping it.
     |
     |      Most strings will be quoted using double quotes.
     |
     |       Bob's Bar -> "Bob's Bar"
     |
     |      If a string contains double quotes, it will be quoted using
     |      single quotes.
     |
     |       Welcome to "my bar" -> 'Welcome to "my bar"'
     |
     |      If a string contains both single and double quotes, the
     |      double quotes will be escaped, and the string will be quoted
     |      using double quotes.
     |
     |       Welcome to "Bob's Bar" -> "Welcome to &quot;Bob's bar&quot;
     |
     |  substitute_html(s)
     |      Replace certain Unicode characters with named HTML entities.
     |
     |      This differs from data.encode(encoding, 'xmlcharrefreplace')
     |      in that the goal is to make the result more readable (to those
     |      with ASCII displays) rather than to recover from
     |      errors. There's absolutely nothing wrong with a UTF-8 string
     |      containg a LATIN SMALL LETTER E WITH ACUTE, but replacing that
     |      character with "&eacute;" will make it more readable to some
     |      people.
     |
     |      :param s: A Unicode string.
     |
     |  substitute_xml(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign
     |        will become &lt;, the greater-than sign will become &gt;,
     |        and any ampersands will become &amp;. If you want ampersands
     |        that appear to be part of an entity definition to be left
     |        alone, use substitute_xml_containing_entities() instead.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  substitute_xml_containing_entities(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign will
     |        become &lt;, the greater-than sign will become &gt;, and any
     |        ampersands that are not part of an entity defition will
     |        become &amp;.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  AMPERSAND_OR_BRACKET = re.compile('([<>&])')
     |
     |  BARE_AMPERSAND_OR_BRACKET = re.compile('([<>]|&(?!#\\d+;|#x[0-9a-fA-F]...
     |
     |  CHARACTER_TO_HTML_ENTITY = {'\t': 'Tab', '\n': 'NewLine', '!': 'excl',...
     |
     |  CHARACTER_TO_HTML_ENTITY_RE = re.compile('(⋎|≏(?![̸])|⪐|ʼn|ⅇ|↾|ė|⨥|\xad...
     |
     |  CHARACTER_TO_XML_ENTITY = {'"': 'quot', '&': 'amp', "'": 'apos', '<': ...
     |
     |  HTML_ENTITY_TO_CHARACTER = {'AElig': 'Æ', 'AMP': '&', 'Aacute': 'Á', '...

    class UnicodeDammit(builtins.object)
     |  UnicodeDammit(markup, known_definite_encodings=[], smart_quotes_to=None, is_html=False, exclude_encodings=[], user_encodings=None, override_encodings=None)
     |
     |  A class for detecting the encoding of a *ML document and
     |  converting it to a Unicode string. If the source encoding is
     |  windows-1252, can replace MS smart quotes with their HTML or XML
     |  equivalents.
     |
     |  Methods defined here:
     |
     |  __init__(self, markup, known_definite_encodings=[], smart_quotes_to=None, is_html=False, exclude_encodings=[], user_encodings=None, override_encodings=None)
     |      Constructor.
     |
     |      :param markup: A bytestring representing markup in an unknown encoding.
     |
     |      :param known_definite_encodings: When determining the encoding
     |          of `markup`, these encodings will be tried first, in
     |          order. In HTML terms, this corresponds to the "known
     |          definite encoding" step defined here:
     |          https://html.spec.whatwg.org/multipage/parsing.html#parsing-with-a-known-character-encoding
     |
     |      :param user_encodings: These encodings will be tried after the
     |          `known_definite_encodings` have been tried and failed, and
     |          after an attempt to sniff the encoding by looking at a
     |          byte order mark has failed. In HTML terms, this
     |          corresponds to the step "user has explicitly instructed
     |          the user agent to override the document's character
     |          encoding", defined here:
     |          https://html.spec.whatwg.org/multipage/parsing.html#determining-the-character-encoding
     |
     |      :param override_encodings: A deprecated alias for
     |          known_definite_encodings. Any encodings here will be tried
     |          immediately after the encodings in
     |          known_definite_encodings.
     |
     |      :param smart_quotes_to: By default, Microsoft smart quotes will, like all other characters, be converted
     |         to Unicode characters. Setting this to 'ascii' will convert them to ASCII quotes instead.
     |         Setting it to 'xml' will convert them to XML entity references, and setting it to 'html'
     |         will convert them to HTML entity references.
     |      :param is_html: If True, this markup is considered to be HTML. Otherwise
     |          it's assumed to be XML.
     |      :param exclude_encodings: These encodings will not be considered, even
     |          if the sniffing code thinks they might make sense.
     |
     |  find_codec(self, charset)
     |      Convert the name of a character set to a codec name.
     |
     |      :param charset: The name of a character set.
     |      :return: The name of a codec.
     |
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |
     |  detwingle(in_bytes, main_encoding='utf8', embedded_encoding='windows-1252')
     |      Fix characters from one encoding embedded in some other encoding.
     |
     |      Currently the only situation supported is Windows-1252 (or its
     |      subset ISO-8859-1), embedded in UTF-8.
     |
     |      :param in_bytes: A bytestring that you suspect contains
     |          characters from multiple encodings. Note that this _must_
     |          be a bytestring. If you've already converted the document
     |          to Unicode, you're too late.
     |      :param main_encoding: The primary encoding of `in_bytes`.
     |      :param embedded_encoding: The encoding that was used to embed characters
     |          in the main document.
     |      :return: A bytestring in which `embedded_encoding`
     |        characters have been converted to their `main_encoding`
     |        equivalents.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |
     |  declared_html_encoding
     |      If the markup is an HTML document, returns the encoding declared _within_
     |      the document.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  CHARSET_ALIASES = {'macintosh': 'mac-roman', 'x-sjis': 'shift-jis'}
     |
     |  ENCODINGS_WITH_SMART_QUOTES = ['windows-1252', 'iso-8859-1', 'iso-8859...
     |
     |  FIRST_MULTIBYTE_MARKER = 194
     |
     |  LAST_MULTIBYTE_MARKER = 244
     |
     |  MS_CHARS = {b'\x80': ('euro', '20AC'), b'\x81': ' ', b'\x82': ('sbquo'...
     |
     |  MS_CHARS_TO_ASCII = {b'\x80': 'EUR', b'\x81': ' ', b'\x82': ',', b'\x8...
     |
     |  MULTIBYTE_MARKERS_AND_SIZES = [(194, 223, 2), (224, 239, 3), (240, 244...
     |
     |  WINDOWS_1252_TO_UTF8 = {128: b'\xe2\x82\xac', 130: b'\xe2\x80\x9a', 13...

FUNCTIONS
    chardet_dammit(s)

DATA
    __license__ = 'MIT'
    codepoint2name = {34: 'quot', 38: 'amp', 60: 'lt', 62: 'gt', 160: 'nbs...
    encoding_res = {<class 'bytes'>: {'html': re.compile(b'<\\s*meta[^>]+c...
    html5 = {'AElig': 'Æ', 'AElig;': 'Æ', 'AMP': '&', 'AMP;': '&', 'Aacute...
    html_meta = '<\\s*meta[^>]+charset\\s*=\\s*["\']?([^>]*?)[ /;\'">]'
    xml_encoding = '^\\s*<\\?.*encoding=[\'"](.*?)[\'"].*\\?>'

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\bs4\dammit.py

beautifulsoup4.element
Python Library Documentation: module bs4.element in bs4

NAME
    bs4.element - # Use of this source code is governed by the MIT license.

CLASSES
    builtins.list(builtins.object)
        ResultSet
    builtins.object
        PageElement
            NavigableString(builtins.str, PageElement)
                PreformattedString
                    CData
                    Comment
                    Declaration
                    Doctype
                    ProcessingInstruction
                        XMLProcessingInstruction
                RubyParenthesisString
                RubyTextString
                Script
                Stylesheet
                TemplateString
            Tag
        SoupStrainer
    builtins.str(builtins.object)
        AttributeValueWithCharsetSubstitution
            CharsetMetaAttributeValue
            ContentMetaAttributeValue
        NamespacedAttribute
        NavigableString(builtins.str, PageElement)
            PreformattedString
                CData
                Comment
                Declaration
                Doctype
                ProcessingInstruction
                    XMLProcessingInstruction
            RubyParenthesisString
            RubyTextString
            Script
            Stylesheet
            TemplateString

    class AttributeValueWithCharsetSubstitution(builtins.str)
     |  A stand-in object for a character encoding specified in HTML.
     |
     |  Method resolution order:
     |      AttributeValueWithCharsetSubstitution
     |      builtins.str
     |      builtins.object
     |
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(...)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  __new__(*args, **kwargs) class method of builtins.str
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.

    class CData(PreformattedString)
     |  CData(value)
     |
     |  A CDATA block.
     |
     |  Method resolution order:
     |      CData
     |      PreformattedString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Data and other attributes defined here:
     |
     |  PREFIX = '<![CDATA['
     |
     |  SUFFIX = ']]>'
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PreformattedString:
     |
     |  output_ready(self, formatter=None)
     |      Make this string ready for output by adding any subclass-specific
     |          prefix or suffix.
     |
     |      :param formatter: A Formatter object, or a string naming one
     |          of the standard formatters. The string will be passed into the
     |          Formatter, but only to trigger any side effects: the return
     |          value is ignored.
     |
     |      :return: The string, with any subclass-specific prefix and
     |         suffix added on.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class CharsetMetaAttributeValue(AttributeValueWithCharsetSubstitution)
     |  CharsetMetaAttributeValue(original_value)
     |
     |  A generic stand-in for the value of a meta tag's 'charset' attribute.
     |
     |  When Beautiful Soup parses the markup '<meta charset="utf8">', the
     |  value of the 'charset' attribute will be one of these objects.
     |
     |  Method resolution order:
     |      CharsetMetaAttributeValue
     |      AttributeValueWithCharsetSubstitution
     |      builtins.str
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  encode(self, encoding)
     |      When an HTML document is being encoded to a given encoding, the
     |      value of a meta tag's 'charset' is the name of the encoding.
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(cls, original_value)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from AttributeValueWithCharsetSubstitution:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(...)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.

    class Comment(PreformattedString)
     |  Comment(value)
     |
     |  An HTML or XML comment.
     |
     |  Method resolution order:
     |      Comment
     |      PreformattedString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Data and other attributes defined here:
     |
     |  PREFIX = '<!--'
     |
     |  SUFFIX = '-->'
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PreformattedString:
     |
     |  output_ready(self, formatter=None)
     |      Make this string ready for output by adding any subclass-specific
     |          prefix or suffix.
     |
     |      :param formatter: A Formatter object, or a string naming one
     |          of the standard formatters. The string will be passed into the
     |          Formatter, but only to trigger any side effects: the return
     |          value is ignored.
     |
     |      :return: The string, with any subclass-specific prefix and
     |         suffix added on.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class ContentMetaAttributeValue(AttributeValueWithCharsetSubstitution)
     |  ContentMetaAttributeValue(original_value)
     |
     |  A generic stand-in for the value of a meta tag's 'content' attribute.
     |
     |  When Beautiful Soup parses the markup:
     |   <meta http-equiv="content-type" content="text/html; charset=utf8">
     |
     |  The value of the 'content' attribute will be one of these objects.
     |
     |  Method resolution order:
     |      ContentMetaAttributeValue
     |      AttributeValueWithCharsetSubstitution
     |      builtins.str
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  encode(self, encoding)
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(cls, original_value)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  CHARSET_RE = re.compile('((^|;)\\s*charset=)([^;]*)', re.MULTILINE)
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from AttributeValueWithCharsetSubstitution:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(...)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.

    class Declaration(PreformattedString)
     |  Declaration(value)
     |
     |  An XML declaration.
     |
     |  Method resolution order:
     |      Declaration
     |      PreformattedString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Data and other attributes defined here:
     |
     |  PREFIX = '<?'
     |
     |  SUFFIX = '?>'
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PreformattedString:
     |
     |  output_ready(self, formatter=None)
     |      Make this string ready for output by adding any subclass-specific
     |          prefix or suffix.
     |
     |      :param formatter: A Formatter object, or a string naming one
     |          of the standard formatters. The string will be passed into the
     |          Formatter, but only to trigger any side effects: the return
     |          value is ignored.
     |
     |      :return: The string, with any subclass-specific prefix and
     |         suffix added on.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class Doctype(PreformattedString)
     |  Doctype(value)
     |
     |  A document type declaration.
     |
     |  Method resolution order:
     |      Doctype
     |      PreformattedString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Class methods defined here:
     |
     |  for_name_and_ids(name, pub_id, system_id)
     |      Generate an appropriate document type declaration for a given
     |      public ID and system ID.
     |
     |      :param name: The name of the document's root element, e.g. 'html'.
     |      :param pub_id: The Formal Public Identifier for this document type,
     |          e.g. '-//W3C//DTD XHTML 1.1//EN'
     |      :param system_id: The system identifier for this document type,
     |          e.g. 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'
     |
     |      :return: A Doctype.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  PREFIX = '<!DOCTYPE '
     |
     |  SUFFIX = '>\n'
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PreformattedString:
     |
     |  output_ready(self, formatter=None)
     |      Make this string ready for output by adding any subclass-specific
     |          prefix or suffix.
     |
     |      :param formatter: A Formatter object, or a string naming one
     |          of the standard formatters. The string will be passed into the
     |          Formatter, but only to trigger any side effects: the return
     |          value is ignored.
     |
     |      :return: The string, with any subclass-specific prefix and
     |         suffix added on.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class NamespacedAttribute(builtins.str)
     |  NamespacedAttribute(prefix, name=None, namespace=None)
     |
     |  A namespaced string (e.g. 'xml:lang') that remembers the namespace
     |  ('xml') and the name ('lang') that were used to create it.
     |
     |  Method resolution order:
     |      NamespacedAttribute
     |      builtins.str
     |      builtins.object
     |
     |  Static methods defined here:
     |
     |  __new__(cls, prefix, name=None, namespace=None)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(...)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.

    class NavigableString(builtins.str, PageElement)
     |  NavigableString(value)
     |
     |  A Python Unicode string that is part of a parse tree.
     |
     |  When Beautiful Soup parses the markup <b>penguin</b>, it will
     |  create a NavigableString for the string "penguin".
     |
     |  Method resolution order:
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  output_ready(self, formatter='minimal')
     |      Run the string through the provided formatter.
     |
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  PREFIX = ''
     |
     |  SUFFIX = ''
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class PageElement(builtins.object)
     |  Contains the navigational information for some part of the page:
     |  that is, its current location in the parse tree.
     |
     |  NavigableString, Tag, etc. are all subclasses of PageElement.
     |
     |  Methods defined here:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class PreformattedString(NavigableString)
     |  PreformattedString(value)
     |
     |  A NavigableString not subject to the normal formatting rules.
     |
     |  This is an abstract class used for special kinds of strings such
     |  as comments (the Comment class) and CDATA blocks (the CData
     |  class).
     |
     |  Method resolution order:
     |      PreformattedString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  output_ready(self, formatter=None)
     |      Make this string ready for output by adding any subclass-specific
     |          prefix or suffix.
     |
     |      :param formatter: A Formatter object, or a string naming one
     |          of the standard formatters. The string will be passed into the
     |          Formatter, but only to trigger any side effects: the return
     |          value is ignored.
     |
     |      :return: The string, with any subclass-specific prefix and
     |         suffix added on.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  PREFIX = ''
     |
     |  SUFFIX = ''
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class ProcessingInstruction(PreformattedString)
     |  ProcessingInstruction(value)
     |
     |  A SGML processing instruction.
     |
     |  Method resolution order:
     |      ProcessingInstruction
     |      PreformattedString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Data and other attributes defined here:
     |
     |  PREFIX = '<?'
     |
     |  SUFFIX = '>'
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PreformattedString:
     |
     |  output_ready(self, formatter=None)
     |      Make this string ready for output by adding any subclass-specific
     |          prefix or suffix.
     |
     |      :param formatter: A Formatter object, or a string naming one
     |          of the standard formatters. The string will be passed into the
     |          Formatter, but only to trigger any side effects: the return
     |          value is ignored.
     |
     |      :return: The string, with any subclass-specific prefix and
     |         suffix added on.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class ResultSet(builtins.list)
     |  ResultSet(source, result=())
     |
     |  A ResultSet is just a list that keeps track of the SoupStrainer
     |  that created it.
     |
     |  Method resolution order:
     |      ResultSet
     |      builtins.list
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __getattr__(self, key)
     |      Raise a helpful exception to explain a common code fix.
     |
     |  __init__(self, source, result=())
     |      Constructor.
     |
     |      :param source: A SoupStrainer.
     |      :param result: A list of PageElements.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.list:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __delitem__(self, key, /)
     |      Delete self[key].
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getitem__(self, index, /)
     |      Return self[index].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __iadd__(self, value, /)
     |      Implement self+=value.
     |
     |  __imul__(self, value, /)
     |      Implement self*=value.
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __reversed__(self, /)
     |      Return a reverse iterator over the list.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __setitem__(self, key, value, /)
     |      Set self[key] to value.
     |
     |  __sizeof__(self, /)
     |      Return the size of the list in memory, in bytes.
     |
     |  append(self, object, /)
     |      Append object to the end of the list.
     |
     |  clear(self, /)
     |      Remove all items from list.
     |
     |  copy(self, /)
     |      Return a shallow copy of the list.
     |
     |  count(self, value, /)
     |      Return number of occurrences of value.
     |
     |  extend(self, iterable, /)
     |      Extend list by appending elements from the iterable.
     |
     |  index(self, value, start=0, stop=9223372036854775807, /)
     |      Return first index of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  insert(self, index, object, /)
     |      Insert object before index.
     |
     |  pop(self, index=-1, /)
     |      Remove and return item at index (default last).
     |
     |      Raises IndexError if list is empty or index is out of range.
     |
     |  remove(self, value, /)
     |      Remove first occurrence of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  reverse(self, /)
     |      Reverse *IN PLACE*.
     |
     |  sort(self, /, *, key=None, reverse=False)
     |      Sort the list in ascending order and return None.
     |
     |      The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
     |      order of two equal elements is maintained).
     |
     |      If a key function is given, apply it once to each list item and sort them,
     |      ascending or descending, according to their function values.
     |
     |      The reverse flag can be set to sort in descending order.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.list:
     |
     |  __class_getitem__(...)
     |      See PEP 585
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.list:
     |
     |  __new__(*args, **kwargs) class method of builtins.list
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from builtins.list:
     |
     |  __hash__ = None

    class RubyParenthesisString(NavigableString)
     |  RubyParenthesisString(value)
     |
     |  A NavigableString representing the contents of the <rp> HTML
     |  element.
     |
     |  https://dev.w3.org/html5/spec-LC/text-level-semantics.html#the-rp-element
     |
     |  Method resolution order:
     |      RubyParenthesisString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  output_ready(self, formatter='minimal')
     |      Run the string through the provided formatter.
     |
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from NavigableString:
     |
     |  PREFIX = ''
     |
     |  SUFFIX = ''
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class RubyTextString(NavigableString)
     |  RubyTextString(value)
     |
     |  A NavigableString representing the contents of the <rt> HTML
     |  element.
     |
     |  https://dev.w3.org/html5/spec-LC/text-level-semantics.html#the-rt-element
     |
     |  Can be used to distinguish such strings from the strings they're
     |  annotating.
     |
     |  Method resolution order:
     |      RubyTextString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  output_ready(self, formatter='minimal')
     |      Run the string through the provided formatter.
     |
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from NavigableString:
     |
     |  PREFIX = ''
     |
     |  SUFFIX = ''
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class Script(NavigableString)
     |  Script(value)
     |
     |  A NavigableString representing an executable script (probably
     |  Javascript).
     |
     |  Used to distinguish executable code from textual content.
     |
     |  Method resolution order:
     |      Script
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  output_ready(self, formatter='minimal')
     |      Run the string through the provided formatter.
     |
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from NavigableString:
     |
     |  PREFIX = ''
     |
     |  SUFFIX = ''
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class SoupStrainer(builtins.object)
     |  SoupStrainer(name=None, attrs={}, string=None, **kwargs)
     |
     |  Encapsulates a number of ways of matching a markup element (tag or
     |  string).
     |
     |  This is primarily used to underpin the find_* methods, but you can
     |  create one yourself and pass it in as `parse_only` to the
     |  `BeautifulSoup` constructor, to parse a subset of a large
     |  document.
     |
     |  Methods defined here:
     |
     |  __init__(self, name=None, attrs={}, string=None, **kwargs)
     |      Constructor.
     |
     |      The SoupStrainer constructor takes the same arguments passed
     |      into the find_* methods. See the online documentation for
     |      detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |  __str__(self)
     |      A human-readable representation of this SoupStrainer.
     |
     |  search(self, markup)
     |      Find all items in `markup` that match this SoupStrainer.
     |
     |      Used by the core _find_all() method, which is ultimately
     |      called by all find_* methods.
     |
     |      :param markup: A PageElement or a list of them.
     |
     |  searchTag = search_tag(self, markup_name=None, markup_attrs={})
     |
     |  search_tag(self, markup_name=None, markup_attrs={})
     |      Check whether a Tag with the given name and attributes would
     |      match this SoupStrainer.
     |
     |      Used prospectively to decide whether to even bother creating a Tag
     |      object.
     |
     |      :param markup_name: A tag name as found in some markup.
     |      :param markup_attrs: A dictionary of attributes as found in some markup.
     |
     |      :return: True if the prospective tag would match this SoupStrainer;
     |          False otherwise.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object

    class Stylesheet(NavigableString)
     |  Stylesheet(value)
     |
     |  A NavigableString representing an stylesheet (probably
     |  CSS).
     |
     |  Used to distinguish embedded stylesheets from textual content.
     |
     |  Method resolution order:
     |      Stylesheet
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  output_ready(self, formatter='minimal')
     |      Run the string through the provided formatter.
     |
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from NavigableString:
     |
     |  PREFIX = ''
     |
     |  SUFFIX = ''
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class Tag(PageElement)
     |  Tag(parser=None, builder=None, name=None, namespace=None, prefix=None, attrs=None, parent=None, previous=None, is_xml=None, sourceline=None, sourcepos=None, can_be_empty_element=None, cdata_list_attributes=None, preserve_whitespace_tags=None, interesting_string_types=None, namespaces=None)
     |
     |  Represents an HTML or XML tag that is part of a parse tree, along
     |  with its attributes and contents.
     |
     |  When Beautiful Soup parses the markup <b>penguin</b>, it will
     |  create a Tag object representing the <b> tag.
     |
     |  Method resolution order:
     |      Tag
     |      PageElement
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __bool__(self)
     |      A tag is non-None even if it has no contents.
     |
     |  __call__(self, *args, **kwargs)
     |      Calling a Tag like a function is the same as calling its
     |      find_all() method. Eg. tag('a') returns a list of all the A tags
     |      found within this tag.
     |
     |  __contains__(self, x)
     |
     |  __copy__(self)
     |      A copy of a Tag must always be a deep copy, because a Tag's
     |      children can only have one parent at a time.
     |
     |  __deepcopy__(self, memo, recursive=True)
     |      A deepcopy of a Tag is a new Tag, unconnected to the parse tree.
     |      Its contents are a copy of the old Tag's contents.
     |
     |  __delitem__(self, key)
     |      Deleting tag[key] deletes all 'key' attributes for the tag.
     |
     |  __eq__(self, other)
     |      Returns true iff this Tag has the same name, the same attributes,
     |      and the same contents (recursively) as `other`.
     |
     |  __getattr__(self, tag)
     |      Calling tag.subtag is the same as calling tag.find(name="subtag")
     |
     |  __getitem__(self, key)
     |      tag[key] returns the value of the 'key' attribute for the Tag,
     |      and throws an exception if it's not there.
     |
     |  __hash__(self)
     |      Return hash(self).
     |
     |  __init__(self, parser=None, builder=None, name=None, namespace=None, prefix=None, attrs=None, parent=None, previous=None, is_xml=None, sourceline=None, sourcepos=None, can_be_empty_element=None, cdata_list_attributes=None, preserve_whitespace_tags=None, interesting_string_types=None, namespaces=None)
     |      Basic constructor.
     |
     |      :param parser: A BeautifulSoup object.
     |      :param builder: A TreeBuilder.
     |      :param name: The name of the tag.
     |      :param namespace: The URI of this Tag's XML namespace, if any.
     |      :param prefix: The prefix for this Tag's XML namespace, if any.
     |      :param attrs: A dictionary of this Tag's attribute values.
     |      :param parent: The PageElement to use as this Tag's parent.
     |      :param previous: The PageElement that was parsed immediately before
     |          this tag.
     |      :param is_xml: If True, this is an XML tag. Otherwise, this is an
     |          HTML tag.
     |      :param sourceline: The line number where this tag was found in its
     |          source document.
     |      :param sourcepos: The character position within `sourceline` where this
     |          tag was found.
     |      :param can_be_empty_element: If True, this tag should be
     |          represented as <tag/>. If False, this tag should be represented
     |          as <tag></tag>.
     |      :param cdata_list_attributes: A list of attributes whose values should
     |          be treated as CDATA if they ever show up on this tag.
     |      :param preserve_whitespace_tags: A list of tag names whose contents
     |          should have their whitespace preserved.
     |      :param interesting_string_types: This is a NavigableString
     |          subclass or a tuple of them. When iterating over this
     |          Tag's strings in methods like Tag.strings or Tag.get_text,
     |          these are the types of strings that are interesting enough
     |          to be considered. The default is to consider
     |          NavigableString and CData the only interesting string
     |          subtypes.
     |      :param namespaces: A dictionary mapping currently active
     |          namespace prefixes to URIs. This can be used later to
     |          construct CSS selectors.
     |
     |  __iter__(self)
     |      Iterating over a Tag iterates over its contents.
     |
     |  __len__(self)
     |      The length of a Tag is the length of its list of contents.
     |
     |  __ne__(self, other)
     |      Returns true iff this Tag is not identical to `other`,
     |      as defined in __eq__.
     |
     |  __repr__ = __unicode__(self)
     |
     |  __setitem__(self, key, value)
     |      Setting tag[key] sets the value of the 'key' attribute for the
     |      tag.
     |
     |  __str__ = __unicode__(self)
     |
     |  __unicode__(self)
     |      Renders this PageElement as a Unicode string.
     |
     |  childGenerator(self)
     |      Deprecated generator.
     |
     |  clear(self, decompose=False)
     |      Wipe out all children of this PageElement by calling extract()
     |         on them.
     |
     |      :param decompose: If this is True, decompose() (a more
     |          destructive method) will be called instead of extract().
     |
     |  decode(self, indent_level=None, eventual_encoding='utf-8', formatter='minimal', iterator=None)
     |
     |  decode_contents(self, indent_level=None, eventual_encoding='utf-8', formatter='minimal')
     |      Renders the contents of this tag as a Unicode string.
     |
     |      :param indent_level: Each line of the rendering will be
     |         indented this many levels. (The formatter decides what a
     |         'level' means in terms of spaces or other characters
     |         output.) Used internally in recursive calls while
     |         pretty-printing.
     |
     |      :param eventual_encoding: The tag is destined to be
     |         encoded into this encoding. decode_contents() is _not_
     |         responsible for performing that encoding. This information
     |         is passed in so that it can be substituted in if the
     |         document contains a <META> tag that mentions the document's
     |         encoding.
     |
     |      :param formatter: A Formatter object, or a string naming one of
     |          the standard Formatters.
     |
     |  decompose(self)
     |      Recursively destroys this PageElement and its children.
     |
     |      This element will be removed from the tree and wiped out; so
     |      will everything beneath it.
     |
     |      The behavior of a decomposed PageElement is undefined and you
     |      should never use one for anything, but if you need to _check_
     |      whether an element has been decomposed, you can use the
     |      `decomposed` property.
     |
     |  encode(self, encoding='utf-8', indent_level=None, formatter='minimal', errors='xmlcharrefreplace')
     |      Render a bytestring representation of this PageElement and its
     |      contents.
     |
     |      :param encoding: The destination encoding.
     |      :param indent_level: Each line of the rendering will be
     |         indented this many levels. (The formatter decides what a
     |         'level' means in terms of spaces or other characters
     |         output.) Used internally in recursive calls while
     |         pretty-printing.
     |      :param formatter: A Formatter object, or a string naming one of
     |          the standard formatters.
     |      :param errors: An error handling strategy such as
     |          'xmlcharrefreplace'. This value is passed along into
     |          encode() and its value should be one of the constants
     |          defined by Python.
     |      :return: A bytestring.
     |
     |  encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal')
     |      Renders the contents of this PageElement as a bytestring.
     |
     |      :param indent_level: Each line of the rendering will be
     |         indented this many levels. (The formatter decides what a
     |         'level' means in terms of spaces or other characters
     |         output.) Used internally in recursive calls while
     |         pretty-printing.
     |
     |      :param eventual_encoding: The bytestring will be in this encoding.
     |
     |      :param formatter: A Formatter object, or a string naming one of
     |          the standard Formatters.
     |
     |      :return: A bytestring.
     |
     |  find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
     |      Look in the children of this PageElement and find the first
     |      PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param recursive: If this is True, find() will perform a
     |          recursive search of this PageElement's children. Otherwise,
     |          only the direct children will be considered.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  findAll = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
     |
     |  findChild = find(self, name=None, attrs={}, recursive=True, string=None, **kwargs)
     |
     |  findChildren = find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
     |
     |  find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs)
     |      Look in the children of this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param recursive: If this is True, find_all() will perform a
     |          recursive search of this PageElement's children. Otherwise,
     |          only the direct children will be considered.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  get(self, key, default=None)
     |      Returns the value of the 'key' attribute for the tag, or
     |      the value given for 'default' if it doesn't have that
     |      attribute.
     |
     |  get_attribute_list(self, key, default=None)
     |      The same as get(), but always returns a list.
     |
     |      :param key: The attribute to look for.
     |      :param default: Use this value if the attribute is not present
     |          on this PageElement.
     |      :return: A list of values, probably containing only a single
     |          value.
     |
     |  has_attr(self, key)
     |      Does this PageElement have an attribute with the given name?
     |
     |  has_key(self, key)
     |      Deprecated method. This was kind of misleading because has_key()
     |      (attributes) was different from __in__ (contents).
     |
     |      has_key() is gone in Python 3, anyway.
     |
     |  index(self, element)
     |      Find the index of a child by identity, not value.
     |
     |      Avoids issues with tag.contents.index(element) getting the
     |      index of equal elements.
     |
     |      :param element: Look for this PageElement in `self.contents`.
     |
     |  prettify(self, encoding=None, formatter='minimal')
     |      Pretty-print this PageElement as a string.
     |
     |      :param encoding: The eventual encoding of the string. If this is None,
     |          a Unicode string will be returned.
     |      :param formatter: A Formatter object, or a string naming one of
     |          the standard formatters.
     |      :return: A Unicode string (if encoding==None) or a bytestring
     |          (otherwise).
     |
     |  recursiveChildGenerator(self)
     |      Deprecated generator.
     |
     |  renderContents(self, encoding='utf-8', prettyPrint=False, indentLevel=0)
     |      Deprecated method for BS3 compatibility.
     |
     |  select(self, selector, namespaces=None, limit=None, **kwargs)
     |      Perform a CSS selection operation on the current element.
     |
     |      This uses the SoupSieve library.
     |
     |      :param selector: A string containing a CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |         used in the CSS selector to namespace URIs. By default,
     |         Beautiful Soup will use the prefixes it encountered while
     |         parsing the document.
     |
     |      :param limit: After finding this number of results, stop looking.
     |
     |      :param kwargs: Keyword arguments to be passed into SoupSieve's
     |         soupsieve.select() method.
     |
     |      :return: A ResultSet of Tags.
     |      :rtype: bs4.element.ResultSet
     |
     |  select_one(self, selector, namespaces=None, **kwargs)
     |      Perform a CSS selection operation on the current element.
     |
     |      :param selector: A CSS selector.
     |
     |      :param namespaces: A dictionary mapping namespace prefixes
     |         used in the CSS selector to namespace URIs. By default,
     |         Beautiful Soup will use the prefixes it encountered while
     |         parsing the document.
     |
     |      :param kwargs: Keyword arguments to be passed into Soup Sieve's
     |         soupsieve.select() method.
     |
     |      :return: A Tag.
     |      :rtype: bs4.element.Tag
     |
     |  smooth(self)
     |      Smooth out this element's children by consolidating consecutive
     |      strings.
     |
     |      This makes pretty-printed output look more natural following a
     |      lot of operations that modified the tree.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |
     |  children
     |      Iterate over all direct children of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  css
     |      Return an interface to the CSS selector API.
     |
     |  descendants
     |      Iterate over all children of this PageElement in a
     |      breadth-first sequence.
     |
     |      :yield: A sequence of PageElements.
     |
     |  isSelfClosing
     |      Is this tag an empty-element tag? (aka a self-closing tag)
     |
     |      A tag that has contents is never an empty-element tag.
     |
     |      A tag that has no contents may or may not be an empty-element
     |      tag. It depends on the builder used to create the tag. If the
     |      builder has a designated list of empty-element tags, then only
     |      a tag whose name shows up in that list is considered an
     |      empty-element tag.
     |
     |      If the builder has no designated list of empty-element tags,
     |      then any tag with no contents is an empty-element tag.
     |
     |  is_empty_element
     |      Is this tag an empty-element tag? (aka a self-closing tag)
     |
     |      A tag that has contents is never an empty-element tag.
     |
     |      A tag that has no contents may or may not be an empty-element
     |      tag. It depends on the builder used to create the tag. If the
     |      builder has a designated list of empty-element tags, then only
     |      a tag whose name shows up in that list is considered an
     |      empty-element tag.
     |
     |      If the builder has no designated list of empty-element tags,
     |      then any tag with no contents is an empty-element tag.
     |
     |  self_and_descendants
     |      Iterate over this PageElement and its children in a
     |      breadth-first sequence.
     |
     |      :yield: A sequence of PageElements.
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. Any strings of
     |          a subclass not found in this list will be ignored. By
     |          default, the subclasses considered are the ones found in
     |          self.interesting_string_types. If that's not specified,
     |          only NavigableString and CData objects will be
     |          considered. That means no comments, processing
     |          instructions, etc.
     |
     |      :yield: A sequence of strings.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  parserClass
     |
     |  string
     |      Convenience property to get the single string within this
     |      PageElement.
     |
     |      TODO It might make sense to have NavigableString.string return
     |      itself.
     |
     |      :return: If this element has a single string child, return
     |       value is that string. If this element has one child tag,
     |       return value is the 'string' attribute of the child tag,
     |       recursively. If this element is itself a string, has no
     |       children, or has more than one child, return value is None.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  DEFAULT_INTERESTING_STRING_TYPES = (<class 'bs4.element.NavigableStrin...
     |
     |  EMPTY_ELEMENT_EVENT = <object object>
     |
     |  END_ELEMENT_EVENT = <object object>
     |
     |  START_ELEMENT_EVENT = <object object>
     |
     |  STRING_ELEMENT_EVENT = <object object>
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class TemplateString(NavigableString)
     |  TemplateString(value)
     |
     |  A NavigableString representing a string found inside an HTML
     |  template embedded in a larger document.
     |
     |  Used to distinguish such strings from the main body of the document.
     |
     |  Method resolution order:
     |      TemplateString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  output_ready(self, formatter='minimal')
     |      Run the string through the provided formatter.
     |
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from NavigableString:
     |
     |  PREFIX = ''
     |
     |  SUFFIX = ''
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

    class XMLProcessingInstruction(ProcessingInstruction)
     |  XMLProcessingInstruction(value)
     |
     |  An XML processing instruction.
     |
     |  Method resolution order:
     |      XMLProcessingInstruction
     |      ProcessingInstruction
     |      PreformattedString
     |      NavigableString
     |      builtins.str
     |      PageElement
     |      builtins.object
     |
     |  Data and other attributes defined here:
     |
     |  PREFIX = '<?'
     |
     |  SUFFIX = '?>'
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PreformattedString:
     |
     |  output_ready(self, formatter=None)
     |      Make this string ready for output by adding any subclass-specific
     |          prefix or suffix.
     |
     |      :param formatter: A Formatter object, or a string naming one
     |          of the standard formatters. The string will be passed into the
     |          Formatter, but only to trigger any side effects: the return
     |          value is ignored.
     |
     |      :return: The string, with any subclass-specific prefix and
     |         suffix added on.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from NavigableString:
     |
     |  __copy__(self)
     |      A copy of a NavigableString can only be a deep copy, because
     |      only one PageElement can occupy a given place in a parse tree.
     |
     |  __deepcopy__(self, memo, recursive=False)
     |      A copy of a NavigableString has the same contents and class
     |      as the original, but it is not connected to the parse tree.
     |
     |      :param recursive: This parameter is ignored; it's only defined
     |         so that NavigableString.__deepcopy__ implements the same
     |         signature as Tag.__deepcopy__.
     |
     |  __getattr__(self, attr)
     |      text.string gives you text. This is for backwards
     |      compatibility for Navigable*String, but for CData* it lets you
     |      get the string without the CData wrapper.
     |
     |  __getnewargs__(self)
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from NavigableString:
     |
     |  __new__(cls, value)
     |      Create a new NavigableString.
     |
     |      When unpickling a NavigableString, this method is called with
     |      the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
     |      passed in to the superclass's __new__ or the superclass won't know
     |      how to handle non-ASCII characters.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from NavigableString:
     |
     |  strings
     |      Yield all strings of certain classes, possibly stripping them.
     |
     |      This makes it easy for NavigableString to implement methods
     |      like get_text() as conveniences, creating a consistent
     |      text-extraction API across all PageElements.
     |
     |      :param strip: If True, all strings will be stripped before being
     |          yielded.
     |
     |      :param types: A tuple of NavigableString subclasses. If this
     |          NavigableString isn't one of those subclasses, the
     |          sequence will be empty. By default, the subclasses
     |          considered are NavigableString and CData objects. That
     |          means no comments, processing instructions, etc.
     |
     |      :yield: A sequence that either contains this string, or is empty.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from NavigableString:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  name
     |      Since a NavigableString is not a Tag, it has no .name.
     |
     |      This property is implemented so that code like this doesn't crash
     |      when run on a mixture of Tag and NavigableString objects:
     |          [x.name for x in tag.children]
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.str:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __format__(self, format_spec, /)
     |      Return a formatted version of the string as described by format_spec.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __sizeof__(self, /)
     |      Return the size of the string in memory, in bytes.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  capitalize(self, /)
     |      Return a capitalized version of the string.
     |
     |      More specifically, make the first character have upper case and the rest lower
     |      case.
     |
     |  casefold(self, /)
     |      Return a version of the string suitable for caseless comparisons.
     |
     |  center(self, width, fillchar=' ', /)
     |      Return a centered string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  count(...)
     |      S.count(sub[, start[, end]]) -> int
     |
     |      Return the number of non-overlapping occurrences of substring sub in
     |      string S[start:end].  Optional arguments start and end are
     |      interpreted as in slice notation.
     |
     |  encode(self, /, encoding='utf-8', errors='strict')
     |      Encode the string using the codec registered for encoding.
     |
     |      encoding
     |        The encoding in which to encode the string.
     |      errors
     |        The error handling scheme to use for encoding errors.
     |        The default is 'strict' meaning that encoding errors raise a
     |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
     |        'xmlcharrefreplace' as well as any other name registered with
     |        codecs.register_error that can handle UnicodeEncodeErrors.
     |
     |  endswith(...)
     |      S.endswith(suffix[, start[, end]]) -> bool
     |
     |      Return True if S ends with the specified suffix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      suffix can also be a tuple of strings to try.
     |
     |  expandtabs(self, /, tabsize=8)
     |      Return a copy where all tab characters are expanded using spaces.
     |
     |      If tabsize is not given, a tab size of 8 characters is assumed.
     |
     |  find(...)
     |      S.find(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  format(...)
     |      S.format(*args, **kwargs) -> str
     |
     |      Return a formatted version of S, using substitutions from args and kwargs.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  format_map(...)
     |      S.format_map(mapping) -> str
     |
     |      Return a formatted version of S, using substitutions from mapping.
     |      The substitutions are identified by braces ('{' and '}').
     |
     |  index(...)
     |      S.index(sub[, start[, end]]) -> int
     |
     |      Return the lowest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  isalnum(self, /)
     |      Return True if the string is an alpha-numeric string, False otherwise.
     |
     |      A string is alpha-numeric if all characters in the string are alpha-numeric and
     |      there is at least one character in the string.
     |
     |  isalpha(self, /)
     |      Return True if the string is an alphabetic string, False otherwise.
     |
     |      A string is alphabetic if all characters in the string are alphabetic and there
     |      is at least one character in the string.
     |
     |  isascii(self, /)
     |      Return True if all characters in the string are ASCII, False otherwise.
     |
     |      ASCII characters have code points in the range U+0000-U+007F.
     |      Empty string is ASCII too.
     |
     |  isdecimal(self, /)
     |      Return True if the string is a decimal string, False otherwise.
     |
     |      A string is a decimal string if all characters in the string are decimal and
     |      there is at least one character in the string.
     |
     |  isdigit(self, /)
     |      Return True if the string is a digit string, False otherwise.
     |
     |      A string is a digit string if all characters in the string are digits and there
     |      is at least one character in the string.
     |
     |  isidentifier(self, /)
     |      Return True if the string is a valid Python identifier, False otherwise.
     |
     |      Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
     |      such as "def" or "class".
     |
     |  islower(self, /)
     |      Return True if the string is a lowercase string, False otherwise.
     |
     |      A string is lowercase if all cased characters in the string are lowercase and
     |      there is at least one cased character in the string.
     |
     |  isnumeric(self, /)
     |      Return True if the string is a numeric string, False otherwise.
     |
     |      A string is numeric if all characters in the string are numeric and there is at
     |      least one character in the string.
     |
     |  isprintable(self, /)
     |      Return True if the string is printable, False otherwise.
     |
     |      A string is printable if all of its characters are considered printable in
     |      repr() or if it is empty.
     |
     |  isspace(self, /)
     |      Return True if the string is a whitespace string, False otherwise.
     |
     |      A string is whitespace if all characters in the string are whitespace and there
     |      is at least one character in the string.
     |
     |  istitle(self, /)
     |      Return True if the string is a title-cased string, False otherwise.
     |
     |      In a title-cased string, upper- and title-case characters may only
     |      follow uncased characters and lowercase characters only cased ones.
     |
     |  isupper(self, /)
     |      Return True if the string is an uppercase string, False otherwise.
     |
     |      A string is uppercase if all cased characters in the string are uppercase and
     |      there is at least one cased character in the string.
     |
     |  join(self, iterable, /)
     |      Concatenate any number of strings.
     |
     |      The string whose method is called is inserted in between each given string.
     |      The result is returned as a new string.
     |
     |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
     |
     |  ljust(self, width, fillchar=' ', /)
     |      Return a left-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  lower(self, /)
     |      Return a copy of the string converted to lowercase.
     |
     |  lstrip(self, chars=None, /)
     |      Return a copy of the string with leading whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  partition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string.  If the separator is found,
     |      returns a 3-tuple containing the part before the separator, the separator
     |      itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing the original string
     |      and two empty strings.
     |
     |  removeprefix(self, prefix, /)
     |      Return a str with the given prefix string removed if present.
     |
     |      If the string starts with the prefix string, return string[len(prefix):].
     |      Otherwise, return a copy of the original string.
     |
     |  removesuffix(self, suffix, /)
     |      Return a str with the given suffix string removed if present.
     |
     |      If the string ends with the suffix string and that suffix is not empty,
     |      return string[:-len(suffix)]. Otherwise, return a copy of the original
     |      string.
     |
     |  replace(self, old, new, count=-1, /)
     |      Return a copy with all occurrences of substring old replaced by new.
     |
     |        count
     |          Maximum number of occurrences to replace.
     |          -1 (the default value) means replace all occurrences.
     |
     |      If the optional argument count is given, only the first count occurrences are
     |      replaced.
     |
     |  rfind(...)
     |      S.rfind(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Return -1 on failure.
     |
     |  rindex(...)
     |      S.rindex(sub[, start[, end]]) -> int
     |
     |      Return the highest index in S where substring sub is found,
     |      such that sub is contained within S[start:end].  Optional
     |      arguments start and end are interpreted as in slice notation.
     |
     |      Raises ValueError when the substring is not found.
     |
     |  rjust(self, width, fillchar=' ', /)
     |      Return a right-justified string of length width.
     |
     |      Padding is done using the specified fill character (default is a space).
     |
     |  rpartition(self, sep, /)
     |      Partition the string into three parts using the given separator.
     |
     |      This will search for the separator in the string, starting at the end. If
     |      the separator is found, returns a 3-tuple containing the part before the
     |      separator, the separator itself, and the part after it.
     |
     |      If the separator is not found, returns a 3-tuple containing two empty strings
     |      and the original string.
     |
     |  rsplit(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the end of the string and works to the front.
     |
     |  rstrip(self, chars=None, /)
     |      Return a copy of the string with trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  split(self, /, sep=None, maxsplit=-1)
     |      Return a list of the substrings in the string, using sep as the separator string.
     |
     |        sep
     |          The separator used to split the string.
     |
     |          When set to None (the default value), will split on any whitespace
     |          character (including \n \r \t \f and spaces) and will discard
     |          empty strings from the result.
     |        maxsplit
     |          Maximum number of splits.
     |          -1 (the default value) means no limit.
     |
     |      Splitting starts at the front of the string and works to the end.
     |
     |      Note, str.split() is mainly useful for data that has been intentionally
     |      delimited.  With natural text that includes punctuation, consider using
     |      the regular expression module.
     |
     |  splitlines(self, /, keepends=False)
     |      Return a list of the lines in the string, breaking at line boundaries.
     |
     |      Line breaks are not included in the resulting list unless keepends is given and
     |      true.
     |
     |  startswith(...)
     |      S.startswith(prefix[, start[, end]]) -> bool
     |
     |      Return True if S starts with the specified prefix, False otherwise.
     |      With optional start, test S beginning at that position.
     |      With optional end, stop comparing S at that position.
     |      prefix can also be a tuple of strings to try.
     |
     |  strip(self, chars=None, /)
     |      Return a copy of the string with leading and trailing whitespace removed.
     |
     |      If chars is given and not None, remove characters in chars instead.
     |
     |  swapcase(self, /)
     |      Convert uppercase characters to lowercase and lowercase characters to uppercase.
     |
     |  title(self, /)
     |      Return a version of the string where each word is titlecased.
     |
     |      More specifically, words start with uppercased characters and all remaining
     |      cased characters have lower case.
     |
     |  translate(self, table, /)
     |      Replace each character in the string using the given translation table.
     |
     |        table
     |          Translation table, which must be a mapping of Unicode ordinals to
     |          Unicode ordinals, strings, or None.
     |
     |      The table must implement lookup/indexing via __getitem__, for instance a
     |      dictionary or list.  If this operation raises LookupError, the character is
     |      left untouched.  Characters mapped to None are deleted.
     |
     |  upper(self, /)
     |      Return a copy of the string converted to uppercase.
     |
     |  zfill(self, width, /)
     |      Pad a numeric string with zeros on the left, to fill a field of the given width.
     |
     |      The string is never truncated.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.str:
     |
     |  maketrans(...)
     |      Return a translation table usable for str.translate().
     |
     |      If there is only one argument, it must be a dictionary mapping Unicode
     |      ordinals (integers) or characters to Unicode ordinals, strings or None.
     |      Character keys will be then converted to ordinals.
     |      If there are two arguments, they must be strings of equal length, and
     |      in the resulting dictionary, each character in x will be mapped to the
     |      character at the same position in y. If there is a third argument, it
     |      must be a string, whose characters will be mapped to None in the result.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from PageElement:
     |
     |  append(self, tag)
     |      Appends the given PageElement to the contents of this one.
     |
     |      :param tag: A PageElement.
     |
     |  extend(self, tags)
     |      Appends the given PageElements to this one's contents.
     |
     |      :param tags: A list of PageElements. If a single Tag is
     |          provided instead, this PageElement's contents will be extended
     |          with that Tag's contents.
     |
     |  extract(self, _self_index=None)
     |      Destructively rips this element out of the tree.
     |
     |      :param _self_index: The location of this element in its parent's
     |         .contents, if known. Passing this in allows for a performance
     |         optimization.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  fetchNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  fetchPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  fetchPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllNext = find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findAllPrevious = find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findNext = find_next(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSibling = find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findNextSiblings = find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  findParent = find_parent(self, name=None, attrs={}, **kwargs)
     |
     |  findParents = find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |
     |  findPrevious = find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSibling = find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |
     |  findPreviousSiblings = find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |
     |  find_all_next(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all PageElements that match the given criteria and appear
     |      later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet containing PageElements.
     |
     |  find_all_previous(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Look backwards in the document from this PageElement and find all
     |      PageElements that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_next(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the first PageElement that matches the given criteria and
     |      appears later in the document than this PageElement.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Find the closest sibling to this PageElement that matches the
     |      given criteria and appears later in the document.
     |
     |      All find_* methods take a common set of arguments. See the
     |      online documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_next_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Find all siblings of this PageElement that match the given criteria
     |      and appear later in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  find_parent(self, name=None, attrs={}, **kwargs)
     |      Find the closest parent of this PageElement that matches the given
     |      criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_parents(self, name=None, attrs={}, limit=None, **kwargs)
     |      Find all parents of this PageElement that match the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous(self, name=None, attrs={}, string=None, **kwargs)
     |      Look backwards in the document from this PageElement and find the
     |      first PageElement that matches the given criteria.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_sibling(self, name=None, attrs={}, string=None, **kwargs)
     |      Returns the closest sibling to this PageElement that matches the
     |      given criteria and appears earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  find_previous_siblings(self, name=None, attrs={}, string=None, limit=None, **kwargs)
     |      Returns all siblings to this PageElement that match the
     |      given criteria and appear earlier in the document.
     |
     |      All find_* methods take a common set of arguments. See the online
     |      documentation for detailed explanations.
     |
     |      :param name: A filter on tag name.
     |      :param attrs: A dictionary of filters on attribute values.
     |      :param string: A filter for a NavigableString with specific text.
     |      :param limit: Stop looking after finding this many results.
     |      :kwargs: A dictionary of filters on attribute values.
     |      :return: A ResultSet of PageElements.
     |      :rtype: bs4.element.ResultSet
     |
     |  format_string(self, s, formatter)
     |      Format the given string using the given formatter.
     |
     |      :param s: A string.
     |      :param formatter: A Formatter object, or a string naming one of the standard formatters.
     |
     |  formatter_for_name(self, formatter)
     |      Look up or create a Formatter for the given identifier,
     |      if necessary.
     |
     |      :param formatter: Can be a Formatter object (used as-is), a
     |          function (used as the entity substitution hook for an
     |          XMLFormatter or HTMLFormatter), or a string (used to look
     |          up an XMLFormatter or HTMLFormatter in the appropriate
     |          registry.
     |
     |  getText = get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |
     |  get_text(self, separator='', strip=False, types=<object object at 0x000002349DC48C60>)
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  insert(self, position, new_child)
     |      Insert a new PageElement in the list of this PageElement's children.
     |
     |      This works the same way as `list.insert`.
     |
     |      :param position: The numeric position that should be occupied
     |         in `self.children` by the new PageElement.
     |      :param new_child: A PageElement.
     |
     |  insert_after(self, *args)
     |      Makes the given element(s) the immediate successor of this one.
     |
     |      The elements will have the same parent, and the given elements
     |      will be immediately after this one.
     |
     |      :param args: One or more PageElements.
     |
     |  insert_before(self, *args)
     |      Makes the given element(s) the immediate predecessor of this one.
     |
     |      All the elements will have the same parent, and the given elements
     |      will be immediately before this one.
     |
     |      :param args: One or more PageElements.
     |
     |  nextGenerator(self)
     |      # Old non-property versions of the generators, for backwards
     |      # compatibility with BS3.
     |
     |  nextSiblingGenerator(self)
     |
     |  parentGenerator(self)
     |
     |  previousGenerator(self)
     |
     |  previousSiblingGenerator(self)
     |
     |  replaceWith = replace_with(self, *args)
     |
     |  replaceWithChildren = unwrap(self)
     |
     |  replace_with(self, *args)
     |      Replace this PageElement with one or more PageElements, keeping the
     |      rest of the tree the same.
     |
     |      :param args: One or more PageElements.
     |      :return: `self`, no longer part of the tree.
     |
     |  replace_with_children = unwrap(self)
     |
     |  setup(self, parent=None, previous_element=None, next_element=None, previous_sibling=None, next_sibling=None)
     |      Sets up the initial relations between this element and
     |      other elements.
     |
     |      :param parent: The parent of this element.
     |
     |      :param previous_element: The element parsed immediately before
     |          this one.
     |
     |      :param next_element: The element parsed immediately before
     |          this one.
     |
     |      :param previous_sibling: The most recently encountered element
     |          on the same level of the parse tree as this one.
     |
     |      :param previous_sibling: The next element to be encountered
     |          on the same level of the parse tree as this one.
     |
     |  unwrap(self)
     |      Replace this PageElement with its contents.
     |
     |      :return: `self`, no longer part of the tree.
     |
     |  wrap(self, wrap_inside)
     |      Wrap this PageElement inside another one.
     |
     |      :param wrap_inside: A PageElement.
     |      :return: `wrap_inside`, occupying the position in the tree that used
     |         to be occupied by `self`, and with `self` inside it.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from PageElement:
     |
     |  decomposed
     |      Check whether a PageElement has been decomposed.
     |
     |      :rtype: bool
     |
     |  next
     |      The PageElement, if any, that was parsed just after this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  next_elements
     |      All PageElements that were parsed after this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  next_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      later.
     |
     |      :yield: A sequence of PageElements.
     |
     |  parents
     |      All PageElements that are parents of this PageElement.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous
     |      The PageElement, if any, that was parsed just before this one.
     |
     |      :return: A PageElement.
     |      :rtype: bs4.element.Tag | bs4.element.NavigableString
     |
     |  previous_elements
     |      All PageElements that were parsed before this one.
     |
     |      :yield: A sequence of PageElements.
     |
     |  previous_siblings
     |      All PageElements that are siblings of this one but were parsed
     |      earlier.
     |
     |      :yield: A sequence of PageElements.
     |
     |  stripped_strings
     |      Yield all strings in this PageElement, stripping them first.
     |
     |      :yield: A sequence of stripped strings.
     |
     |  text
     |      Get all child strings of this PageElement, concatenated using the
     |      given separator.
     |
     |      :param separator: Strings will be concatenated using this separator.
     |
     |      :param strip: If True, strings will be stripped before being
     |          concatenated.
     |
     |      :param types: A tuple of NavigableString subclasses. Any
     |          strings of a subclass not found in this list will be
     |          ignored. Although there are exceptions, the default
     |          behavior in most cases is to consider only NavigableString
     |          and CData objects. That means no comments, processing
     |          instructions, etc.
     |
     |      :return: A string.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from PageElement:
     |
     |  nextSibling
     |
     |  previousSibling
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from PageElement:
     |
     |  default = <object object>
     |
     |  known_xml = None

DATA
    DEFAULT_OUTPUT_ENCODING = 'utf-8'
    PYTHON_SPECIFIC_ENCODINGS = {'idna', 'mbcs', 'oem', 'palmos', 'punycod...
    __license__ = 'MIT'
    nonwhitespace_re = re.compile('\\S+')
    whitespace_re = re.compile('\\s+')

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\bs4\element.py

beautifulsoup4.formatter
Python Library Documentation: module bs4.formatter in bs4

NAME
    bs4.formatter

CLASSES
    bs4.dammit.EntitySubstitution(builtins.object)
        Formatter
            HTMLFormatter
            XMLFormatter

    class Formatter(bs4.dammit.EntitySubstitution)
     |  Formatter(language=None, entity_substitution=None, void_element_close_prefix='/', cdata_containing_tags=None, empty_attributes_are_booleans=False, indent=1)
     |
     |  Describes a strategy to use when outputting a parse tree to a string.
     |
     |  Some parts of this strategy come from the distinction between
     |  HTML4, HTML5, and XML. Others are configurable by the user.
     |
     |  Formatters are passed in as the `formatter` argument to methods
     |  like `PageElement.encode`. Most people won't need to think about
     |  formatters, and most people who need to think about them can pass
     |  in one of these predefined strings as `formatter` rather than
     |  making a new Formatter object:
     |
     |  For HTML documents:
     |   * 'html' - HTML entity substitution for generic HTML documents. (default)
     |   * 'html5' - HTML entity substitution for HTML5 documents, as
     |               well as some optimizations in the way tags are rendered.
     |   * 'minimal' - Only make the substitutions necessary to guarantee
     |                 valid HTML.
     |   * None - Do not perform any substitution. This will be faster
     |            but may result in invalid markup.
     |
     |  For XML documents:
     |   * 'html' - Entity substitution for XHTML documents.
     |   * 'minimal' - Only make the substitutions necessary to guarantee
     |                 valid XML. (default)
     |   * None - Do not perform any substitution. This will be faster
     |            but may result in invalid markup.
     |
     |  Method resolution order:
     |      Formatter
     |      bs4.dammit.EntitySubstitution
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __init__(self, language=None, entity_substitution=None, void_element_close_prefix='/', cdata_containing_tags=None, empty_attributes_are_booleans=False, indent=1)
     |      Constructor.
     |
     |      :param language: This should be Formatter.XML if you are formatting
     |         XML markup and Formatter.HTML if you are formatting HTML markup.
     |
     |      :param entity_substitution: A function to call to replace special
     |         characters with XML/HTML entities. For examples, see
     |         bs4.dammit.EntitySubstitution.substitute_html and substitute_xml.
     |      :param void_element_close_prefix: By default, void elements
     |         are represented as <tag/> (XML rules) rather than <tag>
     |         (HTML rules). To get <tag>, pass in the empty string.
     |      :param cdata_containing_tags: The list of tags that are defined
     |         as containing CDATA in this dialect. For example, in HTML,
     |         <script> and <style> tags are defined as containing CDATA,
     |         and their contents should not be formatted.
     |      :param blank_attributes_are_booleans: Render attributes whose value
     |          is the empty string as HTML-style boolean attributes.
     |          (Attributes whose value is None are always rendered this way.)
     |
     |      :param indent: If indent is a non-negative integer or string,
     |          then the contents of elements will be indented
     |          appropriately when pretty-printing. An indent level of 0,
     |          negative, or "" will only insert newlines. Using a
     |          positive integer indent indents that many spaces per
     |          level. If indent is a string (such as "\t"), that string
     |          is used to indent each level. The default behavior is to
     |          indent one space per level.
     |
     |  attribute_value(self, value)
     |      Process the value of an attribute.
     |
     |      :param ns: A string.
     |      :return: A string with certain characters replaced by named
     |         or numeric entities.
     |
     |  attributes(self, tag)
     |      Reorder a tag's attributes however you want.
     |
     |      By default, attributes are sorted alphabetically. This makes
     |      behavior consistent between Python 2 and Python 3, and preserves
     |      backwards compatibility with older versions of Beautiful Soup.
     |
     |      If `empty_boolean_attributes` is True, then attributes whose
     |      values are set to the empty string will be treated as boolean
     |      attributes.
     |
     |  substitute(self, ns)
     |      Process a string that needs to undergo entity substitution.
     |      This may be a string encountered in an attribute value or as
     |      text.
     |
     |      :param ns: A string.
     |      :return: A string with certain characters replaced by named
     |         or numeric entities.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  HTML = 'html'
     |
     |  HTML_DEFAULTS = {'cdata_containing_tags': {'script', 'style'}}
     |
     |  HTML_FORMATTERS = {}
     |
     |  XML = 'xml'
     |
     |  XML_FORMATTERS = {}
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from bs4.dammit.EntitySubstitution:
     |
     |  quoted_attribute_value(value)
     |      Make a value into a quoted XML attribute, possibly escaping it.
     |
     |      Most strings will be quoted using double quotes.
     |
     |       Bob's Bar -> "Bob's Bar"
     |
     |      If a string contains double quotes, it will be quoted using
     |      single quotes.
     |
     |       Welcome to "my bar" -> 'Welcome to "my bar"'
     |
     |      If a string contains both single and double quotes, the
     |      double quotes will be escaped, and the string will be quoted
     |      using double quotes.
     |
     |       Welcome to "Bob's Bar" -> "Welcome to &quot;Bob's bar&quot;
     |
     |  substitute_html(s)
     |      Replace certain Unicode characters with named HTML entities.
     |
     |      This differs from data.encode(encoding, 'xmlcharrefreplace')
     |      in that the goal is to make the result more readable (to those
     |      with ASCII displays) rather than to recover from
     |      errors. There's absolutely nothing wrong with a UTF-8 string
     |      containg a LATIN SMALL LETTER E WITH ACUTE, but replacing that
     |      character with "&eacute;" will make it more readable to some
     |      people.
     |
     |      :param s: A Unicode string.
     |
     |  substitute_xml(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign
     |        will become &lt;, the greater-than sign will become &gt;,
     |        and any ampersands will become &amp;. If you want ampersands
     |        that appear to be part of an entity definition to be left
     |        alone, use substitute_xml_containing_entities() instead.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  substitute_xml_containing_entities(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign will
     |        become &lt;, the greater-than sign will become &gt;, and any
     |        ampersands that are not part of an entity defition will
     |        become &amp;.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from bs4.dammit.EntitySubstitution:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.dammit.EntitySubstitution:
     |
     |  AMPERSAND_OR_BRACKET = re.compile('([<>&])')
     |
     |  BARE_AMPERSAND_OR_BRACKET = re.compile('([<>]|&(?!#\\d+;|#x[0-9a-fA-F]...
     |
     |  CHARACTER_TO_HTML_ENTITY = {'\t': 'Tab', '\n': 'NewLine', '!': 'excl',...
     |
     |  CHARACTER_TO_HTML_ENTITY_RE = re.compile('(⋎|≏(?![̸])|⪐|ʼn|ⅇ|↾|ė|⨥|\xad...
     |
     |  CHARACTER_TO_XML_ENTITY = {'"': 'quot', '&': 'amp', "'": 'apos', '<': ...
     |
     |  HTML_ENTITY_TO_CHARACTER = {'AElig': 'Æ', 'AMP': '&', 'Aacute': 'Á', '...

    class HTMLFormatter(Formatter)
     |  HTMLFormatter(*args, **kwargs)
     |
     |  A generic Formatter for HTML.
     |
     |  Method resolution order:
     |      HTMLFormatter
     |      Formatter
     |      bs4.dammit.EntitySubstitution
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __init__(self, *args, **kwargs)
     |      Constructor.
     |
     |      :param language: This should be Formatter.XML if you are formatting
     |         XML markup and Formatter.HTML if you are formatting HTML markup.
     |
     |      :param entity_substitution: A function to call to replace special
     |         characters with XML/HTML entities. For examples, see
     |         bs4.dammit.EntitySubstitution.substitute_html and substitute_xml.
     |      :param void_element_close_prefix: By default, void elements
     |         are represented as <tag/> (XML rules) rather than <tag>
     |         (HTML rules). To get <tag>, pass in the empty string.
     |      :param cdata_containing_tags: The list of tags that are defined
     |         as containing CDATA in this dialect. For example, in HTML,
     |         <script> and <style> tags are defined as containing CDATA,
     |         and their contents should not be formatted.
     |      :param blank_attributes_are_booleans: Render attributes whose value
     |          is the empty string as HTML-style boolean attributes.
     |          (Attributes whose value is None are always rendered this way.)
     |
     |      :param indent: If indent is a non-negative integer or string,
     |          then the contents of elements will be indented
     |          appropriately when pretty-printing. An indent level of 0,
     |          negative, or "" will only insert newlines. Using a
     |          positive integer indent indents that many spaces per
     |          level. If indent is a string (such as "\t"), that string
     |          is used to indent each level. The default behavior is to
     |          indent one space per level.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  REGISTRY = {'html': <bs4.formatter.HTMLFormatter object>, 'html5': <bs...
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from Formatter:
     |
     |  attribute_value(self, value)
     |      Process the value of an attribute.
     |
     |      :param ns: A string.
     |      :return: A string with certain characters replaced by named
     |         or numeric entities.
     |
     |  attributes(self, tag)
     |      Reorder a tag's attributes however you want.
     |
     |      By default, attributes are sorted alphabetically. This makes
     |      behavior consistent between Python 2 and Python 3, and preserves
     |      backwards compatibility with older versions of Beautiful Soup.
     |
     |      If `empty_boolean_attributes` is True, then attributes whose
     |      values are set to the empty string will be treated as boolean
     |      attributes.
     |
     |  substitute(self, ns)
     |      Process a string that needs to undergo entity substitution.
     |      This may be a string encountered in an attribute value or as
     |      text.
     |
     |      :param ns: A string.
     |      :return: A string with certain characters replaced by named
     |         or numeric entities.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from Formatter:
     |
     |  HTML = 'html'
     |
     |  HTML_DEFAULTS = {'cdata_containing_tags': {'script', 'style'}}
     |
     |  HTML_FORMATTERS = {}
     |
     |  XML = 'xml'
     |
     |  XML_FORMATTERS = {}
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from bs4.dammit.EntitySubstitution:
     |
     |  quoted_attribute_value(value)
     |      Make a value into a quoted XML attribute, possibly escaping it.
     |
     |      Most strings will be quoted using double quotes.
     |
     |       Bob's Bar -> "Bob's Bar"
     |
     |      If a string contains double quotes, it will be quoted using
     |      single quotes.
     |
     |       Welcome to "my bar" -> 'Welcome to "my bar"'
     |
     |      If a string contains both single and double quotes, the
     |      double quotes will be escaped, and the string will be quoted
     |      using double quotes.
     |
     |       Welcome to "Bob's Bar" -> "Welcome to &quot;Bob's bar&quot;
     |
     |  substitute_html(s)
     |      Replace certain Unicode characters with named HTML entities.
     |
     |      This differs from data.encode(encoding, 'xmlcharrefreplace')
     |      in that the goal is to make the result more readable (to those
     |      with ASCII displays) rather than to recover from
     |      errors. There's absolutely nothing wrong with a UTF-8 string
     |      containg a LATIN SMALL LETTER E WITH ACUTE, but replacing that
     |      character with "&eacute;" will make it more readable to some
     |      people.
     |
     |      :param s: A Unicode string.
     |
     |  substitute_xml(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign
     |        will become &lt;, the greater-than sign will become &gt;,
     |        and any ampersands will become &amp;. If you want ampersands
     |        that appear to be part of an entity definition to be left
     |        alone, use substitute_xml_containing_entities() instead.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  substitute_xml_containing_entities(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign will
     |        become &lt;, the greater-than sign will become &gt;, and any
     |        ampersands that are not part of an entity defition will
     |        become &amp;.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from bs4.dammit.EntitySubstitution:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.dammit.EntitySubstitution:
     |
     |  AMPERSAND_OR_BRACKET = re.compile('([<>&])')
     |
     |  BARE_AMPERSAND_OR_BRACKET = re.compile('([<>]|&(?!#\\d+;|#x[0-9a-fA-F]...
     |
     |  CHARACTER_TO_HTML_ENTITY = {'\t': 'Tab', '\n': 'NewLine', '!': 'excl',...
     |
     |  CHARACTER_TO_HTML_ENTITY_RE = re.compile('(⋎|≏(?![̸])|⪐|ʼn|ⅇ|↾|ė|⨥|\xad...
     |
     |  CHARACTER_TO_XML_ENTITY = {'"': 'quot', '&': 'amp', "'": 'apos', '<': ...
     |
     |  HTML_ENTITY_TO_CHARACTER = {'AElig': 'Æ', 'AMP': '&', 'Aacute': 'Á', '...

    class XMLFormatter(Formatter)
     |  XMLFormatter(*args, **kwargs)
     |
     |  A generic Formatter for XML.
     |
     |  Method resolution order:
     |      XMLFormatter
     |      Formatter
     |      bs4.dammit.EntitySubstitution
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __init__(self, *args, **kwargs)
     |      Constructor.
     |
     |      :param language: This should be Formatter.XML if you are formatting
     |         XML markup and Formatter.HTML if you are formatting HTML markup.
     |
     |      :param entity_substitution: A function to call to replace special
     |         characters with XML/HTML entities. For examples, see
     |         bs4.dammit.EntitySubstitution.substitute_html and substitute_xml.
     |      :param void_element_close_prefix: By default, void elements
     |         are represented as <tag/> (XML rules) rather than <tag>
     |         (HTML rules). To get <tag>, pass in the empty string.
     |      :param cdata_containing_tags: The list of tags that are defined
     |         as containing CDATA in this dialect. For example, in HTML,
     |         <script> and <style> tags are defined as containing CDATA,
     |         and their contents should not be formatted.
     |      :param blank_attributes_are_booleans: Render attributes whose value
     |          is the empty string as HTML-style boolean attributes.
     |          (Attributes whose value is None are always rendered this way.)
     |
     |      :param indent: If indent is a non-negative integer or string,
     |          then the contents of elements will be indented
     |          appropriately when pretty-printing. An indent level of 0,
     |          negative, or "" will only insert newlines. Using a
     |          positive integer indent indents that many spaces per
     |          level. If indent is a string (such as "\t"), that string
     |          is used to indent each level. The default behavior is to
     |          indent one space per level.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  REGISTRY = {'html': <bs4.formatter.XMLFormatter object>, 'minimal': <b...
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from Formatter:
     |
     |  attribute_value(self, value)
     |      Process the value of an attribute.
     |
     |      :param ns: A string.
     |      :return: A string with certain characters replaced by named
     |         or numeric entities.
     |
     |  attributes(self, tag)
     |      Reorder a tag's attributes however you want.
     |
     |      By default, attributes are sorted alphabetically. This makes
     |      behavior consistent between Python 2 and Python 3, and preserves
     |      backwards compatibility with older versions of Beautiful Soup.
     |
     |      If `empty_boolean_attributes` is True, then attributes whose
     |      values are set to the empty string will be treated as boolean
     |      attributes.
     |
     |  substitute(self, ns)
     |      Process a string that needs to undergo entity substitution.
     |      This may be a string encountered in an attribute value or as
     |      text.
     |
     |      :param ns: A string.
     |      :return: A string with certain characters replaced by named
     |         or numeric entities.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from Formatter:
     |
     |  HTML = 'html'
     |
     |  HTML_DEFAULTS = {'cdata_containing_tags': {'script', 'style'}}
     |
     |  HTML_FORMATTERS = {}
     |
     |  XML = 'xml'
     |
     |  XML_FORMATTERS = {}
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from bs4.dammit.EntitySubstitution:
     |
     |  quoted_attribute_value(value)
     |      Make a value into a quoted XML attribute, possibly escaping it.
     |
     |      Most strings will be quoted using double quotes.
     |
     |       Bob's Bar -> "Bob's Bar"
     |
     |      If a string contains double quotes, it will be quoted using
     |      single quotes.
     |
     |       Welcome to "my bar" -> 'Welcome to "my bar"'
     |
     |      If a string contains both single and double quotes, the
     |      double quotes will be escaped, and the string will be quoted
     |      using double quotes.
     |
     |       Welcome to "Bob's Bar" -> "Welcome to &quot;Bob's bar&quot;
     |
     |  substitute_html(s)
     |      Replace certain Unicode characters with named HTML entities.
     |
     |      This differs from data.encode(encoding, 'xmlcharrefreplace')
     |      in that the goal is to make the result more readable (to those
     |      with ASCII displays) rather than to recover from
     |      errors. There's absolutely nothing wrong with a UTF-8 string
     |      containg a LATIN SMALL LETTER E WITH ACUTE, but replacing that
     |      character with "&eacute;" will make it more readable to some
     |      people.
     |
     |      :param s: A Unicode string.
     |
     |  substitute_xml(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign
     |        will become &lt;, the greater-than sign will become &gt;,
     |        and any ampersands will become &amp;. If you want ampersands
     |        that appear to be part of an entity definition to be left
     |        alone, use substitute_xml_containing_entities() instead.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  substitute_xml_containing_entities(value, make_quoted_attribute=False)
     |      Substitute XML entities for special XML characters.
     |
     |      :param value: A string to be substituted. The less-than sign will
     |        become &lt;, the greater-than sign will become &gt;, and any
     |        ampersands that are not part of an entity defition will
     |        become &amp;.
     |
     |      :param make_quoted_attribute: If True, then the string will be
     |       quoted, as befits an attribute value.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from bs4.dammit.EntitySubstitution:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from bs4.dammit.EntitySubstitution:
     |
     |  AMPERSAND_OR_BRACKET = re.compile('([<>&])')
     |
     |  BARE_AMPERSAND_OR_BRACKET = re.compile('([<>]|&(?!#\\d+;|#x[0-9a-fA-F]...
     |
     |  CHARACTER_TO_HTML_ENTITY = {'\t': 'Tab', '\n': 'NewLine', '!': 'excl',...
     |
     |  CHARACTER_TO_HTML_ENTITY_RE = re.compile('(⋎|≏(?![̸])|⪐|ʼn|ⅇ|↾|ė|⨥|\xad...
     |
     |  CHARACTER_TO_XML_ENTITY = {'"': 'quot', '&': 'amp', "'": 'apos', '<': ...
     |
     |  HTML_ENTITY_TO_CHARACTER = {'AElig': 'Æ', 'AMP': '&', 'Aacute': 'Á', '...

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\bs4\formatter.py

beautifulsoup4.os
Python Library Documentation: module os

NAME
    os - OS routines for NT or Posix depending on what system we're on.

MODULE REFERENCE
    https://docs.python.org/3.12/library/os.html

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.

DESCRIPTION
    This exports:
      - all functions from posix or nt, e.g. unlink, stat, etc.
      - os.path is either posixpath or ntpath
      - os.name is either 'posix' or 'nt'
      - os.curdir is a string representing the current directory (always '.')
      - os.pardir is a string representing the parent directory (always '..')
      - os.sep is the (or a most common) pathname separator ('/' or '\\')
      - os.extsep is the extension separator (always '.')
      - os.altsep is the alternate pathname separator (None or '/')
      - os.pathsep is the component separator used in $PATH etc
      - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
      - os.defpath is the default search path for executables
      - os.devnull is the file path of the null device ('/dev/null', etc.)

    Programs that import and use 'os' stand a better chance of being
    portable between different platforms.  Of course, they must then
    only use functions that are defined by all platforms (e.g., unlink
    and opendir), and leave all pathname manipulation to os.path
    (e.g., split and join).

CLASSES
    builtins.Exception(builtins.BaseException)
        builtins.OSError
    builtins.object
        nt.DirEntry
    builtins.tuple(builtins.object)
        nt.times_result
        nt.uname_result
        stat_result
        statvfs_result
        terminal_size

    class DirEntry(builtins.object)
     |  Methods defined here:
     |
     |  __fspath__(self, /)
     |      Returns the path for the entry.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  inode(self, /)
     |      Return inode of the entry; cached per entry.
     |
     |  is_dir(self, /, *, follow_symlinks=True)
     |      Return True if the entry is a directory; cached per entry.
     |
     |  is_file(self, /, *, follow_symlinks=True)
     |      Return True if the entry is a file; cached per entry.
     |
     |  is_junction(self, /)
     |      Return True if the entry is a junction; cached per entry.
     |
     |  is_symlink(self, /)
     |      Return True if the entry is a symbolic link; cached per entry.
     |
     |  stat(self, /, *, follow_symlinks=True)
     |      Return stat_result object for the entry; cached per entry.
     |
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |
     |  __class_getitem__(...)
     |      See PEP 585
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  name
     |      the entry's base filename, relative to scandir() "path" argument
     |
     |  path
     |      the entry's full path name; equivalent to os.path.join(scandir_path, entry.name)

    error = class OSError(Exception)
     |  Base class for I/O related errors.
     |
     |  Method resolution order:
     |      OSError
     |      Exception
     |      BaseException
     |      object
     |
     |  Built-in subclasses:
     |      BlockingIOError
     |      ChildProcessError
     |      ConnectionError
     |      FileExistsError
     |      ... and 7 other subclasses
     |
     |  Methods defined here:
     |
     |  __init__(self, /, *args, **kwargs)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |
     |  __reduce__(...)
     |      Helper for pickle.
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(*args, **kwargs)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  characters_written
     |
     |  errno
     |      POSIX exception code
     |
     |  filename
     |      exception filename
     |
     |  filename2
     |      second exception filename
     |
     |  strerror
     |      exception strerror
     |
     |  winerror
     |      Win32 exception code
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from BaseException:
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __setstate__(...)
     |
     |  add_note(...)
     |      Exception.add_note(note) --
     |      add a note to the exception
     |
     |  with_traceback(...)
     |      Exception.with_traceback(tb) --
     |      set self.__traceback__ to tb and return self.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from BaseException:
     |
     |  __cause__
     |      exception cause
     |
     |  __context__
     |      exception context
     |
     |  __dict__
     |
     |  __suppress_context__
     |
     |  __traceback__
     |
     |  args

    class stat_result(builtins.tuple)
     |  stat_result(iterable=(), /)
     |
     |  stat_result: Result from stat, fstat, or lstat.
     |
     |  This object may be accessed either as a tuple of
     |    (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)
     |  or via the attributes st_mode, st_ino, st_dev, st_nlink, st_uid, and so on.
     |
     |  Posix/windows: If your platform supports st_blksize, st_blocks, st_rdev,
     |  or st_flags, they are available as attributes only.
     |
     |  See os.stat for more information.
     |
     |  Method resolution order:
     |      stat_result
     |      builtins.tuple
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __reduce__(...)
     |      Helper for pickle.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(*args, **kwargs)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  st_atime
     |      time of last access
     |
     |  st_atime_ns
     |      time of last access in nanoseconds
     |
     |  st_birthtime
     |      time of creation
     |
     |  st_birthtime_ns
     |      time of creation in nanoseconds
     |
     |  st_ctime
     |      time of last change
     |
     |  st_ctime_ns
     |      time of last change in nanoseconds
     |
     |  st_dev
     |      device
     |
     |  st_file_attributes
     |      Windows file attribute bits
     |
     |  st_gid
     |      group ID of owner
     |
     |  st_ino
     |      inode
     |
     |  st_mode
     |      protection bits
     |
     |  st_mtime
     |      time of last modification
     |
     |  st_mtime_ns
     |      time of last modification in nanoseconds
     |
     |  st_nlink
     |      number of hard links
     |
     |  st_reparse_tag
     |      Windows reparse tag
     |
     |  st_size
     |      total size, in bytes
     |
     |  st_uid
     |      user ID of owner
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  __match_args__ = ('st_mode', 'st_ino', 'st_dev', 'st_nlink', 'st_uid',...
     |
     |  n_fields = 20
     |
     |  n_sequence_fields = 10
     |
     |  n_unnamed_fields = 3
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.tuple:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(self, /)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  count(self, value, /)
     |      Return number of occurrences of value.
     |
     |  index(self, value, start=0, stop=9223372036854775807, /)
     |      Return first index of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.tuple:
     |
     |  __class_getitem__(...)
     |      See PEP 585

    class statvfs_result(builtins.tuple)
     |  statvfs_result(iterable=(), /)
     |
     |  statvfs_result: Result from statvfs or fstatvfs.
     |
     |  This object may be accessed either as a tuple of
     |    (bsize, frsize, blocks, bfree, bavail, files, ffree, favail, flag, namemax),
     |  or via the attributes f_bsize, f_frsize, f_blocks, f_bfree, and so on.
     |
     |  See os.statvfs for more information.
     |
     |  Method resolution order:
     |      statvfs_result
     |      builtins.tuple
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __reduce__(...)
     |      Helper for pickle.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(*args, **kwargs)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  f_bavail
     |
     |  f_bfree
     |
     |  f_blocks
     |
     |  f_bsize
     |
     |  f_favail
     |
     |  f_ffree
     |
     |  f_files
     |
     |  f_flag
     |
     |  f_frsize
     |
     |  f_fsid
     |
     |  f_namemax
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  __match_args__ = ('f_bsize', 'f_frsize', 'f_blocks', 'f_bfree', 'f_bav...
     |
     |  n_fields = 11
     |
     |  n_sequence_fields = 10
     |
     |  n_unnamed_fields = 0
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.tuple:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(self, /)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  count(self, value, /)
     |      Return number of occurrences of value.
     |
     |  index(self, value, start=0, stop=9223372036854775807, /)
     |      Return first index of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.tuple:
     |
     |  __class_getitem__(...)
     |      See PEP 585

    class terminal_size(builtins.tuple)
     |  terminal_size(iterable=(), /)
     |
     |  A tuple of (columns, lines) for holding terminal window size
     |
     |  Method resolution order:
     |      terminal_size
     |      builtins.tuple
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __reduce__(...)
     |      Helper for pickle.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(*args, **kwargs)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  columns
     |      width of the terminal window in characters
     |
     |  lines
     |      height of the terminal window in characters
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  __match_args__ = ('columns', 'lines')
     |
     |  n_fields = 2
     |
     |  n_sequence_fields = 2
     |
     |  n_unnamed_fields = 0
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.tuple:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(self, /)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  count(self, value, /)
     |      Return number of occurrences of value.
     |
     |  index(self, value, start=0, stop=9223372036854775807, /)
     |      Return first index of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.tuple:
     |
     |  __class_getitem__(...)
     |      See PEP 585

    class times_result(builtins.tuple)
     |  times_result(iterable=(), /)
     |
     |  times_result: Result from os.times().
     |
     |  This object may be accessed either as a tuple of
     |    (user, system, children_user, children_system, elapsed),
     |  or via the attributes user, system, children_user, children_system,
     |  and elapsed.
     |
     |  See os.times for more information.
     |
     |  Method resolution order:
     |      times_result
     |      builtins.tuple
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __reduce__(...)
     |      Helper for pickle.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(*args, **kwargs)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  children_system
     |      system time of children
     |
     |  children_user
     |      user time of children
     |
     |  elapsed
     |      elapsed time since an arbitrary point in the past
     |
     |  system
     |      system time
     |
     |  user
     |      user time
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  __match_args__ = ('user', 'system', 'children_user', 'children_system'...
     |
     |  n_fields = 5
     |
     |  n_sequence_fields = 5
     |
     |  n_unnamed_fields = 0
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.tuple:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(self, /)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  count(self, value, /)
     |      Return number of occurrences of value.
     |
     |  index(self, value, start=0, stop=9223372036854775807, /)
     |      Return first index of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.tuple:
     |
     |  __class_getitem__(...)
     |      See PEP 585

    class uname_result(builtins.tuple)
     |  uname_result(iterable=(), /)
     |
     |  uname_result: Result from os.uname().
     |
     |  This object may be accessed either as a tuple of
     |    (sysname, nodename, release, version, machine),
     |  or via the attributes sysname, nodename, release, version, and machine.
     |
     |  See os.uname for more information.
     |
     |  Method resolution order:
     |      uname_result
     |      builtins.tuple
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __reduce__(...)
     |      Helper for pickle.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(*args, **kwargs)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  machine
     |      hardware identifier
     |
     |  nodename
     |      name of machine on network (implementation-defined)
     |
     |  release
     |      operating system release
     |
     |  sysname
     |      operating system name
     |
     |  version
     |      operating system version
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  __match_args__ = ('sysname', 'nodename', 'release', 'version', 'machin...
     |
     |  n_fields = 5
     |
     |  n_sequence_fields = 5
     |
     |  n_unnamed_fields = 0
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.tuple:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __getnewargs__(self, /)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  count(self, value, /)
     |      Return number of occurrences of value.
     |
     |  index(self, value, start=0, stop=9223372036854775807, /)
     |      Return first index of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.tuple:
     |
     |  __class_getitem__(...)
     |      See PEP 585

FUNCTIONS
    _exit(status)
        Exit to the system with specified status, without normal exit processing.

    abort()
        Abort the interpreter immediately.

        This function 'dumps core' or otherwise fails in the hardest way possible
        on the hosting operating system.  This function never returns.

    access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
        Use the real uid/gid to test for access to a path.

          path
            Path to be tested; can be string, bytes, or a path-like object.
          mode
            Operating-system mode bitfield.  Can be F_OK to test existence,
            or the inclusive-OR of R_OK, W_OK, and X_OK.
          dir_fd
            If not None, it should be a file descriptor open to a directory,
            and path should be relative; path will then be relative to that
            directory.
          effective_ids
            If True, access will use the effective uid/gid instead of
            the real uid/gid.
          follow_symlinks
            If False, and the last element of the path is a symbolic link,
            access will examine the symbolic link itself instead of the file
            the link points to.

        dir_fd, effective_ids, and follow_symlinks may not be implemented
          on your platform.  If they are unavailable, using them will raise a
          NotImplementedError.

        Note that most operations will use the effective uid/gid, therefore this
          routine can be used in a suid/sgid environment to test if the invoking user
          has the specified access to the path.

    chdir(path)
        Change the current working directory to the specified path.

        path may always be specified as a string.
        On some platforms, path may also be specified as an open file descriptor.
          If this functionality is unavailable, using it raises an exception.

    chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
        Change the access permissions of a file.

          path
            Path to be modified.  May always be specified as a str, bytes, or a path-like object.
            On some platforms, path may also be specified as an open file descriptor.
            If this functionality is unavailable, using it raises an exception.
          mode
            Operating-system mode bitfield.
            Be careful when using number literals for *mode*. The conventional UNIX notation for
            numeric modes uses an octal base, which needs to be indicated with a ``0o`` prefix in
            Python.
          dir_fd
            If not None, it should be a file descriptor open to a directory,
            and path should be relative; path will then be relative to that
            directory.
          follow_symlinks
            If False, and the last element of the path is a symbolic link,
            chmod will modify the symbolic link itself instead of the file
            the link points to.

        It is an error to use dir_fd or follow_symlinks when specifying path as
          an open file descriptor.
        dir_fd and follow_symlinks may not be implemented on your platform.
          If they are unavailable, using them will raise a NotImplementedError.

    close(fd)
        Close a file descriptor.

    closerange(fd_low, fd_high, /)
        Closes all file descriptors in [fd_low, fd_high), ignoring errors.

    cpu_count()
        Return the number of CPUs in the system; return None if indeterminable.

        This number is not equivalent to the number of CPUs the current process can
        use.  The number of usable CPUs can be obtained with
        ``len(os.sched_getaffinity(0))``

    device_encoding(fd)
        Return a string describing the encoding of a terminal's file descriptor.

        The file descriptor must be attached to a terminal.
        If the device is not a terminal, return None.

    dup(fd, /)
        Return a duplicate of a file descriptor.

    dup2(fd, fd2, inheritable=True)
        Duplicate file descriptor.

    execl(file, *args)
        execl(file, *args)

        Execute the executable file with argument list args, replacing the
        current process.

    execle(file, *args)
        execle(file, *args, env)

        Execute the executable file with argument list args and
        environment env, replacing the current process.

    execlp(file, *args)
        execlp(file, *args)

        Execute the executable file (which is searched for along $PATH)
        with argument list args, replacing the current process.

    execlpe(file, *args)
        execlpe(file, *args, env)

        Execute the executable file (which is searched for along $PATH)
        with argument list args and environment env, replacing the current
        process.

    execv(path, argv, /)
        Execute an executable path with arguments, replacing current process.

        path
          Path of executable file.
        argv
          Tuple or list of strings.

    execve(path, argv, env)
        Execute an executable path with arguments, replacing current process.

        path
          Path of executable file.
        argv
          Tuple or list of strings.
        env
          Dictionary of strings mapping to strings.

    execvp(file, args)
        execvp(file, args)

        Execute the executable file (which is searched for along $PATH)
        with argument list args, replacing the current process.
        args may be a list or tuple of strings.

    execvpe(file, args, env)
        execvpe(file, args, env)

        Execute the executable file (which is searched for along $PATH)
        with argument list args and environment env, replacing the
        current process.
        args may be a list or tuple of strings.

    fdopen(fd, mode='r', buffering=-1, encoding=None, *args, **kwargs)

    fsdecode(filename)
        Decode filename (an os.PathLike, bytes, or str) from the filesystem
        encoding with 'surrogateescape' error handler, return str unchanged. On
        Windows, use 'strict' error handler if the file system encoding is
        'mbcs' (which is the default encoding).

    fsencode(filename)
        Encode filename (an os.PathLike, bytes, or str) to the filesystem
        encoding with 'surrogateescape' error handler, return bytes unchanged.
        On Windows, use 'strict' error handler if the file system encoding is
        'mbcs' (which is the default encoding).

    fspath(path)
        Return the file system path representation of the object.

        If the object is str or bytes, then allow it to pass through as-is. If the
        object defines __fspath__(), then return the result of that method. All other
        types raise a TypeError.

    fstat(fd)
        Perform a stat system call on the given file descriptor.

        Like stat(), but for an open file descriptor.
        Equivalent to os.stat(fd).

    fsync(fd)
        Force write of fd to disk.

    ftruncate(fd, length, /)
        Truncate a file, specified by file descriptor, to a specific length.

    get_blocking(fd, /)
        Get the blocking mode of the file descriptor.

        Return False if the O_NONBLOCK flag is set, True if the flag is cleared.

    get_exec_path(env=None)
        Returns the sequence of directories that will be searched for the
        named executable (similar to a shell) when launching a process.

        *env* must be an environment variable dict or None.  If *env* is None,
        os.environ will be used.

    get_handle_inheritable(handle, /)
        Get the close-on-exe flag of the specified file descriptor.

    get_inheritable(fd, /)
        Get the close-on-exe flag of the specified file descriptor.

    get_terminal_size(...)
        Return the size of the terminal window as (columns, lines).

        The optional argument fd (default standard output) specifies
        which file descriptor should be queried.

        If the file descriptor is not connected to a terminal, an OSError
        is thrown.

        This function will only be defined if an implementation is
        available for this system.

        shutil.get_terminal_size is the high-level function which should
        normally be used, os.get_terminal_size is the low-level implementation.

    getcwd()
        Return a unicode string representing the current working directory.

    getcwdb()
        Return a bytes string representing the current working directory.

    getenv(key, default=None)
        Get an environment variable, return None if it doesn't exist.
        The optional second argument can specify an alternate default.
        key, default and the result are str.

    getlogin()
        Return the actual login name.

    getpid()
        Return the current process id.

    getppid()
        Return the parent's process id.

        If the parent process has already exited, Windows machines will still
        return its id; others systems will return the id of the 'init' process (1).

    isatty(fd, /)
        Return True if the fd is connected to a terminal.

        Return True if the file descriptor is an open file descriptor
        connected to the slave end of a terminal.

    kill(pid, signal, /)
        Kill a process with a signal.

    link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
        Create a hard link to a file.

        If either src_dir_fd or dst_dir_fd is not None, it should be a file
          descriptor open to a directory, and the respective path string (src or dst)
          should be relative; the path will then be relative to that directory.
        If follow_symlinks is False, and the last element of src is a symbolic
          link, link will create a link to the symbolic link itself instead of the
          file the link points to.
        src_dir_fd, dst_dir_fd, and follow_symlinks may not be implemented on your
          platform.  If they are unavailable, using them will raise a
          NotImplementedError.

    listdir(path=None)
        Return a list containing the names of the files in the directory.

        path can be specified as either str, bytes, or a path-like object.  If path is bytes,
          the filenames returned will also be bytes; in all other circumstances
          the filenames returned will be str.
        If path is None, uses the path='.'.
        On some platforms, path may also be specified as an open file descriptor;\
          the file descriptor must refer to a directory.
          If this functionality is unavailable, using it raises NotImplementedError.

        The list is in arbitrary order.  It does not include the special
        entries '.' and '..' even if they are present in the directory.

    listdrives()
        Return a list containing the names of drives in the system.

        A drive name typically looks like 'C:\\'.

    listmounts(volume)
        Return a list containing mount points for a particular volume.

        'volume' should be a GUID path as returned from os.listvolumes.

    listvolumes()
        Return a list containing the volumes in the system.

        Volumes are typically represented as a GUID path.

    lseek(fd, position, whence, /)
        Set the position of a file descriptor.  Return the new position.

          fd
            An open file descriptor, as returned by os.open().
          position
            Position, interpreted relative to 'whence'.
          whence
            The relative position to seek from. Valid values are:
            - SEEK_SET: seek from the start of the file.
            - SEEK_CUR: seek from the current file position.
            - SEEK_END: seek from the end of the file.

        The return value is the number of bytes relative to the beginning of the file.

    lstat(path, *, dir_fd=None)
        Perform a stat system call on the given path, without following symbolic links.

        Like stat(), but do not follow symbolic links.
        Equivalent to stat(path, follow_symlinks=False).

    makedirs(name, mode=511, exist_ok=False)
        makedirs(name [, mode=0o777][, exist_ok=False])

        Super-mkdir; create a leaf directory and all intermediate ones.  Works like
        mkdir, except that any intermediate path segment (not just the rightmost)
        will be created if it does not exist. If the target directory already
        exists, raise an OSError if exist_ok is False. Otherwise no exception is
        raised.  This is recursive.

    mkdir(path, mode=511, *, dir_fd=None)
        Create a directory.

        If dir_fd is not None, it should be a file descriptor open to a directory,
          and path should be relative; path will then be relative to that directory.
        dir_fd may not be implemented on your platform.
          If it is unavailable, using it will raise a NotImplementedError.

        The mode argument is ignored on Windows. Where it is used, the current umask
        value is first masked out.

    open(path, flags, mode=511, *, dir_fd=None)
        Open a file for low level IO.  Returns a file descriptor (integer).

        If dir_fd is not None, it should be a file descriptor open to a directory,
          and path should be relative; path will then be relative to that directory.
        dir_fd may not be implemented on your platform.
          If it is unavailable, using it will raise a NotImplementedError.

    pipe()
        Create a pipe.

        Returns a tuple of two file descriptors:
          (read_fd, write_fd)

    popen(cmd, mode='r', buffering=-1)

    putenv(name, value, /)
        Change or add an environment variable.

    read(fd, length, /)
        Read from a file descriptor.  Returns a bytes object.

    readlink(path, *, dir_fd=None)
        Return a string representing the path to which the symbolic link points.

        If dir_fd is not None, it should be a file descriptor open to a directory,
        and path should be relative; path will then be relative to that directory.

        dir_fd may not be implemented on your platform.  If it is unavailable,
        using it will raise a NotImplementedError.

    remove(path, *, dir_fd=None)
        Remove a file (same as unlink()).

        If dir_fd is not None, it should be a file descriptor open to a directory,
          and path should be relative; path will then be relative to that directory.
        dir_fd may not be implemented on your platform.
          If it is unavailable, using it will raise a NotImplementedError.

    removedirs(name)
        removedirs(name)

        Super-rmdir; remove a leaf directory and all empty intermediate
        ones.  Works like rmdir except that, if the leaf directory is
        successfully removed, directories corresponding to rightmost path
        segments will be pruned away until either the whole path is
        consumed or an error occurs.  Errors during this latter phase are
        ignored -- they generally mean that a directory was not empty.

    rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
        Rename a file or directory.

        If either src_dir_fd or dst_dir_fd is not None, it should be a file
          descriptor open to a directory, and the respective path string (src or dst)
          should be relative; the path will then be relative to that directory.
        src_dir_fd and dst_dir_fd, may not be implemented on your platform.
          If they are unavailable, using them will raise a NotImplementedError.

    renames(old, new)
        renames(old, new)

        Super-rename; create directories as necessary and delete any left
        empty.  Works like rename, except creation of any intermediate
        directories needed to make the new pathname good is attempted
        first.  After the rename, directories corresponding to rightmost
        path segments of the old name will be pruned until either the
        whole path is consumed or a nonempty directory is found.

        Note: this function can fail with the new directory structure made
        if you lack permissions needed to unlink the leaf directory or
        file.

    replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
        Rename a file or directory, overwriting the destination.

        If either src_dir_fd or dst_dir_fd is not None, it should be a file
          descriptor open to a directory, and the respective path string (src or dst)
          should be relative; the path will then be relative to that directory.
        src_dir_fd and dst_dir_fd, may not be implemented on your platform.
          If they are unavailable, using them will raise a NotImplementedError.

    rmdir(path, *, dir_fd=None)
        Remove a directory.

        If dir_fd is not None, it should be a file descriptor open to a directory,
          and path should be relative; path will then be relative to that directory.
        dir_fd may not be implemented on your platform.
          If it is unavailable, using it will raise a NotImplementedError.

    scandir(path=None)
        Return an iterator of DirEntry objects for given path.

        path can be specified as either str, bytes, or a path-like object.  If path
        is bytes, the names of yielded DirEntry objects will also be bytes; in
        all other circumstances they will be str.

        If path is None, uses the path='.'.

    set_blocking(fd, blocking, /)
        Set the blocking mode of the specified file descriptor.

        Set the O_NONBLOCK flag if blocking is False,
        clear the O_NONBLOCK flag otherwise.

    set_handle_inheritable(handle, inheritable, /)
        Set the inheritable flag of the specified handle.

    set_inheritable(fd, inheritable, /)
        Set the inheritable flag of the specified file descriptor.

    spawnl(mode, file, *args)
        spawnl(mode, file, *args) -> integer

        Execute file with arguments from args in a subprocess.
        If mode == P_NOWAIT return the pid of the process.
        If mode == P_WAIT return the process's exit code if it exits normally;
        otherwise return -SIG, where SIG is the signal that killed it.

    spawnle(mode, file, *args)
        spawnle(mode, file, *args, env) -> integer

        Execute file with arguments from args in a subprocess with the
        supplied environment.
        If mode == P_NOWAIT return the pid of the process.
        If mode == P_WAIT return the process's exit code if it exits normally;
        otherwise return -SIG, where SIG is the signal that killed it.

    spawnv(mode, path, argv, /)
        Execute the program specified by path in a new process.

        mode
          Mode of process creation.
        path
          Path of executable file.
        argv
          Tuple or list of strings.

    spawnve(mode, path, argv, env, /)
        Execute the program specified by path in a new process.

        mode
          Mode of process creation.
        path
          Path of executable file.
        argv
          Tuple or list of strings.
        env
          Dictionary of strings mapping to strings.

    startfile(...)
        Start a file with its associated application.

        When "operation" is not specified or "open", this acts like
        double-clicking the file in Explorer, or giving the file name as an
        argument to the DOS "start" command: the file is opened with whatever
        application (if any) its extension is associated.
        When another "operation" is given, it specifies what should be done with
        the file.  A typical operation is "print".

        "arguments" is passed to the application, but should be omitted if the
        file is a document.

        "cwd" is the working directory for the operation. If "filepath" is
        relative, it will be resolved against this directory. This argument
        should usually be an absolute path.

        "show_cmd" can be used to override the recommended visibility option.
        See the Windows ShellExecute documentation for values.

        startfile returns as soon as the associated application is launched.
        There is no option to wait for the application to close, and no way
        to retrieve the application's exit status.

        The filepath is relative to the current directory.  If you want to use
        an absolute path, make sure the first character is not a slash ("/");
        the underlying Win32 ShellExecute function doesn't work if it is.

    stat(path, *, dir_fd=None, follow_symlinks=True)
        Perform a stat system call on the given path.

          path
            Path to be examined; can be string, bytes, a path-like object or
            open-file-descriptor int.
          dir_fd
            If not None, it should be a file descriptor open to a directory,
            and path should be a relative string; path will then be relative to
            that directory.
          follow_symlinks
            If False, and the last element of the path is a symbolic link,
            stat will examine the symbolic link itself instead of the file
            the link points to.

        dir_fd and follow_symlinks may not be implemented
          on your platform.  If they are unavailable, using them will raise a
          NotImplementedError.

        It's an error to use dir_fd or follow_symlinks when specifying path as
          an open file descriptor.

    strerror(code, /)
        Translate an error code to a message string.

    symlink(src, dst, target_is_directory=False, *, dir_fd=None)
        Create a symbolic link pointing to src named dst.

        target_is_directory is required on Windows if the target is to be
          interpreted as a directory.  (On Windows, symlink requires
          Windows 6.0 or greater, and raises a NotImplementedError otherwise.)
          target_is_directory is ignored on non-Windows platforms.

        If dir_fd is not None, it should be a file descriptor open to a directory,
          and path should be relative; path will then be relative to that directory.
        dir_fd may not be implemented on your platform.
          If it is unavailable, using it will raise a NotImplementedError.

    system(command)
        Execute the command in a subshell.

    times()
        Return a collection containing process timing information.

        The object returned behaves like a named tuple with these fields:
          (utime, stime, cutime, cstime, elapsed_time)
        All fields are floating-point numbers.

    truncate(path, length)
        Truncate a file, specified by path, to a specific length.

        On some platforms, path may also be specified as an open file descriptor.
          If this functionality is unavailable, using it raises an exception.

    umask(mask, /)
        Set the current numeric umask and return the previous umask.

    unlink(path, *, dir_fd=None)
        Remove a file (same as remove()).

        If dir_fd is not None, it should be a file descriptor open to a directory,
          and path should be relative; path will then be relative to that directory.
        dir_fd may not be implemented on your platform.
          If it is unavailable, using it will raise a NotImplementedError.

    unsetenv(name, /)
        Delete an environment variable.

    urandom(size, /)
        Return a bytes object containing random bytes suitable for cryptographic use.

    utime(...)
        Set the access and modified time of path.

        path may always be specified as a string.
        On some platforms, path may also be specified as an open file descriptor.
          If this functionality is unavailable, using it raises an exception.

        If times is not None, it must be a tuple (atime, mtime);
            atime and mtime should be expressed as float seconds since the epoch.
        If ns is specified, it must be a tuple (atime_ns, mtime_ns);
            atime_ns and mtime_ns should be expressed as integer nanoseconds
            since the epoch.
        If times is None and ns is unspecified, utime uses the current time.
        Specifying tuples for both times and ns is an error.

        If dir_fd is not None, it should be a file descriptor open to a directory,
          and path should be relative; path will then be relative to that directory.
        If follow_symlinks is False, and the last element of the path is a symbolic
          link, utime will modify the symbolic link itself instead of the file the
          link points to.
        It is an error to use dir_fd or follow_symlinks when specifying path
          as an open file descriptor.
        dir_fd and follow_symlinks may not be available on your platform.
          If they are unavailable, using them will raise a NotImplementedError.

    waitpid(pid, options, /)
        Wait for completion of a given process.

        Returns a tuple of information regarding the process:
            (pid, status << 8)

        The options argument is ignored on Windows.

    waitstatus_to_exitcode(status)
        Convert a wait status to an exit code.

        On Unix:

        * If WIFEXITED(status) is true, return WEXITSTATUS(status).
        * If WIFSIGNALED(status) is true, return -WTERMSIG(status).
        * Otherwise, raise a ValueError.

        On Windows, return status shifted right by 8 bits.

        On Unix, if the process is being traced or if waitpid() was called with
        WUNTRACED option, the caller must first check if WIFSTOPPED(status) is true.
        This function must not be called if WIFSTOPPED(status) is true.

    walk(top, topdown=True, onerror=None, followlinks=False)
        Directory tree generator.

        For each directory in the directory tree rooted at top (including top
        itself, but excluding '.' and '..'), yields a 3-tuple

            dirpath, dirnames, filenames

        dirpath is a string, the path to the directory.  dirnames is a list of
        the names of the subdirectories in dirpath (including symlinks to directories,
        and excluding '.' and '..').
        filenames is a list of the names of the non-directory files in dirpath.
        Note that the names in the lists are just names, with no path components.
        To get a full path (which begins with top) to a file or directory in
        dirpath, do os.path.join(dirpath, name).

        If optional arg 'topdown' is true or not specified, the triple for a
        directory is generated before the triples for any of its subdirectories
        (directories are generated top down).  If topdown is false, the triple
        for a directory is generated after the triples for all of its
        subdirectories (directories are generated bottom up).

        When topdown is true, the caller can modify the dirnames list in-place
        (e.g., via del or slice assignment), and walk will only recurse into the
        subdirectories whose names remain in dirnames; this can be used to prune the
        search, or to impose a specific order of visiting.  Modifying dirnames when
        topdown is false has no effect on the behavior of os.walk(), since the
        directories in dirnames have already been generated by the time dirnames
        itself is generated. No matter the value of topdown, the list of
        subdirectories is retrieved before the tuples for the directory and its
        subdirectories are generated.

        By default errors from the os.scandir() call are ignored.  If
        optional arg 'onerror' is specified, it should be a function; it
        will be called with one argument, an OSError instance.  It can
        report the error to continue with the walk, or raise the exception
        to abort the walk.  Note that the filename is available as the
        filename attribute of the exception object.

        By default, os.walk does not follow symbolic links to subdirectories on
        systems that support them.  In order to get this functionality, set the
        optional argument 'followlinks' to true.

        Caution:  if you pass a relative pathname for top, don't change the
        current working directory between resumptions of walk.  walk never
        changes the current directory, and assumes that the client doesn't
        either.

        Example:

        import os
        from os.path import join, getsize
        for root, dirs, files in os.walk('python/Lib/email'):
            print(root, "consumes ")
            print(sum(getsize(join(root, name)) for name in files), end=" ")
            print("bytes in", len(files), "non-directory files")
            if 'CVS' in dirs:
                dirs.remove('CVS')  # don't visit CVS directories

    write(fd, data, /)
        Write a bytes object to a file descriptor.

DATA
    EX_OK = 0
    F_OK = 0
    O_APPEND = 8
    O_BINARY = 32768
    O_CREAT = 256
    O_EXCL = 1024
    O_NOINHERIT = 128
    O_RANDOM = 16
    O_RDONLY = 0
    O_RDWR = 2
    O_SEQUENTIAL = 32
    O_SHORT_LIVED = 4096
    O_TEMPORARY = 64
    O_TEXT = 16384
    O_TRUNC = 512
    O_WRONLY = 1
    P_DETACH = 4
    P_NOWAIT = 1
    P_NOWAITO = 3
    P_OVERLAY = 2
    P_WAIT = 0
    R_OK = 4
    SEEK_CUR = 1
    SEEK_END = 2
    SEEK_SET = 0
    TMP_MAX = 2147483647
    W_OK = 2
    X_OK = 1
    __all__ = ['altsep', 'curdir', 'pardir', 'sep', 'pathsep', 'linesep', ...
    altsep = '/'
    curdir = '.'
    defpath = r'.;C:\bin'
    devnull = 'nul'
    environ = environ({'ALLUSERSPROFILE': 'C:\\ProgramData', '...undled\\l...
    extsep = '.'
    linesep = '\r\n'
    name = 'nt'
    pardir = '..'
    pathsep = ';'
    sep = r'\'
    supports_bytes_environ = False

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\os.py

beautifulsoup4.re
Python Library Documentation: package re

NAME
    re - Support for regular expressions (RE).

MODULE REFERENCE
    https://docs.python.org/3.12/library/re.html

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.

DESCRIPTION
    This module provides regular expression matching operations similar to
    those found in Perl.  It supports both 8-bit and Unicode strings; both
    the pattern and the strings being processed can contain null bytes and
    characters outside the US ASCII range.

    Regular expressions can contain both special and ordinary characters.
    Most ordinary characters, like "A", "a", or "0", are the simplest
    regular expressions; they simply match themselves.  You can
    concatenate ordinary characters, so last matches the string 'last'.

    The special characters are:
        "."      Matches any character except a newline.
        "^"      Matches the start of the string.
        "$"      Matches the end of the string or just before the newline at
                 the end of the string.
        "*"      Matches 0 or more (greedy) repetitions of the preceding RE.
                 Greedy means that it will match as many repetitions as possible.
        "+"      Matches 1 or more (greedy) repetitions of the preceding RE.
        "?"      Matches 0 or 1 (greedy) of the preceding RE.
        *?,+?,?? Non-greedy versions of the previous three special characters.
        {m,n}    Matches from m to n repetitions of the preceding RE.
        {m,n}?   Non-greedy version of the above.
        "\\"     Either escapes special characters or signals a special sequence.
        []       Indicates a set of characters.
                 A "^" as the first character indicates a complementing set.
        "|"      A|B, creates an RE that will match either A or B.
        (...)    Matches the RE inside the parentheses.
                 The contents can be retrieved or matched later in the string.
        (?aiLmsux) The letters set the corresponding flags defined below.
        (?:...)  Non-grouping version of regular parentheses.
        (?P<name>...) The substring matched by the group is accessible by name.
        (?P=name)     Matches the text matched earlier by the group named name.
        (?#...)  A comment; ignored.
        (?=...)  Matches if ... matches next, but doesn't consume the string.
        (?!...)  Matches if ... doesn't match next.
        (?<=...) Matches if preceded by ... (must be fixed length).
        (?<!...) Matches if not preceded by ... (must be fixed length).
        (?(id/name)yes|no) Matches yes pattern if the group with id/name matched,
                           the (optional) no pattern otherwise.

    The special sequences consist of "\\" and a character from the list
    below.  If the ordinary character is not on the list, then the
    resulting RE will match the second character.
        \number  Matches the contents of the group of the same number.
        \A       Matches only at the start of the string.
        \Z       Matches only at the end of the string.
        \b       Matches the empty string, but only at the start or end of a word.
        \B       Matches the empty string, but not at the start or end of a word.
        \d       Matches any decimal digit; equivalent to the set [0-9] in
                 bytes patterns or string patterns with the ASCII flag.
                 In string patterns without the ASCII flag, it will match the whole
                 range of Unicode digits.
        \D       Matches any non-digit character; equivalent to [^\d].
        \s       Matches any whitespace character; equivalent to [ \t\n\r\f\v] in
                 bytes patterns or string patterns with the ASCII flag.
                 In string patterns without the ASCII flag, it will match the whole
                 range of Unicode whitespace characters.
        \S       Matches any non-whitespace character; equivalent to [^\s].
        \w       Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]
                 in bytes patterns or string patterns with the ASCII flag.
                 In string patterns without the ASCII flag, it will match the
                 range of Unicode alphanumeric characters (letters plus digits
                 plus underscore).
                 With LOCALE, it will match the set [0-9_] plus characters defined
                 as letters for the current locale.
        \W       Matches the complement of \w.
        \\       Matches a literal backslash.

    This module exports the following functions:
        match     Match a regular expression pattern to the beginning of a string.
        fullmatch Match a regular expression pattern to all of a string.
        search    Search a string for the presence of a pattern.
        sub       Substitute occurrences of a pattern found in a string.
        subn      Same as sub, but also return the number of substitutions made.
        split     Split a string by the occurrences of a pattern.
        findall   Find all occurrences of a pattern in a string.
        finditer  Return an iterator yielding a Match object for each match.
        compile   Compile a pattern into a Pattern object.
        purge     Clear the regular expression cache.
        escape    Backslash all non-alphanumerics in a string.

    Each function other than purge and escape can take an optional 'flags' argument
    consisting of one or more of the following module constants, joined by "|".
    A, L, and U are mutually exclusive.
        A  ASCII       For string patterns, make \w, \W, \b, \B, \d, \D
                       match the corresponding ASCII character categories
                       (rather than the whole Unicode categories, which is the
                       default).
                       For bytes patterns, this flag is the only available
                       behaviour and needn't be specified.
        I  IGNORECASE  Perform case-insensitive matching.
        L  LOCALE      Make \w, \W, \b, \B, dependent on the current locale.
        M  MULTILINE   "^" matches the beginning of lines (after a newline)
                       as well as the string.
                       "$" matches the end of lines (before a newline) as well
                       as the end of the string.
        S  DOTALL      "." matches any character at all, including the newline.
        X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.
        U  UNICODE     For compatibility only. Ignored for string patterns (it
                       is the default), and forbidden for bytes patterns.

    This module also defines an exception 'error'.

PACKAGE CONTENTS
    _casefix
    _compiler
    _constants
    _parser

CLASSES
    builtins.Exception(builtins.BaseException)
        error
    builtins.object
        Match
        Pattern
    enum.IntFlag(builtins.int, enum.ReprEnum, enum.Flag)
        RegexFlag

    class Match(builtins.object)
     |  The result of re.match() and re.search().
     |  Match objects always have a boolean value of True.
     |
     |  Methods defined here:
     |
     |  __copy__(self, /)
     |
     |  __deepcopy__(self, memo, /)
     |
     |  __getitem__(self, key, /)
     |      Return self[key].
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  end(self, group=0, /)
     |      Return index of the end of the substring matched by group.
     |
     |  expand(self, /, template)
     |      Return the string obtained by doing backslash substitution on the string template, as done by the sub() method.
     |
     |  group(...)
     |      group([group1, ...]) -> str or tuple.
     |      Return subgroup(s) of the match by indices or names.
     |      For 0 returns the entire match.
     |
     |  groupdict(self, /, default=None)
     |      Return a dictionary containing all the named subgroups of the match, keyed by the subgroup name.
     |
     |      default
     |        Is used for groups that did not participate in the match.
     |
     |  groups(self, /, default=None)
     |      Return a tuple containing all the subgroups of the match, from 1.
     |
     |      default
     |        Is used for groups that did not participate in the match.
     |
     |  span(self, group=0, /)
     |      For match object m, return the 2-tuple (m.start(group), m.end(group)).
     |
     |  start(self, group=0, /)
     |      Return index of the start of the substring matched by group.
     |
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |
     |  __class_getitem__(...)
     |      See PEP 585
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  endpos
     |      The index into the string beyond which the RE engine will not go.
     |
     |  lastgroup
     |      The name of the last matched capturing group.
     |
     |  lastindex
     |      The integer index of the last matched capturing group.
     |
     |  pos
     |      The index into the string at which the RE engine started looking for a match.
     |
     |  re
     |      The regular expression object.
     |
     |  regs
     |
     |  string
     |      The string passed to match() or search().

    class Pattern(builtins.object)
     |  Compiled regular expression object.
     |
     |  Methods defined here:
     |
     |  __copy__(self, /)
     |
     |  __deepcopy__(self, memo, /)
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  findall(self, /, string, pos=0, endpos=9223372036854775807)
     |      Return a list of all non-overlapping matches of pattern in string.
     |
     |  finditer(self, /, string, pos=0, endpos=9223372036854775807)
     |      Return an iterator over all non-overlapping matches for the RE pattern in string.
     |
     |      For each match, the iterator returns a match object.
     |
     |  fullmatch(self, /, string, pos=0, endpos=9223372036854775807)
     |      Matches against all of the string.
     |
     |  match(self, /, string, pos=0, endpos=9223372036854775807)
     |      Matches zero or more characters at the beginning of the string.
     |
     |  scanner(self, /, string, pos=0, endpos=9223372036854775807)
     |
     |  search(self, /, string, pos=0, endpos=9223372036854775807)
     |      Scan through string looking for a match, and return a corresponding match object instance.
     |
     |      Return None if no position in the string matches.
     |
     |  split(self, /, string, maxsplit=0)
     |      Split string by the occurrences of pattern.
     |
     |  sub(self, /, repl, string, count=0)
     |      Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.
     |
     |  subn(self, /, repl, string, count=0)
     |      Return the tuple (new_string, number_of_subs_made) found by replacing the leftmost non-overlapping occurrences of pattern with the replacement repl.
     |
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |
     |  __class_getitem__(...)
     |      See PEP 585
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  flags
     |      The regex matching flags.
     |
     |  groupindex
     |      A dictionary mapping group names to group numbers.
     |
     |  groups
     |      The number of capturing groups in the pattern.
     |
     |  pattern
     |      The pattern string from which the RE object was compiled.

    class RegexFlag(enum.IntFlag)
     |  RegexFlag(*values)
     |
     |  An enumeration.
     |
     |  Method resolution order:
     |      RegexFlag
     |      enum.IntFlag
     |      builtins.int
     |      enum.ReprEnum
     |      enum.Flag
     |      enum.Enum
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __and__(self, other) from enum.Flag
     |
     |  __format__(self, format_spec, /) from builtins.int
     |      Convert to a string according to format_spec.
     |
     |  __invert__(self) from enum.Flag
     |
     |  __new__(cls, value) from enum.Enum
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  __or__(self, other) from enum.Flag
     |      Return self|value.
     |
     |  __rand__ = __and__(self, other)
     |
     |  __repr__ = global_flag_repr(self) from enum
     |      use module.flag_name instead of class.flag_name
     |
     |      the module is the last module in case of a multi-module name
     |
     |  __ror__ = __or__(self, other)
     |
     |  __rxor__ = __xor__(self, other)
     |
     |  __str__(self, /) from builtins.object
     |      Return str(self).
     |
     |  __xor__(self, other) from enum.Flag
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  ASCII = re.ASCII
     |
     |  DEBUG = re.DEBUG
     |
     |  DOTALL = re.DOTALL
     |
     |  IGNORECASE = re.IGNORECASE
     |
     |  LOCALE = re.LOCALE
     |
     |  MULTILINE = re.MULTILINE
     |
     |  TEMPLATE = re.TEMPLATE
     |
     |  UNICODE = re.UNICODE
     |
     |  VERBOSE = re.VERBOSE
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.int:
     |
     |  __abs__(self, /)
     |      abs(self)
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __bool__(self, /)
     |      True if self else False
     |
     |  __ceil__(...)
     |      Ceiling of an Integral returns itself.
     |
     |  __divmod__(self, value, /)
     |      Return divmod(self, value).
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __float__(self, /)
     |      float(self)
     |
     |  __floor__(...)
     |      Flooring an Integral returns itself.
     |
     |  __floordiv__(self, value, /)
     |      Return self//value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getnewargs__(self, /)
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __hash__(self, /)
     |      Return hash(self).
     |
     |  __index__(self, /)
     |      Return self converted to an integer, if self is suitable for use as an index into a list.
     |
     |  __int__(self, /)
     |      int(self)
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __lshift__(self, value, /)
     |      Return self<<value.
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mod__(self, value, /)
     |      Return self%value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __neg__(self, /)
     |      -self
     |
     |  __pos__(self, /)
     |      +self
     |
     |  __pow__(self, value, mod=None, /)
     |      Return pow(self, value, mod).
     |
     |  __radd__(self, value, /)
     |      Return value+self.
     |
     |  __rdivmod__(self, value, /)
     |      Return divmod(value, self).
     |
     |  __rfloordiv__(self, value, /)
     |      Return value//self.
     |
     |  __rlshift__(self, value, /)
     |      Return value<<self.
     |
     |  __rmod__(self, value, /)
     |      Return value%self.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __round__(...)
     |      Rounding an Integral returns itself.
     |
     |      Rounding with an ndigits argument also returns an integer.
     |
     |  __rpow__(self, value, mod=None, /)
     |      Return pow(value, self, mod).
     |
     |  __rrshift__(self, value, /)
     |      Return value>>self.
     |
     |  __rshift__(self, value, /)
     |      Return self>>value.
     |
     |  __rsub__(self, value, /)
     |      Return value-self.
     |
     |  __rtruediv__(self, value, /)
     |      Return value/self.
     |
     |  __sizeof__(self, /)
     |      Returns size in memory, in bytes.
     |
     |  __sub__(self, value, /)
     |      Return self-value.
     |
     |  __truediv__(self, value, /)
     |      Return self/value.
     |
     |  __trunc__(...)
     |      Truncating an Integral returns itself.
     |
     |  as_integer_ratio(self, /)
     |      Return a pair of integers, whose ratio is equal to the original int.
     |
     |      The ratio is in lowest terms and has a positive denominator.
     |
     |      >>> (10).as_integer_ratio()
     |      (10, 1)
     |      >>> (-10).as_integer_ratio()
     |      (-10, 1)
     |      >>> (0).as_integer_ratio()
     |      (0, 1)
     |
     |  bit_count(self, /)
     |      Number of ones in the binary representation of the absolute value of self.
     |
     |      Also known as the population count.
     |
     |      >>> bin(13)
     |      '0b1101'
     |      >>> (13).bit_count()
     |      3
     |
     |  bit_length(self, /)
     |      Number of bits necessary to represent self in binary.
     |
     |      >>> bin(37)
     |      '0b100101'
     |      >>> (37).bit_length()
     |      6
     |
     |  conjugate(...)
     |      Returns self, the complex conjugate of any int.
     |
     |  is_integer(self, /)
     |      Returns True. Exists for duck type compatibility with float.is_integer.
     |
     |  to_bytes(self, /, length=1, byteorder='big', *, signed=False)
     |      Return an array of bytes representing an integer.
     |
     |      length
     |        Length of bytes object to use.  An OverflowError is raised if the
     |        integer is not representable with the given number of bytes.  Default
     |        is length 1.
     |      byteorder
     |        The byte order used to represent the integer.  If byteorder is 'big',
     |        the most significant byte is at the beginning of the byte array.  If
     |        byteorder is 'little', the most significant byte is at the end of the
     |        byte array.  To request the native byte order of the host system, use
     |        `sys.byteorder' as the byte order value.  Default is to use 'big'.
     |      signed
     |        Determines whether two's complement is used to represent the integer.
     |        If signed is False and a negative integer is given, an OverflowError
     |        is raised.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.int:
     |
     |  from_bytes(bytes, byteorder='big', *, signed=False)
     |      Return the integer represented by the given array of bytes.
     |
     |      bytes
     |        Holds the array of bytes to convert.  The argument must either
     |        support the buffer protocol or be an iterable object producing bytes.
     |        Bytes and bytearray are examples of built-in objects that support the
     |        buffer protocol.
     |      byteorder
     |        The byte order used to represent the integer.  If byteorder is 'big',
     |        the most significant byte is at the beginning of the byte array.  If
     |        byteorder is 'little', the most significant byte is at the end of the
     |        byte array.  To request the native byte order of the host system, use
     |        `sys.byteorder' as the byte order value.  Default is to use 'big'.
     |      signed
     |        Indicates whether two's complement is used to represent the integer.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from builtins.int:
     |
     |  denominator
     |      the denominator of a rational number in lowest terms
     |
     |  imag
     |      the imaginary part of a complex number
     |
     |  numerator
     |      the numerator of a rational number in lowest terms
     |
     |  real
     |      the real part of a complex number
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from enum.Flag:
     |
     |  __contains__(self, other)
     |      Returns True if self has at least the same flags set as other.
     |
     |  __iter__(self)
     |      Returns flags in definition order.
     |
     |  __len__(self)
     |      Return the number of members (no aliases)
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from enum.Enum:
     |
     |  __dir__(self)
     |      Returns public methods and other interesting attributes.
     |
     |  __init__(self, *args, **kwds)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |
     |  __reduce_ex__(self, proto)
     |      Helper for pickle.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from enum.Enum:
     |
     |  name
     |      The name of the Enum member.
     |
     |  value
     |      The value of the Enum member.
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from enum.EnumType:
     |
     |  __getitem__(name)
     |      Return the member matching `name`.
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from enum.EnumType:
     |
     |  __members__
     |      Returns a mapping of member name->value.
     |
     |      This mapping lists all enum members, including aliases. Note that this
     |      is a read-only view of the internal mapping.

    class error(builtins.Exception)
     |  error(msg, pattern=None, pos=None)
     |
     |  Exception raised for invalid regular expressions.
     |
     |  Attributes:
     |
     |      msg: The unformatted error message
     |      pattern: The regular expression pattern
     |      pos: The index in the pattern where compilation failed (may be None)
     |      lineno: The line corresponding to pos (may be None)
     |      colno: The column corresponding to pos (may be None)
     |
     |  Method resolution order:
     |      error
     |      builtins.Exception
     |      builtins.BaseException
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  __init__(self, msg, pattern=None, pos=None) from re._constants.error
     |      Initialize self.  See help(type(self)) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.Exception:
     |
     |  __new__(*args, **kwargs) class method of builtins.Exception
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.BaseException:
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __reduce__(...)
     |      Helper for pickle.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __setstate__(...)
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  add_note(...)
     |      Exception.add_note(note) --
     |      add a note to the exception
     |
     |  with_traceback(...)
     |      Exception.with_traceback(tb) --
     |      set self.__traceback__ to tb and return self.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from builtins.BaseException:
     |
     |  __cause__
     |      exception cause
     |
     |  __context__
     |      exception context
     |
     |  __dict__
     |
     |  __suppress_context__
     |
     |  __traceback__
     |
     |  args

FUNCTIONS
    compile(pattern, flags=0)
        Compile a regular expression pattern, returning a Pattern object.

    escape(pattern)
        Escape special characters in a string.

    findall(pattern, string, flags=0)
        Return a list of all non-overlapping matches in the string.

        If one or more capturing groups are present in the pattern, return
        a list of groups; this will be a list of tuples if the pattern
        has more than one group.

        Empty matches are included in the result.

    finditer(pattern, string, flags=0)
        Return an iterator over all non-overlapping matches in the
        string.  For each match, the iterator returns a Match object.

        Empty matches are included in the result.

    fullmatch(pattern, string, flags=0)
        Try to apply the pattern to all of the string, returning
        a Match object, or None if no match was found.

    match(pattern, string, flags=0)
        Try to apply the pattern at the start of the string, returning
        a Match object, or None if no match was found.

    purge()
        Clear the regular expression caches

    search(pattern, string, flags=0)
        Scan through string looking for a match to the pattern, returning
        a Match object, or None if no match was found.

    split(pattern, string, maxsplit=0, flags=0)
        Split the source string by the occurrences of the pattern,
        returning a list containing the resulting substrings.  If
        capturing parentheses are used in pattern, then the text of all
        groups in the pattern are also returned as part of the resulting
        list.  If maxsplit is nonzero, at most maxsplit splits occur,
        and the remainder of the string is returned as the final element
        of the list.

    sub(pattern, repl, string, count=0, flags=0)
        Return the string obtained by replacing the leftmost
        non-overlapping occurrences of the pattern in string by the
        replacement repl.  repl can be either a string or a callable;
        if a string, backslash escapes in it are processed.  If it is
        a callable, it's passed the Match object and must return
        a replacement string to be used.

    subn(pattern, repl, string, count=0, flags=0)
        Return a 2-tuple containing (new_string, number).
        new_string is the string obtained by replacing the leftmost
        non-overlapping occurrences of the pattern in the source
        string by the replacement repl.  number is the number of
        substitutions that were made. repl can be either a string or a
        callable; if a string, backslash escapes in it are processed.
        If it is a callable, it's passed the Match object and must
        return a replacement string to be used.

    template(pattern, flags=0)
        Compile a template pattern, returning a Pattern object, deprecated

DATA
    A = re.ASCII
    ASCII = re.ASCII
    DOTALL = re.DOTALL
    I = re.IGNORECASE
    IGNORECASE = re.IGNORECASE
    L = re.LOCALE
    LOCALE = re.LOCALE
    M = re.MULTILINE
    MULTILINE = re.MULTILINE
    NOFLAG = re.NOFLAG
    S = re.DOTALL
    U = re.UNICODE
    UNICODE = re.UNICODE
    VERBOSE = re.VERBOSE
    X = re.VERBOSE
    __all__ = ['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'fi...

VERSION
    2.2.1

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\re\__init__.py

beautifulsoup4.sys
Python Library Documentation: built-in module sys

NAME
    sys

MODULE REFERENCE
    https://docs.python.org/3.12/library/sys.html

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.

DESCRIPTION
    This module provides access to some objects used or maintained by the
    interpreter and to functions that interact strongly with the interpreter.

    Dynamic objects:

    argv -- command line arguments; argv[0] is the script pathname if known
    path -- module search path; path[0] is the script directory, else ''
    modules -- dictionary of loaded modules

    displayhook -- called to show results in an interactive session
    excepthook -- called to handle any uncaught exception other than SystemExit
      To customize printing in an interactive session or to install a custom
      top-level exception handler, assign other functions to replace these.

    stdin -- standard input file object; used by input()
    stdout -- standard output file object; used by print()
    stderr -- standard error object; used for error messages
      By assigning other file objects (or objects that behave like files)
      to these, it is possible to redirect all of the interpreter's I/O.

    last_exc - the last uncaught exception
      Only available in an interactive session after a
      traceback has been printed.
    last_type -- type of last uncaught exception
    last_value -- value of last uncaught exception
    last_traceback -- traceback of last uncaught exception
      These three are the (deprecated) legacy representation of last_exc.

    Static objects:

    builtin_module_names -- tuple of module names built into this interpreter
    copyright -- copyright notice pertaining to this interpreter
    exec_prefix -- prefix used to find the machine-specific Python library
    executable -- absolute path of the executable binary of the Python interpreter
    float_info -- a named tuple with information about the float implementation.
    float_repr_style -- string indicating the style of repr() output for floats
    hash_info -- a named tuple with information about the hash algorithm.
    hexversion -- version information encoded as a single integer
    implementation -- Python implementation information.
    int_info -- a named tuple with information about the int implementation.
    maxsize -- the largest supported length of containers.
    maxunicode -- the value of the largest Unicode code point
    platform -- platform identifier
    prefix -- prefix used to find the Python library
    thread_info -- a named tuple with information about the thread implementation.
    version -- the version of this interpreter as a string
    version_info -- version information as a named tuple
    dllhandle -- [Windows only] integer handle of the Python DLL
    winver -- [Windows only] version number of the Python DLL
    _enablelegacywindowsfsencoding -- [Windows only]
    __stdin__ -- the original stdin; don't touch!
    __stdout__ -- the original stdout; don't touch!
    __stderr__ -- the original stderr; don't touch!
    __displayhook__ -- the original displayhook; don't touch!
    __excepthook__ -- the original excepthook; don't touch!

    Functions:

    displayhook() -- print an object to the screen, and save it in builtins._
    excepthook() -- print an exception and its traceback to sys.stderr
    exception() -- return the current thread's active exception
    exc_info() -- return information about the current thread's active exception
    exit() -- exit the interpreter by raising SystemExit
    getdlopenflags() -- returns flags to be used for dlopen() calls
    getprofile() -- get the global profiling function
    getrefcount() -- return the reference count for an object (plus one :-)
    getrecursionlimit() -- return the max recursion depth for the interpreter
    getsizeof() -- return the size of an object in bytes
    gettrace() -- get the global debug tracing function
    setdlopenflags() -- set the flags to be used for dlopen() calls
    setprofile() -- set the global profiling function
    setrecursionlimit() -- set the max recursion depth for the interpreter
    settrace() -- set the global debug tracing function

SUBMODULES
    monitoring

FUNCTIONS
    __breakpointhook__ = breakpointhook(...)
        breakpointhook(*args, **kws)

        This hook function is called by built-in breakpoint().

    __displayhook__ = displayhook(object, /)
        Print an object to sys.stdout and also save it in builtins._

    __excepthook__ = excepthook(exctype, value, traceback, /)
        Handle an exception by displaying it with a traceback on sys.stderr.

    __unraisablehook__ = unraisablehook(unraisable, /)
        Handle an unraisable exception.

        The unraisable argument has the following attributes:

        * exc_type: Exception type.
        * exc_value: Exception value, can be None.
        * exc_traceback: Exception traceback, can be None.
        * err_msg: Error message, can be None.
        * object: Object causing the exception, can be None.

    activate_stack_trampoline(backend, /)
        Activate stack profiler trampoline *backend*.

    addaudithook(hook)
        Adds a new audit hook callback.

    audit(...)
        audit(event, *args)

        Passes the event to any audit hooks that are attached.

    breakpointhook(...)
        breakpointhook(*args, **kws)

        This hook function is called by built-in breakpoint().

    call_tracing(func, args, /)
        Call func(*args), while tracing is enabled.

        The tracing state is saved, and restored afterwards.  This is intended
        to be called from a debugger from a checkpoint, to recursively debug
        some other code.

    deactivate_stack_trampoline()
        Deactivate the current stack profiler trampoline backend.

        If no stack profiler is activated, this function has no effect.

    displayhook(object, /)
        Print an object to sys.stdout and also save it in builtins._

    exc_info()
        Return current exception information: (type, value, traceback).

        Return information about the most recent exception caught by an except
        clause in the current stack frame or in an older stack frame.

    excepthook(exctype, value, traceback, /)
        Handle an exception by displaying it with a traceback on sys.stderr.

    exception()
        Return the current exception.

        Return the most recent exception caught by an except clause
        in the current stack frame or in an older stack frame, or None
        if no such exception exists.

    exit(status=None, /)
        Exit the interpreter by raising SystemExit(status).

        If the status is omitted or None, it defaults to zero (i.e., success).
        If the status is an integer, it will be used as the system exit status.
        If it is another kind of object, it will be printed and the system
        exit status will be one (i.e., failure).

    get_asyncgen_hooks()
        Return the installed asynchronous generators hooks.

        This returns a namedtuple of the form (firstiter, finalizer).

    get_coroutine_origin_tracking_depth()
        Check status of origin tracking for coroutine objects in this thread.

    get_int_max_str_digits()
        Return the maximum string digits limit for non-binary int<->str conversions.

    getallocatedblocks()
        Return the number of memory blocks currently allocated.

    getdefaultencoding()
        Return the current default encoding used by the Unicode implementation.

    getfilesystemencodeerrors()
        Return the error mode used Unicode to OS filename conversion.

    getfilesystemencoding()
        Return the encoding used to convert Unicode filenames to OS filenames.

    getprofile()
        Return the profiling function set with sys.setprofile.

        See the profiler chapter in the library manual.

    getrecursionlimit()
        Return the current value of the recursion limit.

        The recursion limit is the maximum depth of the Python interpreter
        stack.  This limit prevents infinite recursion from causing an overflow
        of the C stack and crashing Python.

    getrefcount(object, /)
        Return the reference count of object.

        The count returned is generally one higher than you might expect,
        because it includes the (temporary) reference as an argument to
        getrefcount().

    getsizeof(...)
        getsizeof(object [, default]) -> int

        Return the size of object in bytes.

    getswitchinterval()
        Return the current thread switch interval; see sys.setswitchinterval().

    gettrace()
        Return the global debug tracing function set with sys.settrace.

        See the debugger chapter in the library manual.

    getunicodeinternedsize()
        Return the number of elements of the unicode interned dictionary

    getwindowsversion()
        Return info about the running version of Windows as a named tuple.

        The members are named: major, minor, build, platform, service_pack,
        service_pack_major, service_pack_minor, suite_mask, product_type and
        platform_version. For backward compatibility, only the first 5 items
        are available by indexing. All elements are numbers, except
        service_pack and platform_type which are strings, and platform_version
        which is a 3-tuple. Platform is always 2. Product_type may be 1 for a
        workstation, 2 for a domain controller, 3 for a server.
        Platform_version is a 3-tuple containing a version number that is
        intended for identifying the OS rather than feature detection.

    intern(string, /)
        ``Intern'' the given string.

        This enters the string in the (global) table of interned strings whose
        purpose is to speed up dictionary lookups. Return the string itself or
        the previously interned string object with the same value.

    is_finalizing()
        Return True if Python is exiting.

    is_stack_trampoline_active()
        Return *True* if a stack profiler trampoline is active.

    set_asyncgen_hooks(...)
        set_asyncgen_hooks([firstiter] [, finalizer])

        Set a finalizer for async generators objects.

    set_coroutine_origin_tracking_depth(depth)
        Enable or disable origin tracking for coroutine objects in this thread.

        Coroutine objects will track 'depth' frames of traceback information
        about where they came from, available in their cr_origin attribute.

        Set a depth of 0 to disable.

    set_int_max_str_digits(maxdigits)
        Set the maximum string digits limit for non-binary int<->str conversions.

    setprofile(...)
        setprofile(function)

        Set the profiling function.  It will be called on each function call
        and return.  See the profiler chapter in the library manual.

    setrecursionlimit(limit, /)
        Set the maximum depth of the Python interpreter stack to n.

        This limit prevents infinite recursion from causing an overflow of the C
        stack and crashing Python.  The highest possible limit is platform-
        dependent.

    setswitchinterval(interval, /)
        Set the ideal thread switching delay inside the Python interpreter.

        The actual frequency of switching threads can be lower if the
        interpreter executes long sequences of uninterruptible code
        (this is implementation-specific and workload-dependent).

        The parameter must represent the desired switching delay in seconds
        A typical value is 0.005 (5 milliseconds).

    settrace(...)
        settrace(function)

        Set the global debug tracing function.  It will be called on each
        function call.  See the debugger chapter in the library manual.

    unraisablehook(unraisable, /)
        Handle an unraisable exception.

        The unraisable argument has the following attributes:

        * exc_type: Exception type.
        * exc_value: Exception value, can be None.
        * exc_traceback: Exception traceback, can be None.
        * err_msg: Error message, can be None.
        * object: Object causing the exception, can be None.

DATA
    __stderr__ = <_io.TextIOWrapper name='<stderr>' mode='w' encoding='cp1...
    __stdin__ = <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8...
    __stdout__ = <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1...
    api_version = 1013
    argv = [r'f:\JoeyCodes\PyDocs\py_docs.py', '--worker', 'beautifulsoup4...
    base_exec_prefix = r'C:\Users\Youse\AppData\Local\Programs\Python\Pyth...
    base_prefix = r'C:\Users\Youse\AppData\Local\Programs\Python\Python312...
    builtin_module_names = ('_abc', '_ast', '_bisect', '_blake2', '_codecs...
    byteorder = 'little'
    copyright = 'Copyright (c) 2001-2023 Python Software Foundati...ematis...
    dllhandle = 140727031824384
    dont_write_bytecode = False
    exec_prefix = r'C:\Users\Youse\AppData\Local\Programs\Python\Python312...
    executable = r'C:\Users\Youse\AppData\Local\Programs\Python\Python312\...
    flags = sys.flags(debug=0, inspect=0, interactive=0, opt...ding=0, saf...
    float_info = sys.float_info(max=1.7976931348623157e+308, max_...epsilo...
    float_repr_style = 'short'
    hash_info = sys.hash_info(width=64, modulus=2305843009213693...iphash1...
    hexversion = 51119856
    implementation = namespace(name='cpython', cache_tag='cpython-312...as...
    int_info = sys.int_info(bits_per_digit=30, sizeof_digit=4, ..._str_dig...
    maxsize = 9223372036854775807
    maxunicode = 1114111
    meta_path = [<_distutils_hack.DistutilsMetaFinder object>, <class '_fr...
    modules = {'__future__': <module '__future__' from 'C:\\Users\\Youse\\...
    orig_argv = [r'C:\Users\Youse\AppData\Local\Programs\Python\Python312\...
    path = [r'f:\JoeyCodes\PyDocs', r'C:\Users\Youse\AppData\Local\Program...
    path_hooks = [<class 'zipimport.zipimporter'>, <function FileFinder.pa...
    path_importer_cache = {r'C:\Users\Youse\AppData\Local\Programs\Python\...
    platform = 'win32'
    platlibdir = 'DLLs'
    prefix = r'C:\Users\Youse\AppData\Local\Programs\Python\Python312'
    pycache_prefix = None
    stderr = <_io.TextIOWrapper name='<stderr>' mode='w' encoding='cp1252'...
    stdin = <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8'>
    stdlib_module_names = frozenset({'__future__', '_abc', '_aix_support',...
    stdout = <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1252'...
    thread_info = sys.thread_info(name='nt', lock=None, version=None)
    version = '3.12.6 (tags/v3.12.6:a4a2d2b, Sep  6 2024, 20:11:23) [MSC v...
    version_info = sys.version_info(major=3, minor=12, micro=6, releaselev...
    warnoptions = []
    winver = '3.12'

FILE
    (built-in)

beautifulsoup4.traceback
Python Library Documentation: module traceback

NAME
    traceback - Extract, format and print information about Python stack traces.

MODULE REFERENCE
    https://docs.python.org/3.12/library/traceback.html

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.

CLASSES
    builtins.list(builtins.object)
        StackSummary
    builtins.object
        FrameSummary
        TracebackException

    class FrameSummary(builtins.object)
     |  FrameSummary(filename, lineno, name, *, lookup_line=True, locals=None, line=None, end_lineno=None, colno=None, end_colno=None)
     |
     |  Information about a single frame from a traceback.
     |
     |  - :attr:`filename` The filename for the frame.
     |  - :attr:`lineno` The line within filename for the frame that was
     |    active when the frame was captured.
     |  - :attr:`name` The name of the function or method that was executing
     |    when the frame was captured.
     |  - :attr:`line` The text from the linecache module for the
     |    of code that was running when the frame was captured.
     |  - :attr:`locals` Either None if locals were not supplied, or a dict
     |    mapping the name to the repr() of the variable.
     |
     |  Methods defined here:
     |
     |  __eq__(self, other)
     |      Return self==value.
     |
     |  __getitem__(self, pos)
     |
     |  __init__(self, filename, lineno, name, *, lookup_line=True, locals=None, line=None, end_lineno=None, colno=None, end_colno=None)
     |      Construct a FrameSummary.
     |
     |      :param lookup_line: If True, `linecache` is consulted for the source
     |          code line. Otherwise, the line will be looked up when first needed.
     |      :param locals: If supplied the frame locals, which will be captured as
     |          object representations.
     |      :param line: If provided, use this instead of looking up the line in
     |          the linecache.
     |
     |  __iter__(self)
     |
     |  __len__(self)
     |
     |  __repr__(self)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |
     |  line
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  colno
     |
     |  end_colno
     |
     |  end_lineno
     |
     |  filename
     |
     |  lineno
     |
     |  locals
     |
     |  name
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  __hash__ = None

    class StackSummary(builtins.list)
     |  StackSummary(iterable=(), /)
     |
     |  A list of FrameSummary objects, representing a stack of frames.
     |
     |  Method resolution order:
     |      StackSummary
     |      builtins.list
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  format(self)
     |      Format the stack ready for printing.
     |
     |      Returns a list of strings ready for printing.  Each string in the
     |      resulting list corresponds to a single frame from the stack.
     |      Each string ends in a newline; the strings may contain internal
     |      newlines as well, for those items with source text lines.
     |
     |      For long sequences of the same frame and line, the first few
     |      repetitions are shown, followed by a summary line stating the exact
     |      number of further repetitions.
     |
     |  format_frame_summary(self, frame_summary)
     |      Format the lines for a single FrameSummary.
     |
     |      Returns a string representing one frame involved in the stack. This
     |      gets called for every frame to be printed in the stack summary.
     |
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |
     |  extract(frame_gen, *, limit=None, lookup_lines=True, capture_locals=False)
     |      Create a StackSummary from a traceback or stack object.
     |
     |      :param frame_gen: A generator that yields (frame, lineno) tuples
     |          whose summaries are to be included in the stack.
     |      :param limit: None to include all frames or the number of frames to
     |          include.
     |      :param lookup_lines: If True, lookup lines for each frame immediately,
     |          otherwise lookup is deferred until the frame is rendered.
     |      :param capture_locals: If True, the local variables from each frame will
     |          be captured as object representations into the FrameSummary.
     |
     |  from_list(a_list)
     |      Create a StackSummary object from a supplied list of
     |      FrameSummary objects or old-style list of tuples.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from builtins.list:
     |
     |  __add__(self, value, /)
     |      Return self+value.
     |
     |  __contains__(self, key, /)
     |      Return bool(key in self).
     |
     |  __delitem__(self, key, /)
     |      Delete self[key].
     |
     |  __eq__(self, value, /)
     |      Return self==value.
     |
     |  __ge__(self, value, /)
     |      Return self>=value.
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __getitem__(self, index, /)
     |      Return self[index].
     |
     |  __gt__(self, value, /)
     |      Return self>value.
     |
     |  __iadd__(self, value, /)
     |      Implement self+=value.
     |
     |  __imul__(self, value, /)
     |      Implement self*=value.
     |
     |  __init__(self, /, *args, **kwargs)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |
     |  __iter__(self, /)
     |      Implement iter(self).
     |
     |  __le__(self, value, /)
     |      Return self<=value.
     |
     |  __len__(self, /)
     |      Return len(self).
     |
     |  __lt__(self, value, /)
     |      Return self<value.
     |
     |  __mul__(self, value, /)
     |      Return self*value.
     |
     |  __ne__(self, value, /)
     |      Return self!=value.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __reversed__(self, /)
     |      Return a reverse iterator over the list.
     |
     |  __rmul__(self, value, /)
     |      Return value*self.
     |
     |  __setitem__(self, key, value, /)
     |      Set self[key] to value.
     |
     |  __sizeof__(self, /)
     |      Return the size of the list in memory, in bytes.
     |
     |  append(self, object, /)
     |      Append object to the end of the list.
     |
     |  clear(self, /)
     |      Remove all items from list.
     |
     |  copy(self, /)
     |      Return a shallow copy of the list.
     |
     |  count(self, value, /)
     |      Return number of occurrences of value.
     |
     |  extend(self, iterable, /)
     |      Extend list by appending elements from the iterable.
     |
     |  index(self, value, start=0, stop=9223372036854775807, /)
     |      Return first index of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  insert(self, index, object, /)
     |      Insert object before index.
     |
     |  pop(self, index=-1, /)
     |      Remove and return item at index (default last).
     |
     |      Raises IndexError if list is empty or index is out of range.
     |
     |  remove(self, value, /)
     |      Remove first occurrence of value.
     |
     |      Raises ValueError if the value is not present.
     |
     |  reverse(self, /)
     |      Reverse *IN PLACE*.
     |
     |  sort(self, /, *, key=None, reverse=False)
     |      Sort the list in ascending order and return None.
     |
     |      The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
     |      order of two equal elements is maintained).
     |
     |      If a key function is given, apply it once to each list item and sort them,
     |      ascending or descending, according to their function values.
     |
     |      The reverse flag can be set to sort in descending order.
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from builtins.list:
     |
     |  __class_getitem__(...)
     |      See PEP 585
     |
     |  ----------------------------------------------------------------------
     |  Static methods inherited from builtins.list:
     |
     |  __new__(*args, **kwargs) class method of builtins.list
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from builtins.list:
     |
     |  __hash__ = None

    class TracebackException(builtins.object)
     |  TracebackException(exc_type, exc_value, exc_traceback, *, limit=None, lookup_lines=True, capture_locals=False, compact=False, max_group_width=15, max_group_depth=10, _seen=None)
     |
     |  An exception ready for rendering.
     |
     |  The traceback module captures enough attributes from the original exception
     |  to this intermediary form to ensure that no references are held, while
     |  still being able to fully print or format it.
     |
     |  max_group_width and max_group_depth control the formatting of exception
     |  groups. The depth refers to the nesting level of the group, and the width
     |  refers to the size of a single exception group's exceptions array. The
     |  formatted output is truncated when either limit is exceeded.
     |
     |  Use `from_exception` to create TracebackException instances from exception
     |  objects, or the constructor to create TracebackException instances from
     |  individual components.
     |
     |  - :attr:`__cause__` A TracebackException of the original *__cause__*.
     |  - :attr:`__context__` A TracebackException of the original *__context__*.
     |  - :attr:`exceptions` For exception groups - a list of TracebackException
     |    instances for the nested *exceptions*.  ``None`` for other exceptions.
     |  - :attr:`__suppress_context__` The *__suppress_context__* value from the
     |    original exception.
     |  - :attr:`stack` A `StackSummary` representing the traceback.
     |  - :attr:`exc_type` The class of the original traceback.
     |  - :attr:`filename` For syntax errors - the filename where the error
     |    occurred.
     |  - :attr:`lineno` For syntax errors - the linenumber where the error
     |    occurred.
     |  - :attr:`end_lineno` For syntax errors - the end linenumber where the error
     |    occurred. Can be `None` if not present.
     |  - :attr:`text` For syntax errors - the text where the error
     |    occurred.
     |  - :attr:`offset` For syntax errors - the offset into the text where the
     |    error occurred.
     |  - :attr:`end_offset` For syntax errors - the end offset into the text where
     |    the error occurred. Can be `None` if not present.
     |  - :attr:`msg` For syntax errors - the compiler error message.
     |
     |  Methods defined here:
     |
     |  __eq__(self, other)
     |      Return self==value.
     |
     |  __init__(self, exc_type, exc_value, exc_traceback, *, limit=None, lookup_lines=True, capture_locals=False, compact=False, max_group_width=15, max_group_depth=10, _seen=None)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |
     |  __str__(self)
     |      Return str(self).
     |
     |  format(self, *, chain=True, _ctx=None)
     |      Format the exception.
     |
     |      If chain is not *True*, *__cause__* and *__context__* will not be formatted.
     |
     |      The return value is a generator of strings, each ending in a newline and
     |      some containing internal newlines. `print_exception` is a wrapper around
     |      this method which just prints the lines to a file.
     |
     |      The message indicating which exception occurred is always the last
     |      string in the output.
     |
     |  format_exception_only(self)
     |      Format the exception part of the traceback.
     |
     |      The return value is a generator of strings, each ending in a newline.
     |
     |      Generator yields the exception message.
     |      For :exc:`SyntaxError` exceptions, it
     |      also yields (before the exception message)
     |      several lines that (when printed)
     |      display detailed information about where the syntax error occurred.
     |      Following the message, generator also yields
     |      all the exception's ``__notes__``.
     |
     |  print(self, *, file=None, chain=True)
     |      Print the result of self.format(chain=chain) to 'file'.
     |
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |
     |  from_exception(exc, *args, **kwargs)
     |      Create a TracebackException from an exception.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  __hash__ = None

FUNCTIONS
    clear_frames(tb)
        Clear all references to local variables in the frames of a traceback.

    extract_stack(f=None, limit=None)
        Extract the raw traceback from the current stack frame.

        The return value has the same format as for extract_tb().  The
        optional 'f' and 'limit' arguments have the same meaning as for
        print_stack().  Each item in the list is a quadruple (filename,
        line number, function name, text), and the entries are in order
        from oldest to newest stack frame.

    extract_tb(tb, limit=None)
        Return a StackSummary object representing a list of
        pre-processed entries from traceback.

        This is useful for alternate formatting of stack traces.  If
        'limit' is omitted or None, all entries are extracted.  A
        pre-processed stack trace entry is a FrameSummary object
        containing attributes filename, lineno, name, and line
        representing the information that is usually printed for a stack
        trace.  The line is a string with leading and trailing
        whitespace stripped; if the source is not available it is None.

    format_exc(limit=None, chain=True)
        Like print_exc() but return a string.

    format_exception(exc, /, value=<implicit>, tb=<implicit>, limit=None, chain=True)
        Format a stack trace and the exception information.

        The arguments have the same meaning as the corresponding arguments
        to print_exception().  The return value is a list of strings, each
        ending in a newline and some containing internal newlines.  When
        these lines are concatenated and printed, exactly the same text is
        printed as does print_exception().

    format_exception_only(exc, /, value=<implicit>)
        Format the exception part of a traceback.

        The return value is a list of strings, each ending in a newline.

        The list contains the exception's message, which is
        normally a single string; however, for :exc:`SyntaxError` exceptions, it
        contains several lines that (when printed) display detailed information
        about where the syntax error occurred. Following the message, the list
        contains the exception's ``__notes__``.

    format_list(extracted_list)
        Format a list of tuples or FrameSummary objects for printing.

        Given a list of tuples or FrameSummary objects as returned by
        extract_tb() or extract_stack(), return a list of strings ready
        for printing.

        Each string in the resulting list corresponds to the item with the
        same index in the argument list.  Each string ends in a newline;
        the strings may contain internal newlines as well, for those items
        whose source text line is not None.

    format_stack(f=None, limit=None)
        Shorthand for 'format_list(extract_stack(f, limit))'.

    format_tb(tb, limit=None)
        A shorthand for 'format_list(extract_tb(tb, limit))'.

    print_exc(limit=None, file=None, chain=True)
        Shorthand for 'print_exception(sys.exception(), limit, file, chain)'.

    print_exception(exc, /, value=<implicit>, tb=<implicit>, limit=None, file=None, chain=True)
        Print exception up to 'limit' stack trace entries from 'tb' to 'file'.

        This differs from print_tb() in the following ways: (1) if
        traceback is not None, it prints a header "Traceback (most recent
        call last):"; (2) it prints the exception type and value after the
        stack trace; (3) if type is SyntaxError and value has the
        appropriate format, it prints the line where the syntax error
        occurred with a caret on the next line indicating the approximate
        position of the error.

    print_last(limit=None, file=None, chain=True)
        This is a shorthand for 'print_exception(sys.last_exc, limit, file, chain)'.

    print_stack(f=None, limit=None, file=None)
        Print a stack trace from its invocation point.

        The optional 'f' argument can be used to specify an alternate
        stack frame at which to start. The optional 'limit' and 'file'
        arguments have the same meaning as for print_exception().

    print_tb(tb, limit=None, file=None)
        Print up to 'limit' stack trace entries from the traceback 'tb'.

        If 'limit' is omitted or None, all entries are printed.  If 'file'
        is omitted or None, the output goes to sys.stderr; otherwise
        'file' should be an open file or file-like object with a write()
        method.

    walk_stack(f)
        Walk a stack yielding the frame and line number for each frame.

        This will follow f.f_back from the given frame. If no frame is given, the
        current stack is used. Usually used with StackSummary.extract.

    walk_tb(tb)
        Walk a traceback yielding the frame and line number for each frame.

        This will follow tb.tb_next (and thus is in the opposite order to
        walk_stack). Usually used with StackSummary.extract.

DATA
    __all__ = ['extract_stack', 'extract_tb', 'format_exception', 'format_...

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\traceback.py

beautifulsoup4.warnings
Python Library Documentation: module warnings

NAME
    warnings - Python part of the warnings subsystem.

MODULE REFERENCE
    https://docs.python.org/3.12/library/warnings.html

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.

CLASSES
    builtins.object
        catch_warnings

    class catch_warnings(builtins.object)
     |  catch_warnings(*, record=False, module=None, action=None, category=<class 'Warning'>, lineno=0, append=False)
     |
     |  A context manager that copies and restores the warnings filter upon
     |  exiting the context.
     |
     |  The 'record' argument specifies whether warnings should be captured by a
     |  custom implementation of warnings.showwarning() and be appended to a list
     |  returned by the context manager. Otherwise None is returned by the context
     |  manager. The objects appended to the list are arguments whose attributes
     |  mirror the arguments to showwarning().
     |
     |  The 'module' argument is to specify an alternative module to the module
     |  named 'warnings' and imported under that name. This argument is only useful
     |  when testing the warnings module itself.
     |
     |  If the 'action' argument is not None, the remaining arguments are passed
     |  to warnings.simplefilter() as if it were called immediately on entering the
     |  context.
     |
     |  Methods defined here:
     |
     |  __enter__(self)
     |
     |  __exit__(self, *exc_info)
     |
     |  __init__(self, *, record=False, module=None, action=None, category=<class 'Warning'>, lineno=0, append=False)
     |      Specify whether to record warnings and if an alternative module
     |      should be used other than sys.modules['warnings'].
     |
     |      For compatibility with Python 3.0, please consider all arguments to be
     |      keyword-only.
     |
     |  __repr__(self)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables
     |
     |  __weakref__
     |      list of weak references to the object

FUNCTIONS
    filterwarnings(action, message='', category=<class 'Warning'>, module='', lineno=0, append=False)
        Insert an entry into the list of warnings filters (at the front).

        'action' -- one of "error", "ignore", "always", "default", "module",
                    or "once"
        'message' -- a regex that the warning message must match
        'category' -- a class that the warning must be a subclass of
        'module' -- a regex that the module name must match
        'lineno' -- an integer line number, 0 matches all warnings
        'append' -- if true, append to the list of filters

    formatwarning(message, category, filename, lineno, line=None)
        Function to format a warning the standard way.

    resetwarnings()
        Clear the list of warning filters, so that no filters are active.

    showwarning(message, category, filename, lineno, file=None, line=None)
        Hook to write a warning to a file; replace if you like.

    simplefilter(action, category=<class 'Warning'>, lineno=0, append=False)
        Insert a simple entry into the list of warnings filters (at the front).

        A simple filter matches all modules and messages.
        'action' -- one of "error", "ignore", "always", "default", "module",
                    or "once"
        'category' -- a class that the warning must be a subclass of
        'lineno' -- an integer line number, 0 matches all warnings
        'append' -- if true, append to the list of filters

    warn(...)
        Issue a warning, or maybe ignore it or raise an exception.

        message
          Text of the warning message.
        category
          The Warning category subclass. Defaults to UserWarning.
        stacklevel
          How far up the call stack to make this warning appear. A value of 2 for
          example attributes the warning to the caller of the code calling warn().
        source
          If supplied, the destroyed object which emitted a ResourceWarning
        skip_file_prefixes
          An optional tuple of module filename prefixes indicating frames to skip
          during stacklevel computations for stack frame attribution.

    warn_explicit(...)
        Issue a warning, or maybe ignore it or raise an exception.

DATA
    __all__ = ['warn', 'warn_explicit', 'showwarning', 'formatwarning', 'f...

FILE
    c:\users\youse\appdata\local\programs\python\python312\lib\warnings.py