Ë
    (ˆjl  ã                   óÜ   — 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Z	e	dz   Z
dZdZdZd	d
iZdZdddddddddddœddddœgdddgdddddœZd„ Zd„ Zd„ Zd„ Zd„ Zed k(  r e«        yy)!uO  Crawler for æ»•å·žå¸‚-æž£åº„å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€æ»•å·žåˆ†å±€-é€šçŸ¥å…¬å‘Š
   http://www.tengzhou.gov.cn/zwgk/xxgkml/szbm/zzssthjjtzfj/
   TRS CMS /irs/front/search æŽ¥å�£ (filters ç»„é…�åˆ†ç±»+éƒ¨é—¨)
   åˆ—è¡¨: POST /irs/front/search 71æ�¡/4é¡µ (20æ�¡æ¯�é¡µ)
   è¯¦æƒ…: curl ç›´è¿ž, æ­£æ–‡ div.zwnr, æ ‡é¢˜ <title>, æ—¥æœŸ æˆ�æ–‡æ—¶é—´
é    N)Úurljoinzhttp://www.tengzhou.gov.cnz/irs/front/searchz/root/search.dbu(   æ»•å·žå¸‚ç”Ÿæ€�çŽ¯å¢ƒåˆ†å±€-é€šçŸ¥å…¬å‘Šzcrawl_tengzhou_sthjj.pyz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36z
2023-08-18Ú Ú18d72ce8cb5Ú2849Úf_2024329561714õ   é€šçŸ¥å…¬å‘ŠÚ1)ÚaggrNameÚ
aggrValuesÚfilterIdÚf_2024329501386u$   æž£åº„å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€æ»•å·žåˆ†å±€ÚALLÚtimeé   é   Úall)ÚappendixTypeÚbeginDateTimeÚcodeÚcodesÚ
configCodeÚ
dataTypeIdÚendDateTimeÚfiltersÚgranularityÚisSearchForcedÚhistorySearchWordsÚorderByÚpageNoÚpageSizeÚsearchByc                 ó2   — t        dt        › d| › �d¬«       y )Nú[z] T)Úflush)ÚprintÚ	SITE_NAME)Úmsgs    ú)/root/gov_crawler/crawl_tengzhou_sthjj.pyÚlogr)      s   € Ü	ˆAŒiˆ[˜˜3˜%Ð
 ¨Ö-ó    c                 óÜ   — t        t        «      }| |d<   t        j                  t        |t
        d¬«      }|j                  dk7  rt        d|j                  › �«       y |j                  «       S )Nr   é   )ÚjsonÚheadersÚtimeoutéÈ   u   æ�œç´¢æŽ¥å�£ HTTP )	ÚdictÚSEARCH_BODYÚrequestsÚpostÚ
