Ë
    5ß©j%*  ã                   ó´  — 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mZmZmZ ej                  j                  dej                  j                  ej                  j                  e«      «      «       ddlmZ ddlZddlmZ dZ eej*                  «      D ]=  \  ZZedk(  sŒedz    eej*                  «      k  sŒ% eej*                  edz      «      Z n e� ed ee«      z   «       d	Zd
ZdZde› �ZdZ dZ! ejD                  ejF                  «       ed¬«      z
  jI                  d«      Z%dedœZ&dd„Z'dd„Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/e0dk(  r e/«        yy) u;  
è´µæ¸¯å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€ - çŽ¯è¯„å…¬ä¼—å�‚ä¸Žå…¬ç¤º (sthj.gxgg.gov.cn)
CMS: è‡ªå®šä¹‰PHP CMS (fenye.js + createPageHTML)
åˆ—è¡¨: index.shtml / index_{N}.shtml (N=2~4, 30æ�¡/é¡µ, å…±4é¡µ~94æ�¡)
è¯¦æƒ…: ./t{N}.shtml
è¯¦æƒ…å®¹å™¨: div.article-con
é™„ä»¶å®¹å™¨: div#article-file
ç½‘ç»œ: IP 221.7.196.145 + Host header
é    N)ÚdatetimeÚtimezoneÚ	timedelta)Úpush_to_searchdb)ÚBeautifulSoupz--pagesé   z[AutoPg] max_pages=u1   è´µæ¸¯å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€-çŽ¯è¯„å…¬ä¼—å�‚ä¸Žå…¬ç¤ºz221.7.196.145zsthj.gxgg.gov.cnúhttp://z/zfxxgkzl/zfxxgk/hjpj/hpgzcygsé   iG  )Údaysz%Y-%m-%dzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36)z
User-AgentÚHostc                 óÊ  — ddl }t        t        | «      d«      }|j                  d«      D ]L  }|j	                  dd«      }|sŒ|j                  d«      rŒ*|r|j                  j                  ||«      n||d<   ŒN |j                  d«      D ]L  }|j	                  d	d«      }|sŒ|j                  d
«      rŒ*|r|j                  j                  ||«      n||d	<   ŒN t        |«      S )uA   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼Œä»…å°†ç›¸å¯¹é“¾æŽ¥/å›¾ç‰‡è½¬ç»�å¯¹ URLr   Núhtml.parserÚaÚhrefÚ )ÚhttpÚ
javascriptú#ÚimgÚsrc)r   z//zdata:)Úurllib.parser   ÚstrÚfind_allÚgetÚ
startswithÚparseÚurljoin)ÚtableÚbase_urlÚurllibÚtblr   r   r   r   s           úcrawl_guigang_hpcygs.pyÚhtml_table_to_htmlr#   ,   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€Oó    c                 ó  — t        d«      D ]4  }	 t        j                  | t        |d¬«      }d|_        |j
                  c S  y # t        $ r<}|dk  rt        j                  d«       nt        d| › d|› �«       Y d }~ y Y d }~Œxd }~ww xY w)Nr
   F)ÚheadersÚtimeoutÚverifyzutf-8é   z	  [WARN] z: )
