grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 ct„jçIã@s¼ddlZddlZddlZddlmZdgZejdƒZejdƒZejdƒZ ejdƒZ ejdƒZ ejd ƒZ ejd ƒZ ejd ƒZejd ƒZejd ejƒZejd ƒZejdƒZGdd„dejƒZdS)éN)ÚunescapeÚ HTMLParserz[&<]z &[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z <[a-zA-Z]ú>z--\s*>z+([a-zA-Z][^\t\n\r\f />\x00]*)(?:\s|/(?!>))*z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*aF <[a-zA-Z][^\t\n\r\f />\x00]* # tag name (?:[\s/]* # optional whitespace before attribute name (?:(?<=['"\s/])[^\s/>][^\s/=>]* # attribute name (?:\s*=+\s* # value indicator (?:'[^']*' # LITA-enclosed value |"[^"]*" # LIT-enclosed value |(?!['"])[^>\s]* # bare value ) (?:\s*,)* # possibly followed by a comma )?(?:\s|/(?!>))* )* )? \s* # trailing whitespace z#c@säeZdZd9Zddœdd„Zdd„Zd d „Zd d „Zd Zdd„Z dd„Z dd„Z dd„Z dd„Z d:dd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd S);rÚscriptÚstyleT)Úconvert_charrefscCs||_|jƒdS)N)rÚreset)Úselfr©r ú#/usr/lib64/python3.6/html/parser.pyÚ__init__WszHTMLParser.__init__cCs:d|_d|_t|_d|_g|_d|_d|_tj j |ƒdS)NÚz???ré) ÚrawdataÚlasttagÚinteresting_normalÚ interestingÚ cdata_elemÚ_pendingÚ _pending_lenÚ_parse_thresholdÚ _markupbaseÚ ParserBaser)r r r r r`szHTMLParser.resetcCs®|jt|ƒ7_|j|jkr,|jj|ƒn~|jsB|j|7_n,|jj|ƒ|jdj|jƒ7_|jjƒd|_t|jƒ}|jdƒt|jƒ|kržd|_n t|jƒ|_dS)Nr rr) rÚlenrrÚappendrÚjoinÚclearÚgoahead)r ÚdataÚnr r r Úfeedks      zHTMLParser.feedcCs:|jr,|jdj|jƒ7_|jjƒd|_|jdƒdS)Nr rr)rrrrrr)r r r r Úclose‰s  zHTMLParser.closeNcCs|jS)N)Ú_HTMLParser__starttag_text)r r r r Úget_starttag_text“szHTMLParser.get_starttag_textcCs$|jƒ|_tjd|jtjƒ|_dS)Nz )ÚlowerrÚreÚcompileÚIr)r Úelemr r r Úset_cdata_mode—s zHTMLParser.set_cdata_modecCst|_d|_dS)N)rrr)r r r r Úclear_cdata_mode›szHTMLParser.clear_cdata_modec CsL|j}d}t|ƒ}�xÂ||k�rÖ|jr||j r||jd|ƒ}|dkr¤|jdt||dƒƒ}|dkrvtjdƒj ||ƒ rvP|}n(|j j ||ƒ}|r˜|j ƒ}n |jr P|}||krä|jrÒ|j rÒ|j t |||…ƒƒn|j |||…ƒ|j||ƒ}||krúP|j}|d|ƒ�rLtj||ƒ�r&|j|ƒ} n„|d|ƒ�r>|j|ƒ} nl|d|ƒ�rV|j|ƒ} nT|d|ƒ�rn|j|ƒ} n<|d |ƒ�r†|j|ƒ} n$|d |k�r¨|j dƒ|d } nP| dk�r>|�s¼P|jd |d ƒ} | dk�rú|jd|d ƒ} | dk�r|d } n| d 7} |j�r,|j �r,|j t ||| …ƒƒn|j ||| …ƒ|j|| ƒ}q|d |ƒ�rðtj||ƒ}|�r´|jƒd d…} |j| ƒ|jƒ} |d| d ƒ�s¤| d } |j|| ƒ}qn:d||d…k�rì|j |||d …ƒ|j||d ƒ}Pq|d|ƒrtj||ƒ}|�rN|jd ƒ} |j| ƒ|jƒ} |d| d ƒ�s@| d } |j|| ƒ}qtj||ƒ}|�r¦|�r¢|jƒ||d…k�r¢|jƒ} | |k�r’|} |j||d ƒ}Pn,|d |k�rÐ|j dƒ|j||d ƒ}nPqqW|�r:||k�r:|j �r:|j�r|j �r|j t |||…ƒƒn|j |||…ƒ|j||ƒ}||d…|_dS)Nrú<ú&é"z[\s;]zs  z!HTMLParser.parse_html_declarationrcCsD|j}|jd|dƒ}|dkr"dS|r<|j||d|…ƒ|dS)Nrr.rr0r0)rr1Úhandle_comment)r rFZreportrÚposr r r rN1szHTMLParser.parse_bogus_commentcCsH|j}tj||dƒ}|sdS|jƒ}|j||d|…ƒ|jƒ}|S)Nr.rr0)rÚpicloser4r5Ú handle_pirB)r rFrr9rGr r r r==szHTMLParser.parse_picCsäd|_|j|ƒ}|dkr|S|j}|||…|_g}tj||dƒ}|jƒ}|jdƒjƒ|_}xÄ||k�r$t j||ƒ}|s~P|jdddƒ\} } } | sœd} n^| dd…dko¾| d d…knsî| dd…dkoæ| d d…kn�rú| dd …} | �rt | ƒ} |j | jƒ| fƒ|jƒ}qbW|||…j ƒ} | d k�r¤|j ƒ\} }d |jk�r€| |jjd ƒ} t|jƒ|jjd ƒ}n|t|jƒ}|j|||…ƒ|S| jdƒ�r¾|j||ƒn"|j||ƒ||jk�rà|j|ƒ|S)Nrrr.rKú'ú"rú/>Ú r0r0r0)rrV)r"Úcheck_for_whole_start_tagrÚtagfind_tolerantr9rBr@r$rÚattrfind_tolerantrrÚstripZgetposÚcountrr2r6ÚendswithÚhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSr))r rFÚendposrÚattrsr9rHÚtagÚmZattrnameÚrestZ attrvaluerBÚlinenoÚoffsetr r r r:IsP   (*         zHTMLParser.parse_starttagcCs¶|j}tj||ƒ}|rª|jƒ}|||d…}|dkr>|dS|dkr~|jd|ƒrZ|dS|jd|ƒrjd S||krv|S|dS|dkrŠd S|dkr–d S||kr¢|S|dStdƒ‚dS) Nrrú/z/>r.r z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!r0r0r0)rÚlocatestarttagend_tolerantr9rBr7ÚAssertionError)r rFrrdrGÚnextr r r rX|s.   z$HTMLParser.check_for_whole_start_tagcCs|j}tj||dƒ}|sdS|jƒ}tj||ƒ}|sÀ|jdk rV|j|||…ƒ|Stj||dƒ}|s�|||d…dkr†|dS|j |ƒS|j dƒj ƒ}|j d|jƒƒ}|j |ƒ|dS|j dƒj ƒ}|jdk �rü||jk�rü|j|||…ƒ|S|j |j ƒƒ|jƒ|S)Nrr.rKzrr0)rÚ endendtagr4rBÚ endtagfindr9rr6rYrNr@r$r1Ú handle_endtagr*)r rFrr9rOZ namematchZtagnamer(r r r r;žs6      zHTMLParser.parse_endtagcCs|j||ƒ|j|ƒdS)N)r_rn)r rcrbr r r r^Æs zHTMLParser.handle_startendtagcCsdS)Nr )r rcrbr r r r_ËszHTMLParser.handle_starttagcCsdS)Nr )r rcr r r rnÏszHTMLParser.handle_endtagcCsdS)Nr )r rIr r r rAÓszHTMLParser.handle_charrefcCsdS)Nr )r rIr r r rD×szHTMLParser.handle_entityrefcCsdS)Nr )r rr r r r6ÛszHTMLParser.handle_datacCsdS)Nr )r rr r r rPßszHTMLParser.handle_commentcCsdS)Nr )r Zdeclr r r rMãszHTMLParser.handle_declcCsdS)Nr )r rr r r rSçszHTMLParser.handle_picCsdS)Nr )r rr r r Ú unknown_declêszHTMLParser.unknown_declcCstjdtdd�t|ƒS)NzZThe unescape method is deprecated and will be removed in 3.5, use html.unescape() instead.r.)Ú stacklevel)ÚwarningsÚwarnÚDeprecationWarningr)r Úsr r r rîs zHTMLParser.unescape)rr)r)Ú__name__Ú __module__Ú __qualname__r`r rr r!r"r#r)r*rr>rNr=r:rXr;r^r_rnrArDr6rPrMrSrorr r r r r?s6  z  3"()r%rqrZhtmlrÚ__all__r&rrErCr?r8rRZ commentcloserYrZÚVERBOSErirlrmrrr r r r Ú s&