Ë
    6ß©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.e/dk(  r e.«        yy)u2  
å‘¨å�£å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€ - çŽ¯å¢ƒå½±å“�è¯„ä»·å…¬ç¤º (sthb.zhoukou.gov.cn)
CMS: HTML-Import CMS (script.json pagination)
åˆ—è¡¨: list{N}.html (N=1..33, 10æ�¡/é¡µ)
è¯¦æƒ…: article{32ä½�hex}.html
è¯¦æƒ…å®¹å™¨: div.article-detail#articleDetail
æ³¨æ„�: IP 221.14.138.84 + Host header, ArticleTitleå�¯èƒ½é‡�å¤�
é    N)ÚdatetimeÚtimezoneÚ	timedelta)Úpush_to_searchdb)ÚBeautifulSoupz--pagesé   z[AutoPg] max_pages=u1   å‘¨å�£å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€-çŽ¯å¢ƒå½±å“�è¯„ä»·å…¬ç¤ºz221.14.138.84zsthb.zhoukou.gov.cnúhttp://z(/sitesources/sthjj/page_pc/hjgs/hjyxpjgsé!   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_zhoukou_hjyxpj.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 ]3  }	 t        j                  | t        |¬«      }d|_        |j
                  c S  y # t        $ r<}|dk  rt        j                  d«       nt        d| › d|› �«       Y d }~ y Y d }~Œwd }~ww xY w)Né   )ÚheadersÚtimeoutz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ÔCˆAØ ˆAŒJØ—6‘6ŠMñ	
øô
 ò 	Ø˜Š{Ü—
‘
˜1•ä˜	 #  b¨¨Ð,Ô-Ýô ûð	ús   �.AÁ	BÁ,BÂBc                 ó*   — t         t        z   d| › d�z   S )Nz/listz.html)ÚBASE_URLÚ	LIST_PATH)Úpages    r"   Úmake_list_urlr<   G   s   € Ü”iÑ E¨$¨¨uÐ"5Ñ5Ð5r$   c                 ó<  — g }t        j                  d| t         j                  «      D ]ñ  }|j                  d«      j	                  «       }|j                  d«      j	                  «       }t        j
                  dd|j                  d«      «      j	                  «       }|j                  d«      j	                  «       }|xs |}|j                  d«      rd	t        z   |z   }n |j                  d