ÚrangeÚrequestsr   ÚHEADERSÚencodingÚtextÚ	ExceptionÚtimeÚsleepÚprint)Úurlr'   ÚattemptÚrÚes        r"   Úfetchr7   9   s   € Ü˜“8ò 
ˆð		Ü—‘˜S¬'¸7È5ÔQˆAØ ˆAŒJØ—6‘6ŠMñ	
øô
 ò 	Ø˜Š{Ü—
‘
˜1•ä˜	 #  b¨¨Ð,Ô-Ýô ûð	ús   �/AÁ	B	Á,BÂB	c                 óT   — | dk(  rt         t        z   dz   S t         t        z   d| › d�z   S )Nr   z/index.shtmlz/index_z.shtml)ÚBASE_URLÚLIST_DIR)Úpages    r"   Úmake_list_urlr<   F   s2   € Øˆq‚yÜœ(Ñ" ^Ñ3Ð3Ü”hÑ 7¨4¨&°Ð!7Ñ7Ð7r$   c                 ó,  — g }t        j                  d| t         j                  «      D ]é  }|j                  d«      j	                  «       }|j                  d«      j	                  «       }|j                  d«      j	                  «       }|j                  d«      rdt        z   t        z   dz   |dd z   }nE|j                  d«      rdt        z   |z   }n'|j                  d	«      sdt        z   t        z   dz   |z   }|sŒÓ|sŒÖ|j                  |||f«       Œë |S )
uX   è§£æž�åˆ—è¡¨é¡µï¼š<li><span>date</span><a href="./tN.shtml" title="title">title</a></li>zX<li><span>(\d{4}-\d{2}-\d{2})</span><a href="(\./t\d+\.shtml)"[^>]*title="([^"]*)"[^>]*>r   r)   r
   ú./r	   ú/Nr   )	ÚreÚfinditerÚDOTALLÚgroupÚstripr   ÚDOMAINr:   Úappend)ÚhtmlÚitemsÚmÚdater   Útitles         r"   Úparse_list_pagerL   K   sû   € à€EÜ�[‰[ØcØŒb�i‰ióò .ˆð �w‰w�q‹z×ÑÓ!ˆØ�w‰w�q‹z×ÑÓ!ˆØ—‘˜“
× Ñ Ó"ˆð �?‰?˜4Ô ØœvÑ%¬Ñ0°3Ñ6¸¸a¸b¸ÑA‰DØ�_‰_˜SÔ!ØœvÑ%¨Ñ,‰DØ—‘ Ô(ØœvÑ%¬Ñ0°3Ñ6¸Ñ=ˆDâ’TØ�L‰L˜%  tÐ,Õ-ð#.ð& €Lr$   c                 óŽ  — t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  d	d| «      } t        j                  d
d| «      j                  «       S )u(   æ¸…é™¤ä¸­æ–‡å­—ç¬¦é—´çš„spanç¢Žç‰‡ç©ºæ ¼z3(?<=[\u4e00-\u9fff])[ \t\u3000]+(?=[\u4e00-\u9fff])r   z&(?<=[\u4e00-\u9fff])[ \t\u3000]+(?=\d)z&(?<=\d)[ \t\u3000]+(?=[\u4e00-\u9fff])u&   \s+([ï¼Œã€‚ã€�ï¼›ï¼šï¼Ÿï¼�)ã€‘ã€�ã€‹])z\1u   ([ï¼ˆã€�ã€Œã€Š])\s+z(?<=\d)\s+(?=\d)z&#\d+;z\s+ú )r@   ÚsubrD   )r.   s    r"   Ú_clean_span_spacesrP   c   s¢   € ä�6‰6ÐHÈ"ÈdÓS€DÜ�6‰6Ð;¸RÀÓF€DÜ�6‰6Ð;¸RÀÓF€DÜ�6‰6Ð;¸UÀDÓI€DÜ�6‰6Ð(¨%°Ó6€DÜ�6‰6Ð% r¨4Ó0€DÜ�6‰6�)˜R Ó&€DÜ�6‰6�&˜#˜tÓ$×*Ñ*Ó,Ð,r$   c                 óÈ   — |j                  d«      r|S |j                  d«      rdt        z   |z   S |j                  d«      r|dd }| j                  dd«      d   }|dz   |z   S )	u*   è§£æž�ç›¸å¯¹URL (åŸºäºŽ.shtmlæ–‡ä»¶ç›®å½•)r   r?   r	   r>   r)   Nr   r   )r   rE   Úrsplit)r   r   Úbase_dirs      r"   Úresolve_urlrT   n   sj   € à
‡~�~�fÔØˆ
Ø
‡~�~�cÔØœ6Ñ! CÑ'Ð'Ø
‡~�~�dÔØ�!�"ˆgˆà�‰˜s AÓ& qÑ)€HØ�c‰>˜CÑÐr$   c           	      óÈ  — | j                  dd¬«      }|s| j                  dd¬«      }|r|}n| }g }|j                  D �]à  }t        |dd«      }|sŒ|dk(  r!t        ||«      }|sŒ(|j	                  |«       Œ:|dk(  �rN|j                  d«      rŒR|j                  d	«      D ]M  }|j                  d
d«      }	|j                  dd«      }
|	sŒ*t        ||	«      }|j	                  d|
› d|› d�«       ŒO |j                  dd¬«      D ]o  }|d   }d|v r#|j                  «       j                  dd«      d   nd}|dv sŒ6|j                  dd¬«      }t        ||«      }|sŒX|j	                  d|› d|› d�«       Œq |j                  dd¬«      }t        |«      }|s�ŒZt        |«      dkD  s�Œj|j	                  |«       |j	                  d«       �ŒŽ|d	k(  s�Œ•|j                  d
d«      }	|j                  dd«      }
|	s�Œ½t        ||	«      }|j	                  d|
› d|› d�«       �Œã dj                  |«      j                  «       }t!        j"                  dd|«      }| j                  dd¬«      D ]t  }|j                  dd¬«      D ]\  }|j                  dd¬«      }t        ||d   «      }|sŒ(|j                  «       sŒ9d|j                  «       › d|› d�}||vsŒU|d|z   z  }Œ^ Œv |S ) u8   ä»Ž div.article-con æ��å�–æ­£æ–‡ (å�« TRS_EDITOR åµŒå¥—)ÚdivÚtrs_editor_view©Úclass_ÚviewÚnameNr   Úpr   r   r   Úaltz![ú](z)