SEARCH_URLÚHEADERSÚstatus_coder)   r-   )ÚpageÚbodyÚrs      r(   Úfetch_searchr;   #   sW   € Ü”Ó€DØ€Dˆ�NÜ�‰”j t´WÀbÔI€AØ‡}�}˜ÒÜÐ  §¡ Ð0Ô1ØØ�6‰6‹8€Or*   c                 ó¼  — g }| j                  di «      j                  di «      }|j                  dg «      D ]¢  }|j                  di «      }|j                  dd«      }|j                  d«      xs |j                  dd«      }|j                  d«      xs |j                  d	d«      }|r|d
d nd}|sŒ}|sŒ€|j                  ||j                  «       |dœ«       Œ¤ |S )u(   ä»Žæ�œç´¢å“�åº”æ��å�– (url, title, date)ÚdataÚmiddleÚ
listAndBoxÚurlr   Útitle_no_tagÚtitleztable-2r   Né
   )r@   rB   Údate)ÚgetÚappendÚstrip)	r=   Úitemsr>   ÚentryÚdr@   rB   ÚtrD   s	            r(   Ú
parse_listrL   -   sÐ   € à€EØ�X‰X�f˜bÓ!×%Ñ% h°Ó3€FØ—‘˜L¨"Ó-ò MˆØ�I‰I�f˜bÓ!ˆØ�e‰e�E˜2ÓˆØ—‘�nÓ%Ò;¨¯©¨w¸Ó);ˆØ�E‰E�)ÓÒ1 §¡ f¨bÓ 1ˆÙˆq��"‰v ˆÚ’5Ø�L‰L ¨u¯{©{«}ÀdÑKÕLðMð €Lr*   c           	      óŠ  ‡— 	 t        j                  | t        d¬«      }d|_        |j                  }d
d
d
d
g ddœ}t        j                  d|t        j                  «      }|rT|j                  d«      j                  «       j                  dd
«      j                  dd
«      j                  «       }|r||d<   t        j                  d|t        j                  «      }|s%t        j                  d|t        j                  «      }|�rA|j                  d«      }t        t        j                  d|«      «      |d<   t        j                   dd
|t        j                  ¬«      }t        j                   dd
|t        j                  ¬«      }|j                  «       |d<   t        j"                  d|«      D ]”  }|j                  d«      |j                  d«      j                  «       c}	Št%        ˆfd„dD «       «      s&t        j                  d|	t        j&                  «      sŒnt)        t*        |	«      }
|d   j-                  ‰|
d œ«       Œ– t        j                  d!|«      }|st        j                  d"|«      }|rN|j                  d«      › d#t/        |j                  d«      «      d$›d#t/        |j                  d%«      «      d$›�|d&<   t        j                  d'|«      }|r"|j                  d«      j                  «       |d(<   |S # t
        $ r9}t        d| j                  d«      d   › dt        |«      dd	 › �«       Y d}~yd}~ww xY w))u-   è¯¦æƒ…é¡µ: æ ‡é¢˜/æ­£æ–‡/æ—¥æœŸ/æ–‡å�·/é™„ä»¶r,   )r.   r/   zutf-8u   è¯¦æƒ…è¯·æ±‚å¤±è´¥ ú/éÿÿÿÿz: Né2   r   F)rB   ÚcontentrD   Údoc_noÚattachmentsÚ	has_tablez<title>(.*?)</title>r   u   æ»•å·žå¸‚æ”¿åºœä¿¡æ�¯å…¬å¼€--u   _æ»•å·žå¸‚æ”¿åºœä¿¡æ�¯å…¬å¼€rB   z&<div[^>]*class="zwnr"[^>]*>(.*?)</div>z+<div[^>]*class="view[^"]*"[^>]*>(.*?)</div>z<tablerT   z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>rQ   z+<a[^>]*href="([^"]+)"[^>]*>([^<]{2,80})</a>é   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0ÚkÚtxts     €r(   ú	<genexpr>zfetch_detail.<locals>.<genexpr>Y   s   øè ø€ ÒD �1˜”8ÑDùs   ƒ)u   é™„ä»¶u   ä¸‹è½½u   æ–‡ä»¶z\.(docx?|xlsx?|pdf|zip|rar)$rS   )Únamer@   uG   æˆ�æ–‡æ—¶é—´[ï¼š:]\s*<[^>]*>\s*([\d]{4})å¹´([\d]{1,2})æœˆ([\d]{1,2})æ—¥u(   ([\d]{4})å¹´([\d]{1,2})æœˆ([\d]{1,2})æ—¥ú-Ú02dé   rD   u*   æ–‡\s*å�·[ï¼š:]\s*<[^>]*>\s*([^<\s]{3,40})rR   )r3   rE   r6   ÚencodingÚtextÚ	Exceptionr)   ÚsplitÚstrÚreÚsearchÚDOTALLÚgrouprG   ÚreplaceÚboolÚsubÚfinditerÚanyÚIr   ÚBASErF   Úint)r@   r:   ÚhtmlÚeÚresultÚmrK   ÚinnerÚamÚhrefÚfullr[   s              @r(   Úfetch_detailrz   <   s®  ø€ ðÜ�L‰L˜¤g°rÔ:ˆØˆŒ
Ø�v‰vˆð  b°"ÀÐSUÐdiÑj€Fä
�	‰	Ð)¨4´·±Ó;€AÙØ�G‰G�A‹J×ÑÓ×&Ñ&Ð'FÈÓK×SÑSÐTrÐtvÓw×}Ñ}ÓˆÙØˆF�7‰Oä
�	‰	Ð;¸TÄ2Ç9Á9ÓM€AÙÜ�I‰IÐDÀdÌBÏIÉIÓVˆÚØ—‘˜“
ˆÜ"¤2§9¡9¨Y¸Ó#>Ó?ˆˆ{ÑÜ—‘Ð3°R¸ÄbÇiÁiÔPˆÜ—‘Ð1°2°uÄBÇIÁIÔNˆØ!ŸK™K›MˆˆyÑä—+‘+ÐLÈeÓTò 	IˆBØŸ™ › R§X¡X¨a£[×%6Ñ%6Ó%8ˆIˆD�#ÜÓDÐ%CÔDÔDÌÏ	É	ÐRqÐswÔy{×y}Ñy}ÕH~Üœt TÓ*�Ø�}Ñ%×,Ñ,°cÀ$Ñ-GÕHð		Iô 	�	‰	Ð\Ð^bÓc€AÙÜ�I‰IÐAÀ4ÓHˆÙØŸG™G A›J˜< q¬¨Q¯W©W°Q«Z«¸Ð(=¸Q¼sÀ1Ç7Á7È1Ã:»ÈsÐ>SÐTˆˆv‰ä
�	‰	Ð?ÀÓF€AÙØŸ7™7 1›:×+Ñ+Ó-ˆˆxÑØ€MøôI ò ÜÐ! #§)¡)¨C£.°Ñ"4Ð!5°R¼¸A»¸sÀ¸°}ÐEÔFÜûðús   ƒ/L  Ì 	MÌ	/L=Ì=Mc                  óf  — d} dt         j                  v r]t         j                  j                  d«      }|dz   t        t         j                  «      k  rt	        t         j                  |dz      «      } d}d}d}t        j
                  «       }t        j                  t        d¬«      }|j                  «       }t        d| dz   «      D �]*  }t        |«      }	|	st        d|› d�«       |dz  }Œ&|	j                  di «      j                  d	i «      }
