§
    ¢”jº!  ã                   óž  — d Z ddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZmZ 	 eZn# e$ r eefZY nw xY w	 ddlmZ n# e$ r	 ddlmZ Y nw xY w	 ddlmZ n# e$ r	 ddlmZ Y nw xY w G d	„ d
e¦  «        Z	 ddlmZ  G d„ de¦  «        Z e¦   «         Zn# e$ r Y nw xY wd„ Zdd„Z	 	 dd„Z	 	 dd„Zdd„Z dd„Z!d„ Z" e¦   «         Z#dS )z?
An interface to html5lib that mimics the lxml.html interface.
é    N)Ú
HTMLParser)ÚTreeBuilder)Úetree)ÚElementÚXHTML_NAMESPACEÚ_contains_block_level_tag)Úurlopen)Úurlparsec                   ó   — e Zd ZdZdd„ZdS )r   z*An html5lib HTML parser with lxml as tree.Fc                 ó:   — t          j        | f|t          dœ|¤Ž d S ©N)ÚstrictÚtree)Ú_HTMLParserÚ__init__r   ©Úselfr   Úkwargss      úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/lxml/html/html5parser.pyr   zHTMLParser.__init__   s(   € ÝÔ˜TÐM¨&µ{ÐMÐMÀfÐMÐMÐMÐMÐMó    N©F©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s4   € € € € € Ø4Ð4ðNð Nð Nð Nð Nð Nr   r   )ÚXHTMLParserc                   ó   — e Zd ZdZdd„ZdS )r   z+An html5lib XHTML Parser with lxml as tree.Fc                 ó:   — t          j        | f|t          dœ|¤Ž d S r   )Ú_XHTMLParserr   r   r   s      r   r   zXHTMLParser.__init__*   s(   € ÝÔ! $ÐR¨v½KÐRÐRÈ6ÐRÐRÐRÐRÐRr   Nr   r   r   r   r   r   r   '   s4   € € € € € Ø9Ð9ð	Sð 	Sð 	Sð 	Sð 	Sð 	Sr   r   c                 ót   — |                       |¦  «        }|�|S |                       dt          ›d|›�¦  «        S )NÚ{Ú})Úfindr   )r   ÚtagÚelems      r   Ú	_find_tagr(   0   s;   € Ø�9Š9�S‰>Œ>€DØÐØˆØ�9Š9ˆ9¥  °#°#Ð6Ñ7Ô7Ð7r   c                 óà   — t          | t          ¦  «        st          d¦  «        ‚|€t          }i }|€t          | t          ¦  «        rd}|�||d<    |j        | fi |¤Ž                     ¦   «         S )zÍ
    Parse a whole document into a string.

    If `guess_charset` is true, or if the input is not Unicode but a
    byte string, the `chardet` library will perform charset guessing
    on the string.
    ústring requiredNTÚ
useChardet)Ú
isinstanceÚ_stringsÚ	TypeErrorÚhtml_parserÚbytesÚparseÚgetroot)ÚhtmlÚguess_charsetÚparserÚoptionss       r   Údocument_fromstringr7   7   s†   € õ �d�HÑ%Ô%ð +ÝÐ)Ñ*Ô*Ð*à€~Ýˆà€GØÐ¥¨Dµ%Ñ!8Ô!8Ðð ˆØÐ Ø -ˆ�ÑØˆ6Œ<˜Ð(Ð( Ð(Ð(×0Ò0Ñ2Ô2Ð2r   Fc                 ót  — t          | t          ¦  «        st          d¦  «        ‚|€t          }i }|€t          | t          ¦  «        rd}|�||d<    |j        | dfi |¤Ž}|rWt          |d         t          ¦  «        r<|r:|d                              ¦   «         rt          j        d|d         z  ¦  «        ‚|d= |S )a`  Parses several HTML elements, returning a list of elements.

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

    If `guess_charset` is true, the `chardet` library will perform charset
    guessing on the string.
    r*   NFr+   Údivr   zThere is leading text: %r)	r,   r-   r.   r/   r0   ÚparseFragmentÚstripr   ÚParserError)r3   Úno_leading_textr4   r5   r6   Úchildrens         r   Úfragments_fromstringr?   O   sé   € õ �d�HÑ%Ô%ð +ÝÐ)Ñ*Ô*Ð*à€~Ýˆà€GØÐ¥¨Dµ%Ñ!8Ô!8Ðð ˆØÐ Ø -ˆ�ÑØ#ˆvÔ# D¨%Ð;Ð;°7Ð;Ð;€HØð •J˜x¨œ{­HÑ5Ô5ð Øð 	Ø˜Œ{× Ò Ñ"Ô"ð 5ÝÔ'Ð(CØ(0°¬ñ)4ñ 5ô 5ð 5à˜�Ø€Or   c                 ó|  — t          | t          ¦  «        st          d¦  «        ‚t          |¦  «        }t	          | ||| ¬¦  «        }|rjt          |t          ¦  «        sd}t          |¦  «        }|r@t          |d         t          ¦  «        r|d         |_        |d= |                     |¦  «         |S |st          j	        d¦  «        ‚t          |¦  «        dk    rt          j	        d¦  «        ‚|d         }|j        r5|j                             ¦   «         rt          j	        d|j        z  ¦  «        ‚d	|_        |S )
aÂ  Parses a single HTML element; it is an error if there is more than
    one element, or if anything but whitespace precedes or follows the
    element.

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

    If `guess_charset` is true, the `chardet` library will perform charset
    guessing on the string.
    r*   )r4   r5   r=   r9   r   zNo elements foundé   zMultiple elements foundzElement followed by text: %rN)r,   r-   r.   Úboolr?   r   ÚtextÚextendr   r<   ÚlenÚtailr;   )r3   Úcreate_parentr4   r5   Úaccept_leading_textÚelementsÚnew_rootÚresults           r   Úfragment_fromstringrL   q   sU  € õ �d�HÑ%Ô%ð +ÝÐ)Ñ*Ô*Ð*å˜}Ñ-Ô-Ðå#Ø˜M°&Ø/Ð/ð1ñ 1ô 1€Hð ð 	Ý˜-­Ñ2Ô2ð 	"Ø!ˆMÝ˜=Ñ)Ô)ˆØð 	&Ý˜( 1œ+¥xÑ0Ô0ð  Ø (¨¤�”Ø˜Q�KØ�OŠO˜HÑ%Ô%Ð%Øˆàð 5ÝÔÐ 3Ñ4Ô4Ð4Ý
ˆ8�}„}�qÒÐÝÔÐ 9Ñ:Ô:Ð:Ø�aŒ[€FØ„{ð N�v”{×(Ò(Ñ*Ô*ð NÝÔÐ >ÀÄÑ LÑMÔMÐMØ€F„KØ€Mr   c                 óì  — t          | t          ¦  «        st          d¦  «        ‚t          | ||¬¦  «        }| dd…         }t          |t          ¦  «        r|                     dd¦  «        }|                     ¦   «                              ¦   «         }|                     d¦  «        s|                     d¦  «        r|S t          |d	¦  «        }t          |¦  «        r|S t          |d
¦  «        }t          |¦  «        dk    rT|j        r|j                             ¦   «         s4|d         j        r|d         j                             ¦   «         s|d         S t          |¦  «        rd|_        nd|_        |S )a   Parse the html, returning a single element/document.

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

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

    If `guess_charset` is true, or if the input is not Unicode but a
    byte string, the `chardet` library will perform charset guessing
    on the string.
    r*   )r5   r4   Né2   ÚasciiÚreplacez<htmlz	<!doctypeÚheadÚbodyrA   éÿÿÿÿr   r9   Úspan)r,   r-   r.   r7   r0   ÚdecodeÚlstripÚlowerÚ
startswithr(   rE   rC   r;   rF   r   r&   )r3   r4   r5   ÚdocÚstartrQ   rR   s          r   Ú
fromstringr[   �   sq  € õ �d�HÑ%Ô%ð +ÝÐ)Ñ*Ô*Ð*Ý
˜d¨6Ø,9ð;ñ ;ô ;€Cð ��"�ŒI€EÝ�%�ÑÔð 1ð —’˜W iÑ0Ô0ˆà�LŠL‰NŒN× Ò Ñ"Ô"€EØ×Ò˜Ñ Ô ð  E×$4Ò$4°[Ñ$AÔ$Að Øˆ
å�S˜&Ñ!Ô!€Dõ ˆ4�y„yð Øˆ
å�S˜&Ñ!Ô!€Dõ 	ˆD‰	Œ	�QŠˆ ¤	ˆ°´·²Ñ1BÔ1BˆØ�b””ð 	Ø&*¨2¤h¤m×&9Ò&9Ñ&;Ô&;ð 	à�AŒwˆõ
 ! Ñ&Ô&ð ØˆŒˆàˆŒØ€Kr   c                 óè   — |€t           }t          | t          ¦  «        s| }|€d}n7t          | ¦  «        rt	          | ¦  «        }|€d}nt          | d¦  «        }|€d}i }|r||d<    |j        |fi |¤ŽS )a*  Parse a filename, URL, or file-like object into an HTML document
    tree.  Note: this returns a tree, not an element.  Use
    ``parse(...).getroot()`` to get the document root.

    If ``guess_charset`` is true, the ``useChardet`` option is passed into
    html5lib to enable character detection.  This option is on by default
    when parsing from URLs, off by default when parsing from file(-like)
    objects (which tend to return Unicode more often than not), and on by
    default when parsing from a file path (which is read in binary mode).
    NFTÚrbr+   )r/   r,   r-   Ú_looks_like_urlr	   Úopenr1   )Úfilename_url_or_filer4   r5   Úfpr6   s        r   r1   r1   Ó   s«   € ð €~ÝˆÝÐ*­HÑ5Ô5ð !Ø!ˆØÐ à!ˆMøÝ	Ð-Ñ	.Ô	.ð !ÝÐ)Ñ*Ô*ˆØÐ à ˆMøåÐ&¨Ñ-Ô-ˆØÐ Ø ˆMà€Gð ð .Ø -ˆ�ÑØˆ6Œ<˜Ð&Ð&˜gÐ&Ð&Ð&r   c                 óž   — t          | ¦  «        d         }|sdS t          j        dk    r#|t          j        v rt          |¦  «        dk    rdS dS )Nr   FÚwin32rA   T)r
   ÚsysÚplatformÚstringÚascii_lettersrE   )ÚstrÚschemes     r   r^   r^   ÷   sU   € Ý�c‰]Œ]˜1Ô€FØð ØˆuÝ
Œ,˜'Ò
!Ð
!Ø•fÔ*Ð*Ð*Ý�F‘”˜qÒ Ð àˆuàˆtr   )NN)FNN)$r   rd   rf   Úhtml5libr   r   Ú html5lib.treebuilders.etree_lxmlr   Úlxmlr   Ú	lxml.htmlr   r   r   Ú
basestringr-   Ú	NameErrorr0   rh   Úurllib2r	   ÚImportErrorÚurllib.requestr
   Úurllib.parser   r!   Úxhtml_parserr(   r7   r?   rL   r[   r1   r^   r/   r   r   r   ú<module>ru      s˜  ððð ð €
€
€
Ø €€€à .Ð .Ð .Ð .Ð .Ð .Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ð Ð Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IðØ€H€HøØð ð ð Ø�sˆ|€H€H€Hðøøøð'ØÐÐÐÐÐÐøØð 'ð 'ð 'Ø&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð'øøøð&Ø!Ð!Ð!Ð!Ð!Ð!Ð!øØð &ð &ð &Ø%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð&øøøðNð Nð Nð Nð N�ñ Nô Nð Nð!Ø4Ð4Ð4Ð4Ð4Ð4ðSð Sð Sð Sð S�lñ Sô Sð Sð �;‘=”=€L€Løð ð 	ð 	ð 	Ø€Dð	øøøð8ð 8ð 8ð3ð 3ð 3ð 3ð0 05Ø48ðð ð ð ðD -2Ø37ð)ð )ð )ð )ðX3ð 3ð 3ð 3ðl!'ð !'ð !'ð !'ðH
ð 
ð 
ð ˆj‰lŒl€€€sA   ¨+ «	7¶7»A ÁAÁAÁA ÁA)Á(A)Á;B ÂB"Â!B"