«      sd	t        z   dz   |z   }|sŒÛ|sŒÞ|j                  |||f«       Œó |S )NzŽ<a href="([^"]+)"[^>]*title="([^"]*)"[^>]*>\s*<div class="pictext">\s*(.*?)\s*</div>\s*<div class="artpub">\s*<font>(\d{4}-\d{2}-\d{2})</font>r   r)   ú<[^>]+>r   r&   é   ú/r	   r   )	ÚreÚfinditerÚDOTALLÚgroupÚstripÚsubr   ÚDOMAINÚappend)ÚhtmlÚitemsÚmr   Ú
title_attrÚ
title_textÚdateÚtitles           r"   Úparse_list_pagerP   K   sû   € Ø€EÜ�[‰[ð	Fð 	Œb�i‰ió	ò .ˆð �w‰w�q‹z×ÑÓ!ˆØ—W‘W˜Q“Z×%Ñ%Ó'ˆ
Ü—V‘V˜J¨¨A¯G©G°A«JÓ7×=Ñ=Ó?ˆ
Ø�w‰w�q‹z×ÑÓ!ˆàÒ(˜jˆà�?‰?˜3ÔØœvÑ%¨Ñ,‰DØ—‘ Ô(ØœvÑ%¨Ñ+¨dÑ2ˆ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
| «      j                  «       S )Nz3(?<=[\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\s+ú )rA   rF   rE   )r.   s    r"   Ú_clean_span_spacesrS   e   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�&˜#˜tÓ$×*Ñ*Ó,Ð,r$   c           	      óR  ‡— g }| j                   D �]]  }t        |dd «      }|sŒ|dk(  r!t        ||«      }|sŒ(|j                  |«       Œ:|dk(  sŒ@|j	                  d«      rŒR|j                  dd¬«      D ]‹  }|d   Št        ˆfd„d	D «       «      sŒ|j                  d
d¬«      }‰j                  d«      rdt        z   ‰z   }n#‰j                  d«      sdt        z   dz   ‰z   }n‰}|sŒt|j                  d|› d|› d�«       Œ� |j                  d
d¬«      }	t        |	«      }	t        j                  dd|	«      }	|	s�Œ,t        |	«      dkD  s�Œ<|j                  |	«       |j                  d«       �Œ` dj                  |«      j                  «       }
t        j                  dd|
«      }
|
S )NÚnamer   Úpr   T)r   r   c              3   ó\   •K  — | ]#  }‰j                  «       j                  |«      –— Œ% y ­w)N)ÚlowerÚendswith)Ú.0r6   r   s     €r"   ú	<genexpr>z"extract_content.<locals>.<genexpr>‚   s"   øè ø€ Òt°A�t—z‘z“|×,Ñ,¨Q×/Ñtùs   ƒ),)z.pdfz.docz.docxz.xlsz.xlsxz.zipz.rarrR   ©rE   r@   r	   r   ú[z](z)

z&#\d+;r   r&   z

z\n{4,})ÚchildrenÚgetattrr#   rH   Úfind_parentr   ÚanyÚget_textr   rG   rS   rA   rF   ÚlenÚjoinrE   )Ú
detail_divÚpage_urlÚpartsÚchildrU   Útbl_htmlÚa_tagÚa_textÚ	full_hrefÚtxtÚresultr   s              @r"   Úextract_contentro   o   s™  ø€ Ø€Eà×$Ñ$ó !%ˆÜ�u˜f dÓ+ˆÙØà�7Š?Ü)¨%°Ó:ˆHÚØ—‘˜XÕ&Ø�S‹[Ø× Ñ  Ô)Øð Ÿ™¨°$˜Ó7ò E�Ø˜V‘}�ÜÓtÐ9sÔtÕtØ"Ÿ^™^¨C°t˜^Ó<�FØ—‘ sÔ+Ø$-´Ñ$6¸Ñ$=™	Ø!Ÿ_™_¨VÔ4Ø$-´Ñ$6¸Ñ$<¸tÑ$C™	à$(˜	ÚØŸ™ q¨¨°°9°+¸UÐ%CÕDðEð —.‘. ¨D�.Ó1ˆCÜ$ SÓ)ˆCÜ—&‘&˜ B¨Ó,ˆCÛ”s˜3“x !”|Ø—‘˜SÔ!Ø—‘˜VÖ$ðC!%ðF �W‰W�U‹^×!Ñ!Ó#€FÜ�V‰V�I˜v vÓ.€FØ€Mr$   c                 ó„  — t        | «      }|syt        |d«      }d}|j                  dddi¬«      }|rN|j                  dd«      j	                  «       }t        |«      d	kD  rt        |«      d
z  }|d | ||d  k(  r|d | }|}|s'|j                  d«      }|r|j                  d¬«      nd}|sJ|j                  d«      }|r7|j                  d¬«      }	t        j                  dd|	«      j	                  «       }d}
|j                  dddi¬«      }|r;|j                  dd«      }t        j                  d|«      }|r|j                  d«      }
|
sL|j                  dd¬«      }|r7t        j                  d|j                  «       «      }|r|j                  d«      }
d}|j                  ddd¬«      }|rt        || «      }|||
fS )N)NNNr   r   ÚmetarU   ÚArticleTitle)ÚattrsÚcontenté
   r)   Úh1Tr\   rO   u   _å‘¨å�£å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€.*ÚPubDatez(\d{4}-\d{2}-\d{2})r   Údivzcms-article-xinxi)Úclass_zarticle-detailÚarticleDetail)ry   Úid)r7   r   Úfindr   rE   rc   rb   rA   rF   ÚsearchrD   ro   )r3   rI   ÚsouprO   rq   ÚrawÚhalfrv   Ú	title_tagÚtrN   Úmeta_dÚdrK   Úinfort   re   s                    r"   Úparse_detailr†   š   sÄ  € Ü�‹:€DÙØä˜˜}Ó-€Dð €EØ�9‰9�V F¨NÐ#;ˆ9Ó<€DÙØ�h‰h�y "Ó%×+Ñ+Ó-ˆäˆs‹8�bŠ=Ü�s“8˜q‘=ˆDØ�5�Dˆz˜S  ˜ZÒ'Ø˜%˜4�j�ØˆáØ�Y‰Y�t‹_ˆÙ+-�—‘ $�Ô'°2ˆÙØ—I‘I˜gÓ&ˆ	ÙØ×"Ñ"¨Ð"Ó.ˆAÜ—F‘FÐ9¸2¸qÓA×GÑGÓIˆEð €DØ�Y‰Y�v f¨iÐ%8ˆYÓ9€FÙØ�J‰J�y "Ó%ˆÜ�I‰IÐ,¨aÓ0ˆÙØ—7‘7˜1“:ˆDÙØ�y‰y˜Ð':ˆyÓ;ˆÙÜ—	‘	Ð0°$·-±-³/ÓBˆAÙØ—w‘w˜q“z�ð €GØ—‘˜5Ð)9¸o�ÓN€JÙÜ! *¨cÓ2ˆà�'˜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...rR   T)ÚendÚflushru   u   âš  ç©ºr>   r   éÈ   )Ú	site_namerO   r3   rt   ÚsummaryÚpub_dateu   âœ… (u   å­—)é   r   u
     è¿›åº¦: u   , å·²å…¥åº“: u
   
  å…¥åº“ Úzhoukou_hjyxpju   å®Œæˆ�)Ú_MAX_PGÚminÚTOTAL_PAGESr2   Ú	SITE_NAMEr*   r<   r7   rP   rc   Úextendr0   r1   Ú	enumerater†   rE   rA   rF   rH   r   )Úpages_to_fetchÚ	all_itemsr;   Úlist_urlrI   rJ   ÚresultsÚidxrO   r3   rN   Údtrt   Ú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ð5Tñ8 Ü�œC ›L˜>¨Ð.Ô/Ü˜Ð"2Ô3ä	ˆ(…Or$   Ú__main__)r   )r�   )0Ú__doc__ÚsysÚosrA   r0   Újsonr   r   r   ÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   r+   Úbs4r   r‘   r–   ÚargvÚir   rc   Úintr2   r   r”   ÚBASE_IPrG   r9   r:   r“   ÚnowÚutcÚstrftimeÚCUTOFFr,   r#   r7   r<   rP   rS   ro   r†   r    Ú__name__© r$   r"   ú<module>r·      s^  ðñ÷ × Ó ß 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Ð€Ø6€	Ø€Ø
ˆ(�,‰,�x—|‘|Ó
$¡y°eÔ'<Ñ
<×	FÑ	FÀzÓ	R€ð DØñ€óóò6òò4-ò(òV1 òh@ðF ˆzÒÙ…Fð r$   