|
j                  d
d«      }|
j                  dd«      }t        d|› d|› d|› d�«       t        |	«      }|st        d|› d�«        �nŽ|D �]…  }|j                  d|d   f«       |j!                  «       r|dz  }Œ0t#        |d   «      }|r
|d   r|d   sC|r|d   rd|d   › d|d   › d�|d<   n)t        d|d   j%                  d«      d   › �«       |dz  }Œ�|d   xs	 |d   xs d}|j                  dt&        t(        |d   |d   |||d   d d j+                  dd«      j+                  dd«      d d!d|d   |d"   dt-        j.                  |d#   d$¬%«      d&|d'   rdndt0        f«       |j2                  dkD  r|dz  }n|dz  }|j5                  «        |d(z  dk(  s�ŒQ|dkD  s�ŒXt        d)|› d*|› d+|› d,t        j
                  «       |z
  d-›d.�	«       �Œˆ �Œ- |j7                  «        t        d/|› d*|› d+|› d0t        j
                  «       |z
  d-›d1�	«       y )2Nr   z--pagesr   r,   )r/   u   é¡µu    æŽ¥å�£å¤±è´¥r=   ÚpagerÚtotalÚ	pageCountrN   u   : å…±u   æ�¡u    æ— æ�¡ç›®ï¼Œå�œæ­¢z'SELECT id FROM gov_raw WHERE page_url=?r@   rB   rQ   z<p><a href="z">z</a></p>u     è¯¦æƒ…å¤±è´¥: rO   rD   z
