Ë
    £,ja  ã                   ó  — d Z ddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ  ej                  «       Zde_        ej                  e_        dZdZdZd	d
iZdZdd„Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zedk(  r e«        yy)u“   
æ²�æº�åŽ¿äººæ°‘æ”¿åºœ - é‡�ç‚¹é¢†åŸŸä¿¡æ�¯å…¬å¼€ - å¹´åº¦æŠ¥å‘Š çˆ¬è™«
https://www.qinyuan.gov.cn/qyxxgk/zfxxgk/zfxxgkml/ggzy_235514/ndbg_235519/
é    N©ÚBeautifulSoup)ÚunescapeFu   æ²�æº�åŽ¿å¹´åº¦æŠ¥å‘Šzhttps://www.qinyuan.gov.cnz//qyxxgk/zfxxgk/zfxxgkml/ggzy_235514/ndbg_235519z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36é   c                 óÚ   — t         j                  j                  | t        ¬«      }t         j                  j	                  ||t
        ¬«      }|j                  «       j                  dd¬«      S )N)Úheaders)ÚtimeoutÚcontextzutf-8Úreplace)Úerrors)ÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚssl_ctxÚreadÚdecode)Úurlr	   ÚreqÚresps       ú'/root/gov_crawler/crawl_qinyuan_ndbg.pyÚ	fetch_urlr      sR   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CÜ�>‰>×!Ñ! #¨wÄÐ!ÓH€DØ�9‰9‹;×Ñ˜g¨iÐÓ8Ð8ó    c                 ó&  — | dk(  rt         t        z   dz   }n"t         t        z   dj                  | dz
  «      z   }	 t        |«      }g }t        j                  d|t        j                  «      D ]ß  }|j                  d«      j                  «       }|j                  d«      j                  «       }|j                  d«      j                  «       }|j                  d	d
«      j                  «       }t        j                  d|«      }	|	r|	j                  d«      nd
}
t        j                   j#                  ||«      }|j%                  |||
dœ«       Œá |S # t        $ r7}t        dj                  | |«      t        j                  ¬«       g cY d }~S d }~ww xY w)Né   z/index.htmlz/index_{}.htmlz  [ERROR] page {}: {}©ÚfilezR<a href="([^"]+)"[^>]*title="([^"]*)"[^>]*>([\s\S]*?)</a><span[^>]*>([^<]*)</span>é   é   z&nbsp;Ú z(\d{4}-\d{2}-\d{2}))Útitler   Údate)ÚBASE_URLÚLIST_DIRÚformatr   Ú	ExceptionÚprintÚsysÚstderrÚreÚfinditerÚDOTALLÚgroupÚstripr   Úsearchr   ÚparseÚurljoinÚappend)Úpage_nor   ÚhtmlÚeÚitemsÚmÚhrefr"   Údate_rawÚm2r#   Úfull_urls               r   Úfetch_list_pager=      sV  € Ø�!‚|ÜœÑ! MÑ1‰äœÑ!Ð$4×$;Ñ$;¸GÀa¹KÓ$HÑHˆðÜ˜‹~ˆð €EÜ�[‰[Ø]ØŒb�i‰ióò Fˆð �w‰w�q‹z×ÑÓ!ˆØ—‘˜“
× Ñ Ó"ˆØ—7‘7˜1“:×#Ñ#Ó%ˆØ×#Ñ# H¨bÓ1×7Ñ7Ó9ˆÜ�Y‰YÐ-¨xÓ8ˆÙ ˆr�x‰x˜Œ{ bˆÜ—<‘<×'Ñ'¨¨TÓ2ˆØ�‰˜u¨X¸tÑDÕEðFð €Løô! ò ÜÐ%×,Ñ,¨W°aÓ8¼s¿z¹zÕJØ�	ûðús   ºE Å	FÅ,FÆFÆFc                 ó  — 	 t        | «      }d}|j                  d«      }|dk\  rÍ|j                  d|«      dz   }d}|}|t        |«      k  r‘|dkD  rŒ|||d	z    d
k(  r|dz  }nb|||dz    dk(  rW||dz      dvrM||dz   |d	z    dvr@t        j                  d||d  «      }|r%|j                  d«      j                  d«      s|dz  }|dz  }|t        |«      k  r|dkD  rŒŒ|dk(  r||| }	t        |	«      }|sAt        j                  d|t        j                  «      }
|
rt        |
j                  d«      «      }g }t        j                  d|t        j                  t        j                   z  «      D ]Æ  }
|
j                  d«      }t        j"                  dd|
j                  d«      «      j%                  «       }t        j                  d|t        j                   «      s&t        j                  d|t        j                   «      sŒ“t&        j(                  j+                  | |«      }|j-                  ||dœ«       ŒÈ ||dœS # t        $ r:}t        dj                  | |«      t        j
                  ¬«       dg dœcY d }~S d }~ww xY w)Nz  [ERROR] detail: {} - {}r   r!   )ÚcontentÚattachmentsz$<div class="article-con TRS_Editor">r   ú>r   é   z</div>r    z<divz>/r   z