r   T©r   r   ú.r   éÿÿÿÿ)	ÚpdfÚdocÚdocxÚxlsÚxlsxÚzipÚrarÚpptÚpptxrN   ©rD   ú[r
   ú

z\n{4,}Údownloadfileú))ÚfindÚchildrenÚgetattrr#   rF   Úfind_parentr   r   rT   ÚlowerrR   Úget_textrP   ÚlenÚjoinrD   r@   rO   )Ú
detail_divÚpage_urlÚeditorÚcontent_divÚpartsÚchildr[   Útbl_htmlr   r   r]   Úfull_srcÚa_tagr   ÚextÚa_textÚ	full_hrefÚtxtÚresultÚdfr   Úlinks                         r"   Úextract_contentrˆ   z   sú  € ð �_‰_˜UÐ+<ˆ_Ó=€FÙØ—‘ ¨v�Ó6ˆÙØ‰à ˆà€Eà×%Ñ%ó +:ˆÜ�u˜f dÓ+ˆÙØà�7Š?Ü)¨%°Ó:ˆHÚØ—‘˜XÕ&Ø�S‹[Ø× Ñ  Ô)Øð —~‘~ eÓ,ò >�Ø—g‘g˜e RÓ(�Ø—g‘g˜e RÓ(�ÚÜ*¨8°SÓ9�HØ—L‘L 2 c U¨"¨X¨J°eÐ!<Õ=ð>ð Ÿ™¨°$˜Ó7ò E�Ø˜V‘}�Ø9<À¹�d—j‘j“l×)Ñ)¨#¨qÓ1°"Ò5È"�ØÐ\Ò\Ø"Ÿ^™^¨C°t˜^Ó<�FÜ +¨H°dÓ ;�IÚØŸ™ q¨¨°°9°+¸UÐ%CÕDðEð —.‘. ¨D�.Ó1ˆCÜ$ SÓ)ˆCÛ”s˜3“x !”|Ø—‘˜SÔ!Ø—‘˜VÖ$à�UŒ]Ø—)‘)˜E 2Ó&ˆCØ—)‘)˜E 2Ó&ˆCÛÜ& x°Ó5�Ø—‘˜r #  b¨¨
°%Ð8Ö9ðW+:ðZ �W‰W�U‹^×!Ñ!Ó#€FÜ�V‰V�I˜v vÓ.€Fð ×!Ñ! %°Ð!Ó?ò ,ˆØ—‘˜S t�Ó,ò 	,ˆAØ—Z‘Z ¨4�ZÓ0ˆFÜ# H¨a°©iÓ8ˆIÚ˜&Ÿ,™,�.Ø˜6Ÿ<™<›>Ð*¨"¨Y¨K°qÐ9�Ø˜vÒ%Ø˜f t™mÑ+‘Fñ	,ð,ð €Mr$   c                 óÂ  — t        | «      }|syt        |d«      }d}|j                  dddi¬«      }|r |j                  dd«      j	                  «       }|s'|j                  d	«      }|r|j                  d
¬«      nd}|s\|j                  d«      }|rI|j                  d
¬«      }t        j                  dd|«      j	                  «       }|rt        |«      dkD  r|}d}|j                  dddi¬«      }	|	r;|	j                  dd«      }
t        j                  d|
«      }|r|j                  d«      }d}|j                  dd¬«      }|rt        || «      }g }|j                  dd¬«      }|rsg }|j                  dd
¬«      D ]>  }|d   }|j                  dd
¬«      }t        | |«      }|j                  d|› d|› d�«       Œ@ |r|r|dz  }|dj                  |«      z  }|||fS )u/   æŠ“å�–è¯¦æƒ…é¡µï¼Œè¿”å›ž (title, content, date))NNNr   r   Úmetar[   ÚArticleTitle)ÚattrsÚcontentÚh1Trk   rK   u*   \s*[-â€“â€”|]\s*çŽ¯è¯„å…¬ä¼—å�‚ä¸Žå…¬ç¤º.*é   ÚPubDatez(\d{4}-\d{2}-\d{2})r   rV   zarticle-conrX   zarticle-file)Úidr   r_   r   rN   rl   r^   ro   rm   )r7   r   rp   r   rD   ru   r@   rO   rv   ÚsearchrC   rˆ   r   rT   rF   rw   )r3   rG   ÚsouprK   rŠ   rŽ   ÚtagÚtrJ   Úmeta_dÚdrI   r�   rx   ÚattachmentsÚafr€   r   r‚   rƒ   s                       r"   Úparse_detailrš   Ã   sú  € ä�‹:€DÙØä˜˜}Ó-€Dð €EØ�9‰9�V F¨NÐ#;ˆ9Ó<€DÙØ—‘˜ BÓ'×-Ñ-Ó/ˆÙØ�Y‰Y�t‹_ˆÙ+-�—‘ $�Ô'°2ˆÙØ�i‰i˜Ó ˆÙØ—‘ 4�Ó(ˆAä—‘ÐDÀbÈ!ÓL×RÑRÓTˆAÙ”S˜“V˜a’ZØ�ð €DØ�Y‰Y�v f¨iÐ%8ˆYÓ9€FÙØ�J‰J�y "Ó%ˆÜ�I‰IÐ,¨aÓ0ˆÙØ—7‘7˜1“:ˆDð €GØ—‘˜5¨�Ó7€JÙÜ! *¨cÓ2ˆð €KØ	�‰�5˜^ˆÓ	,€BÙ	ØˆØ—[‘[ ¨4�[Ó0ò 	;ˆEØ˜‘=ˆDØ—^‘^ C¨t�^Ó4ˆFÜ# C¨Ó.ˆIØ×Ñ  6 (¨"¨Y¨K°qÐ9Õ:ð		;ñ
 áØ˜6Ñ!�Ø�v—{‘{ ;Ó/Ñ/ˆGà�'˜4ÐÐr$   c                  óÎ  — t         rt        t        t         «      nt        } t        dt        › d�«       t        dt        › d| › �«       g }t        d| dz   «      D ]“  }t        |«      }t        d|› d| › d|› �«       t        |«      }|st        d	«        nZt        |«      }|st        d
«        n@t        dt        |«      › d�«       |j                  |«       t        j                  d«       Œ• t        dt        |«      › d�«       |st        d«       y g }t        |«      D �]  \  }\  }}	}
t        d|dz   › dt        |«      › d|d d › d�dd¬«       t        |	«      \  }}}|xs |}|
xs |}|rt        |j                  «       «      dk  rt        d«       Œwt!        j"                  dd|«      d d j                  «       }|s|d d }|j%                  t        ||	|||dœ«       t        dt        |«      › d�«       |dz   d z  d!k(  sŒæt        d"|dz   › dt        |«      › d#t        |«      › �«       �Œ |r$t        d$t        |«      › d�«       t'        |d%«       t        d&«       y )'Nz=== z ===u     æ€»é¡µæ•°: u
   , æœ¬æ¬¡: r   u     ç¬¬ r?   u    é¡µ: u       æ— æ³•èŽ·å�–, å�œæ­¢u       ç©ºåˆ—è¡¨, å�œæ­¢u       æ‰¾åˆ° u    æ�¡g333333Ó?u   
  åˆ—è¡¨æ€»è®¡: u    æ�¡