1900-01-01aF  
                INSERT OR IGNORE INTO gov_raw
                (site_name, source_url, page_url, title, publish_date, date_rank, summary, status,
                 category, visits, content, tags, industry, attachments, group_name, has_table, script_name)
                VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
            r0   ú<r   ú>Ú	publishedr   rR   rS   F)Úensure_asciiu   å±±ä¸œrT   rC   u     è¿›åº¦: æ–°å¢žu    è·³è¿‡u    å¤±è´¥z (z.0fzs)u   å®Œæˆ�: æ–°å¢žu    ç”¨æ—¶Ús)ÚsysÚargvÚindexÚlenrq   r   Úsqlite3ÚconnectÚDBÚcursorÚranger;   r)   rE   rL   ÚexecuteÚfetchonerz   rd   r&   r5   rj   r-   ÚdumpsÚSCRIPT_NAMEÚrowcountÚcommitÚclose)ÚpagesÚiÚ	total_newÚ
total_skipÚ
total_failÚt0ÚconnÚcurÚpgr=   r|   r}   Ú
page_countrH   ÚitemÚdetrD   s                    r(   Úmainr    i   sW  € Ø€EØ”C—H‘HÑÜ�H‰H�N‰N˜9Ó%ˆØˆq‰5”3”s—x‘x“=Ò ÜœŸ™  Q¡™Ó(ˆEØ€IØ€JØ€JÜ	�‰‹€Bä�?‰?œ2 rÔ*€DØ
�+‰+‹-€Cä�A�u˜q‘yÓ!ó .rˆÜ˜BÓˆÙÜ�#�b�T˜Ð'Ô(Ø˜!‰OˆJØØ—‘˜ Ó$×(Ñ(¨°"Ó5ˆØ—	‘	˜' 1Ó%ˆØ—Y‘Y˜{¨AÓ.ˆ
Üˆc�"��Q�z�l %¨ w¨cÐ2Ô3Ü˜4Ó ˆÙÜ�#�b�TÐ,Ð-Ô.ÚØó  	rˆDØ�K‰KÐAÀDÈÁKÀ>ÔRØ�|‰|Œ~Ø˜a‘�
ØÜ˜t E™{Ó+ˆCÙ˜c 'šl°#°i².Ù˜3˜wš<Ø'3°D¸±K°=ÀÀ3ÀwÁ<À.ÐPXÐ%Y�C˜	’NäÐ*¨4°©;×+<Ñ+<¸SÓ+AÀ"Ñ+EÐ*FÐGÔHØ !‘O�JØØ�v‘;Ò> $ v¡,Ò>°,ˆDØ�K‰Kð ô œ: t¨E¡{°C¸±LÀ$Ø�c˜)‘n T cÐ*×2Ñ2°3¸Ó;×CÑCÀCÈÓLØ˜^¨Q°°I±Ø�H‘˜r¤4§:¡:¨c°-Ñ.@ÈuÔ#UØ˜s ;Ò/™!°Q¼ðôð �|‰|˜aÒØ˜Q‘‘	à˜a‘�
Ø�K‰KŒMØ˜2‰~ Ô" y°1¤}ÜÐ& y k°¸¸ÀGÈJÈ<ÐWYÔZ^×ZcÑZcÓZeÐfhÑZhÐilÐYmÐmoÐpÖqòA 	rð.rð` 	‡J�J„LÜˆ.˜˜ 7¨:¨,°g¸j¸\ÈÔQU×QZÑQZÓQ\Ð]_ÑQ_Ð`cÐPdÐdeÐfÕgr*   Ú__main__)Ú__doc__r3   rf   rˆ   r-   r„   r   Úurllib.parser   rp   r5   rŠ   r&   r�   r6   ÚCUTOFFr2   r)   r;   rL   rz   r    Ú__name__rX   r*   r(   ú<module>r¦      sÇ   ðñ÷ .× -× -Ý  à#€ØÐ'Ñ'€
Ø€Ø6€	Ø'€Øð  Kð  L€Ø	€ð ¨°]ÈRØ F¸2à&°nÐRUÑVØ&Ð6\ÐjmÑnðð ¨AÀnÐEUØ °Àñ	€ò.òòò*òZ?hðD ˆzÒÙ…Fð r*   