<div[^>]*>z/>z<<div[^>]*class="[^"]*article-con[^"]*"[^>]*>([\s\S]*?)</div>z$<a[^>]*href="([^"]*)"[^>]*>(.*?)</a>ú<[^>]+>r   z"\.(pdf|doc|docx|xls|xlsx|zip|rar)$z(/download|attached|upload))Únamer   )r   r'   r(   r&   r)   r*   ÚfindÚlenr+   Úmatchr.   ÚendswithÚextract_contentr0   r-   r,   ÚIÚsubr/   r   r1   r2   r3   )r   r5   r6   r?   ÚidxÚ	idx_startÚdepthÚiÚopen_mÚ	zoom_htmlr8   r@   r9   ÚatextÚ	href_fulls                  r   Úfetch_detailrT   4   sS  € ð2Ü˜‹~ˆð
 €GØ
�)‰)Ð:Ó
;€CØ
ˆa‚xØ—I‘I˜c 3Ó'¨!Ñ+ˆ	ØˆØˆØ”#�d“)Šm ¨¢	Ø�A�a˜‘cˆ{˜hÒ&Ø˜‘
‘Ø�a˜˜!™� Ò&¨4°°!±©9¸DÑ+@ÀTÈ!ÈAÉ#ÈaÐPQÉcÀ]ÐZ^ÑE^ÜŸ™ -°°a°b°Ó:�Ù &§,¡,¨q£/×":Ñ":¸4Ô"@Ø˜Q‘J�EØ�‰FˆAð ”#�d“)Šm ¨£	ð �AŠ:Ø˜Y qÐ)ˆIÜ% iÓ0ˆGáÜ�I‰IÐUÐW[Ô]_×]fÑ]fÓgˆÙÜ% a§g¡g¨a£jÓ1ˆGà€KÜ�[‰[Ð@À$ÌÏ	É	ÔTV×TXÑTXÑHXÓYò BˆØ�w‰w�q‹zˆÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆÜ�9‰9Ð:¸DÄ"Ç$Á$ÔGÜ�9‰9Ð3°T¼2¿4¹4Õ@ÜŸ™×,Ñ,¨S°$Ó7ˆIØ×Ñ¨°iÑ@ÕAðBð ¨{Ñ;Ð;øôG ò 2ÜÐ)×0Ñ0°°aÓ8¼s¿z¹zÕJØ¨bÑ1Õ1ûð2ús   ‚H; È;	I>É/I9É3I>É9I>c                 ó¢  — |s| S g }|D ])  }|j                  dj                  |d   |d   «      «       Œ+ | j                  «       rv| j                  «       j                  d«      D �cg c]  }|j                  «       ‘Œ }}t	        d„ |D «       «      }|rdj                  |«      S | dz   dj                  |«      z   S dj                  |«      S c c}w )u   å°†é™„ä»¶é“¾æŽ¥åµŒå…¥æ­£æ–‡ú[{}]({})rD   r   ú
c              3   óN   K  — | ]  }|sŒt        j                  d |«      –— Œ y­w)z
\.\w{3,4}$N)r+   r0   )Ú.0Úls     r   ú	<genexpr>z/embed_attachments_in_content.<locals>.<genexpr>g   s   è ø€ ÒL¸AÊ!œBŸI™I m°Q×7ÑLùs   ‚%Š%ú

)r3   r&   r/   ÚsplitÚallÚjoin)r?   r@   Ú	att_linesÚarZ   ÚlinesÚall_filenamess          r   Úembed_attachments_in_contentrd   \   sÈ   € áØˆØ€IØò AˆØ×Ñ˜×*Ñ*¨1¨V©9°a¸±hÓ?Õ@ðAð ‡}�}„à$+§M¡M£O×$9Ñ$9¸$Ó$?Ö@˜q�—‘•Ð@ˆÐ@ÜÑLÀÔLÓLˆÙØ—9‘9˜YÓ'Ð'à˜VÑ# d§i¡i°	Ó&:Ñ:Ð:à�y‰y˜Ó#Ð#ùò As   Á&Cc                 ó   — g }t        j                  d| t         j                  t         j                  z  «      D �]æ  }|j	                  d«      }|j                  d«      s|j                  d«      rŒt        j                  dd|j	                  d«      xs d«      j                  «       }t        |«      j                  «       }|sŒ‹t        |«      dkD  sŒšt        j                  d	|«      rŒ±|j                  |«       ŒÃ|j                  d
«      s|j                  d«      r1t        |j	                  d«      «      }|s�Œ|j                  |«       �Œ|j                  d«      s|j                  d«      s�Œ:|j	                  d«      xs d}|s�ŒS|j                  d«      r�Œft        j                  d|«      }|r|j	                  d«      nd}|j                  d«      s$t        j                  j!                  t"        |«      }|j                  dj%                  ||«      «       �Œé |sZt        j                  dd| «      }	t        |	«      j                  «       }	t        j                  dd|	«      }	|	r|j                  |	«       dj'                  |«      S )NzN<p[^>]*>(.*?)</p\s*>|<table[^>]*>(.*?)</table\s*>|<img[^>]*src="([^"]+)"[^>]*>r   z<pz<PrC   r!   r   é   z^[\s\xa0;]*$z<tablez<TABLEz<imgz<IMGúdata:zalt="([^"]*)"Úhttpz	![{}]({})ú z\s+r\   )r+   r,   r-   rJ   r.   Ú
startswithrK   r/   r   rF   rG   r3   Úhtml_table_to_htmlr0   r   r1   r2   r$   r&   r_   )
r5   Úpartsr8   ÚtagÚp_textÚtable_mdÚsrcÚaltÚalt_textÚtexts
             r   rI   rI   o   s÷  € Ø€EÜ�[‰[ÐjÐlpÔrt×r{Ñr{ô  A÷  Cñ  Cñ  sCó  Dó @ˆØ�g‰g�a‹jˆØ�>‰>˜$Ô 3§>¡>°$Ô#7Ü—V‘V˜J¨¨A¯G©G°A«JÒ,<¸"Ó=×CÑCÓEˆFÜ˜fÓ%×+Ñ+Ó-ˆFÚœ#˜f›+¨›/´"·(±(¸?ÈFÕ2SØ—‘˜VÕ$Ø�^‰^˜HÔ%¨¯©¸Ô)AÜ)¨!¯'©'°!«*Ó5ˆHÛØ—‘˜XÖ&Ø�^‰^˜FÔ# s§~¡~°fÖ'=Ø—'‘'˜!“*Ò" ˆCÛ˜3Ÿ>™>¨'Ö2Ü—i‘iÐ 0°#Ó6�Ù+.˜3Ÿ9™9 Qœ<°B�Ø—~‘~ fÔ-Ü Ÿ,™,×.Ñ.¬x¸Ó=�CØ—‘˜[×/Ñ/°¸#Ó>Ö?ð%@ñ& Ü�v‰v�j # tÓ,ˆÜ˜‹~×#Ñ#Ó%ˆÜ�v‰v�f˜c 4Ó(ˆÙØ�L‰L˜ÔØ�;‰;�uÓÐr   c                 óØ  — ddl m}  |t        | «      d«      }|j                  d«      D ]P  }|j	                  dd«      }|sŒ|j                  d«      rŒ*|r t        j                  j                  ||«      n||d<   ŒR |j                  d«      D ]P  }|j	                  d	d«      }|sŒ|j                  d
«      rŒ*|r t        j                  j                  ||«      n||d	<   ŒR t        |«      S )uA   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼Œä»…å°†ç›¸å¯¹é“¾æŽ¥/å›¾ç‰‡è½¬ç»�å¯¹ URLr   r   zhtml.parserra   r9   r!   )rh   Ú
javascriptú#Úimgrp   )rh   z//rg   )	Úbs4r   ÚstrÚfind_allÚgetrj   r   r1   r2   )ÚtableÚbase_urlr   Útblra   r9   rw   rp   s           r   rk   rk   Œ   sÐ   € å!Ù
œ˜E›
 MÓ
2€CØ�\‰\˜#Óò SˆØ�u‰u�V˜RÓ ˆÚ˜Ÿ™Ð(CÕDÙ@HœŸ™×,Ñ,¨X°tÔ<ÈdˆAˆfŠIðSð �|‰|˜EÓ"ò RˆØ�g‰g�e˜RÓ ˆÚ�s—~‘~Ð&=Õ>Ù@HœŸ™×-Ñ-¨h¸Ô<ÈcˆC�ŠJðRô ˆs‹8€Or   c                  ó¤  — g } t        dt        dz   «      D ]Õ  }t        dj                  |«      t        j
                  ¬«       t        |«      }|s nœt        dj                  |t        |«      «      t        j
                  ¬«       |D ]a  }t        dj                  |d   d d «      t        j
                  ¬«       t        |d   «      }|d	   |d	<   |d
   |d