u     æ— æ•°æ�®z  [z] é(   z...rN   T)ÚendÚflushé
   u   âš  ç©ºz<[^>]+>r   éÈ   )Ú	site_namerK   r3   r�   ÚsummaryÚpub_dateu   âœ… (u   å­—)é   r   u
     è¿›åº¦: u   , å·²å…¥åº“: u
   
  å…¥åº“ Úguigang_hpcygsu   å®Œæˆ�)Ú_MAX_PGÚminÚTOTAL_PAGESr2   Ú	SITE_NAMEr*   r<   r7   rL   rv   Úextendr0   r1   Ú	enumeraterš   rD   r@   rO   rF   r   )Úpages_to_fetchÚ	all_itemsr;   Úlist_urlrG   rH   ÚresultsÚidxrK   r3   rJ   Údtr�   ÚddÚfinal_titleÚ
final_dater¢   s                    r"   Úmainrµ   ý   sm  € Ý29”Sœ¤gÔ.¼{€Nä	ˆD”�˜4Ð
 Ô!Ü	ˆMœ+˜ j°Ð0@Ð
AÔBà€IÜ�a˜¨!Ñ+Ó,ò ˆÜ  Ó&ˆÜ��t�f˜A˜nÐ-¨V°H°:Ð>Ô?ä�X‹ˆÙÜÐ,Ô.Ùä Ó%ˆÙÜÐ)Ô+Ùä�œC ›J˜< tÐ,Ô-Ø×Ñ˜ÔÜ�
‰
�3�ð!ô$ 
Ðœs 9›~Ð.¨fÐ
5Ô6áÜˆmÔØà€GÜ#,¨YÓ#7ó TÑˆÑˆe�S˜$Ü��C˜‘E�7˜!œC 	›NÐ+¨2¨e°C°R¨j¨\¸Ð=À3ÈdÕSä& sÓ+‰ˆˆG�RØ’k˜EˆØ’Z˜Rˆ
áœ#˜gŸm™m›oÓ.°Ò3Ü�)Ôàä—&‘&˜ R¨Ó1°$°3Ð7×=Ñ=Ó?ˆÙØ! $ 3Ð'ˆGà�‰Ü"Ø ØØØØ"ñ
ô 	ô 	�”c˜'“l�^ 4Ð(Ô)à�!‰G�r‰>˜QÓÜ�J˜s 1™u˜g Q¤s¨9£~Ð&6°mÄCÈÃLÀ>ÐRÖSð7Tñ: Ü�œC ›L˜>¨Ð.Ô/Ü˜Ð"2Ô3ä	ˆ(…Or$   Ú__main__)r   )r¤   )1Ú__doc__ÚsysÚosr@   r0   Újsonr   r   r   ÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   r+   Úbs4r   r¦   r«   ÚargvÚir   rv   Úintr2   r   r©   ÚBASE_IPrE   r9   r:   r¨   ÚnowÚutcÚstrftimeÚCUTOFFr,   r#   r7   r<   rL   rP   rT   rˆ   rš   rµ   Ú__name__© r$   r"   ú<module>rÌ      sd  ðñ÷ × Ó ß 2Ñ 2à ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (ã Ý ð €Ù�c—h‘hÓò �D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ù�c—h‘h˜q 1™u‘oÓ&ˆÙðð ÐÙ	Ð
¡# g£,Ñ
.Ô/à?€	Ø
€Ø	€Ø�W�IÐ€Ø+€Ø€Ø
ˆ(�,‰,�x—|‘|Ó
$¡y°eÔ'<Ñ
<×	FÑ	FÀzÓ	R€ð DØñ€ó
óò8ò
ò0	-ò
 òGòR8 òtAðH ˆzÒÙ…Fð r$   