
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
_VjI                 @   s   d dl Z d dlZd dlZd dlmZ dgZe jdZe jdZe jdZ	e jdZ
e jdZe jd	Ze jd
Ze jdZe jdZe jde jZe jd	Ze jdZG dd dejZdS )    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#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c               @   s   e Zd Zd9ZddddZdd Zd	d
 Zdd ZdZdd Z	dd Z
dd Zdd Zdd Zd:ddZdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 ZdS );r   scriptstyleT)convert_charrefsc            C   s   || _ | j  d S )N)r   reset)selfr    r
   #/usr/lib64/python3.6/html/parser.py__init__W   s    zHTMLParser.__init__c             C   s:   d| _ d| _t| _d | _g | _d| _d| _tj	j
|  d S )N z???r      )rawdatalasttaginteresting_normalinteresting
cdata_elem_pending_pending_len_parse_threshold_markupbase
ParserBaser   )r	   r
   r
   r   r   `   s    zHTMLParser.resetc             C   s   |  j t|7  _ | j | jk r,| jj| n~| jsB|  j|7  _n,| jj| |  jdj| j7  _| jj  d| _ t| j}| jd t| j|k rd| _nt| j| _d S )Nr   r   r   )	r   lenr   r   appendr   joincleargoahead)r	   datanr
   r
   r   feedk   s    



zHTMLParser.feedc             C   s:   | j r,|  jdj| j 7  _| j j  d| _| jd d S )Nr   r   r   )r   r   r   r   r   r   )r	   r
   r
   r   close   s
    
zHTMLParser.closeNc             C   s   | j S )N)_HTMLParser__starttag_text)r	   r
   r
   r   get_starttag_text   s    zHTMLParser.get_starttag_textc             C   s$   |j  | _tjd| j tj| _d S )Nz</\s*%s\s*>)lowerr   recompileIr   )r	   elemr
   r
   r   set_cdata_mode   s    
zHTMLParser.set_cdata_modec             C   s   t | _d | _d S )N)r   r   r   )r	   r
   r
   r   clear_cdata_mode   s    zHTMLParser.clear_cdata_modec             C   sL  | j }d}t|}x||k r| jr|| j r||jd|}|dk r|jdt||d }|dkrvtjdj	|| rvP |}n(| j
j	||}|r|j }n| jrP |}||k r| jr| j r| jt|||  n| j|||  | j||}||krP |j}|d|rLtj||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
 }	nP |	dk r>|sP |jd|d
 }	|	dk r|jd|d
 }	|	dk r|d
 }	n|	d
7 }	| jr,| j r,| jt|||	  n| j|||	  | j||	}q|d|rtj||}|r|j dd }
| j|
 |j }	|d|	d
 s|	d
 }	| j||	}qn:d||d  kr| j|||d   | j||d }P q|d|rtj||}|rN|jd
}
| j|
 |j }	|d|	d
 s@|	d
 }	| j||	}qtj||}|r|r|j ||d  kr|j }	|	|kr|}	| j||d
 }P n,|d
 |k r| jd | j||d
 }nP qqW |r:||k r:| j r:| jr| j r| jt|||  n| j|||  | j||}||d  | _ d S )Nr   <&"   z[\s;]z</z<!--z<?z<!r   r   z&#   ;)r   r   r   r   findrfindmaxr%   r&   searchr   starthandle_datar   Z	updatepos
startswithstarttagopenmatchparse_starttagparse_endtagparse_commentparse_piparse_html_declarationcharrefgrouphandle_charrefend	entityrefhandle_entityref
incomplete)r	   rB   r   ir   jZampposr9   r7   knamer
   r
   r   r      s    
 











zHTMLParser.goaheadc             C   s   | j }|||d  dkr$| j|S |||d  dkrB| j|S |||d  j dkr|jd|d }|d
krvdS | j||d	 |  |d S | j|S d S )N   z<!--   z<![	   z	<!doctyper   r   r.   r0   r0   )r   r<   Zparse_marked_sectionr$   r1   handle_declparse_bogus_comment)r	   rF   r   gtposr
   r
   r   r>     s    

z!HTMLParser.parse_html_declarationr   c             C   sD   | j }|jd|d }|dkr"dS |r<| j||d |  |d S )Nr   r.   r   r0   r0   )r   r1   handle_comment)r	   rF   Zreportr   posr
   r
   r   rN   1  s    zHTMLParser.parse_bogus_commentc             C   sH   | j }tj||d }|sdS |j }| j||d |  |j }|S )Nr.   r   r0   )r   picloser4   r5   	handle_pirB   )r	   rF   r   r9   rG   r
   r
   r   r=   =  s    zHTMLParser.parse_pic             C   s  d | _ | j|}|dk r|S | j}||| | _ g }tj||d }|j }|jdj  | _}x||k r$t	j||}|s~P |jddd\}	}
}|
sd }n^|d d d  ko|d
d  kn  s|d d d  ko|dd  kn   r|dd }|rt
|}|j|	j |f |j }qbW ||| j }|dkr| j \}}d	| j kr|| j jd	 }t| j | j jd	 }n|t| j  }| j|||  |S |jdr| j|| n"| j|| || jkr| j| |S )Nr   r   r.   rK   '"r   />
r0   r0   r0   )r   rV   )r"   check_for_whole_start_tagr   tagfind_tolerantr9   rB   r@   r$   r   attrfind_tolerantr   r   stripZgetposcountr   r2   r6   endswithhandle_startendtaghandle_starttagCDATA_CONTENT_ELEMENTSr)   )r	   rF   endposr   attrsr9   rH   tagmZattrnamerestZ	attrvaluerB   linenooffsetr
   r
   r   r:   I  sP    
(*

zHTMLParser.parse_starttagc             C   s   | j }tj||}|r|j }|||d  }|dkr>|d S |dkr~|jd|rZ|d S |jd|rjd	S ||krv|S |d S |dkrd
S |dkrdS ||kr|S |d S tdd S )Nr   r   /z/>r.   r   z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!r0   r0   r0   )r   locatestarttagend_tolerantr9   rB   r7   AssertionError)r	   rF   r   rd   rG   nextr
   r
   r   rX   |  s.    z$HTMLParser.check_for_whole_start_tagc             C   s  | j }tj||d }|sdS |j }tj||}|s| jd k	rV| j|||  |S tj||d }|s|||d  dkr|d S | j	|S |j
dj }|jd|j }| j| |d S |j
dj }| jd k	 r|| jk r| j|||  |S | j|j  | j  |S )Nr   r.   rK   z</>r   r0   )r   	endendtagr4   rB   
endtagfindr9   r   r6   rY   rN   r@   r$   r1   handle_endtagr*   )r	   rF   r   r9   rO   Z	namematchZtagnamer(   r
   r
   r   r;     s6    


zHTMLParser.parse_endtagc             C   s   | j || | j| d S )N)r_   rn   )r	   rc   rb   r
   r
   r   r^     s    zHTMLParser.handle_startendtagc             C   s   d S )Nr
   )r	   rc   rb   r
   r
   r   r_     s    zHTMLParser.handle_starttagc             C   s   d S )Nr
   )r	   rc   r
   r
   r   rn     s    zHTMLParser.handle_endtagc             C   s   d S )Nr
   )r	   rI   r
   r
   r   rA     s    zHTMLParser.handle_charrefc             C   s   d S )Nr
   )r	   rI   r
   r
   r   rD     s    zHTMLParser.handle_entityrefc             C   s   d S )Nr
   )r	   r   r
   r
   r   r6     s    zHTMLParser.handle_datac             C   s   d S )Nr
   )r	   r   r
   r
   r   rP     s    zHTMLParser.handle_commentc             C   s   d S )Nr
   )r	   Zdeclr
   r
   r   rM     s    zHTMLParser.handle_declc             C   s   d S )Nr
   )r	   r   r
   r
   r   rS     s    zHTMLParser.handle_pic             C   s   d S )Nr
   )r	   r   r
   r
   r   unknown_decl  s    zHTMLParser.unknown_declc             C   s   t jdtdd 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    
zHTMLParser.unescape)r   r   )r   )__name__
__module____qualname__r`   r   r   r    r!   r"   r#   r)   r*   r   r>   rN   r=   r:   rX   r;   r^   r_   rn   rA   rD   r6   rP   rM   rS   ro   r   r
   r
   r
   r   r   ?   s6   	z
3"()r%   rq   r   Zhtmlr   __all__r&   r   rE   rC   r?   r8   rR   ZcommentcloserY   rZ   VERBOSEri   rl   rm   r   r   r
   r
   r
   r   <module>   s&   