<   | j                  |«       Œc Œ× g }| D ]¶  }|j                  d	d«      }|j                  d
g «      }t        ||«      }d}|r6|D �	cg c]  }	dj                  |	d   |	d   «      ‘Œ }
}	dj                  |
«      }|j                  |d   |d   |d   |t        |j                  dd«      |j                  d	d«      d d |dœ«       Œ¸ t        t        j                  |dd¬«      «       y c c}	w )Nr   z[INFO] Page {}r   z[INFO] Page {}: {} itemsz[INFO]  {}...r"   é   r   r?   r@   r!   rV   rD   z; r#   éÈ   )r"   Ú
source_urlr   r?   Ú	site_nameÚpub_dateÚsummaryr@   Fr   )Úensure_asciiÚindent)ÚrangeÚ	MAX_PAGESr(   r&   r)   r*   r=   rF   rT   r3   r{   rd   r_   Ú	SITE_NAMEÚjsonÚdumps)Ú	all_itemsr4   r7   ÚitemÚdetailÚresultr?   r@   Úatt_strra   Úatt_lists              r   Úmainr“   ›   sÆ  € Ø€IÜ˜œI¨™MÓ*ò #ˆÜÐ×%Ñ% gÓ.´S·Z±ZÕ@Ü Ó(ˆÙÙÜÐ(×/Ñ/°¼¸U»ÓDÌ3Ï:É:ÕVØò 	#ˆDÜ�/×(Ñ(¨¨g©°s¸Ð);Ó<Ä3Ç:Á:ÕNÜ! $ u¡+Ó.ˆFØ$ YÑ/ˆD�‰OØ"(¨Ñ"7ˆD�ÑØ×Ñ˜TÕ"ñ	#ð#ð €FØò ˆØ—(‘(˜9 bÓ)ˆØ—h‘h˜}¨bÓ1ˆÜ.¨w¸ÓDˆàˆÙØHSÖTÀ1˜
×)Ñ)¨!¨F©)°Q°u±XÕ>ÐTˆHÐTØ—i‘i Ó)ˆGØ�‰Ø˜'‘]Ø˜u™+Ø˜‘;ØÜ"ØŸ™ ¨Ó,ØŸ™ ¨BÓ/°°Ð5Ø"ñ	
õ 		ðô& 
Œ$�*‰*�V¨%¸Ô
:Õ;ùò Us   Ä-GÚ__main__)é   )r!   )Ú__doc__r‹   r+   r)   Úurllib.requestr   Úurllib.parseÚsslrx   r   r5   r   Úcreate_default_contextr   Úcheck_hostnameÚ	CERT_NONEÚverify_moderŠ   r$   r%   r   r‰   r   r=   rT   rd   rI   rk   r“   Ú__name__© r   r   ú<module>r       s—   ðñ÷
 8× 7× 7Ý Ý à
$ˆ#×
$Ñ
$Ó
&€Ø€Ô Ø—m‘m€Ô à#€	Ø'€Ø<€ØÐWÐ
X€Ø€	ó9ò
ò2&<òP$ò&ó:ò#<ðJ ˆzÒÙ…Fð r   