Ë
    ¸¬ujò  ã                   ó  — 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Z ej                  dd«      ZdZ	dZ
e
dz   ZdZdZd	d
d
dœZ e j                  «       Zej"                  j%                  e«       d„ Zdd„Zd„ Zd„ Zedk(  r e«        yy)é    NÚ	SEARCH_DBz/root/search.dbu   æ½�å�Šæ»¨æµ·çŽ¯è¯„å…¬ç¤ºzhttp://www.wfbinhai.gov.cnz/els-service/articlez
2023-06-01Ú1846716046573178880z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zapplication/json)z
User-AgentzContent-TypeÚAcceptc                 ó¾   — 	 t        | «      S # t        $ rF t        j                  | j	                  «       «      j                  «       d d }t        |d«      dz  cY S w xY w)Né   é   l            )ÚintÚ
ValueErrorÚhashlibÚmd5ÚencodeÚ	hexdigest)ÚxxidÚhs     ú(/root/gov_crawler/crawl_wfbinhai_hpgs.pyÚmake_int_idr      sU   € ð$Ü�4‹yÐøÜò $Ü�K‰K˜Ÿ™›Ó&×0Ñ0Ó2°3°BÐ7ˆÜ�1�b‹z˜UÑ#Ò#ð$ús   ‚
 �AAÁAc                 ó†   — t         gdddœ}t        j                  t        › d| › d|› �|d¬«      }|j	                  «       d   S )NÚ124Úup)ÚcatasÚdqÚorderú/é   )ÚjsonÚtimeoutÚdata)ÚCATAIDÚsessionÚpostÚAPI_URLr   )ÚpageÚ	page_sizeÚbodyÚresps       r   Ú
fetch_listr&      sF   € Ü�X U°TÑ:€DÜ�<‰<œ7˜) 1 T F¨!¨I¨;Ð7¸dÈBˆ<ÓO€DØ�9‰9‹;�vÑÐó    c                 óú  — t         › d| › d|› d|› d�}t        j                  |d¬«      }|j                  j	                  dd¬«      }g }t        j                  d|t
        j                  «      }|r¤|j                  d	«      }t        j                  d
d|t
        j                  t
        j                  z  ¬«      }t        j                  dd|t
        j                  t
        j                  z  ¬«      }|j                  «       }|r|j                  |«       t        j                  d|t
        j                  «      }	|	r.|j                  |	j                  d	«      j                  «       «       |rdj                  |«      S y)Nr   ú.htmlr   )r   zutf-8Úreplace)Úerrorsz8<div class="info-con" id="mainText">(.*?)</div>\s*</div>é   z<script[^>]*>.*?</script>Ú )Úflagsz<style[^>]*>.*?</style>z!<div class="appendix">(.*?)</div>z<br><br>)ÚBASE_URLr   ÚgetÚcontentÚdecodeÚreÚsearchÚDOTALLÚgroupÚsubÚIÚstripÚappendÚjoin)
r   Údwidr   Úurlr%   ÚhtmlÚpartsÚmr   Úm2s
             r   Úfetch_detailrB   "   s!  € ÜˆJ�a˜�t˜1˜T˜F ! D 6¨Ð
/€CÜ�;‰;�s Bˆ;Ó'€DØ�<‰<×Ñ˜w¨yÐÓ9€DØ€Eä
�	‰	ÐMÈtÔUW×U^ÑU^Ó_€AÙØ�G‰G�A‹JˆÜ�F‰FÐ/°°Q¼b¿i¹iÌÏÉ¹nÔMˆÜ�F‰FÐ-¨r°1¼B¿I¹IÄbÇdÁd¹NÔKˆØ�G‰G‹IˆÙØ�L‰L˜ŒOä	�‰Ð7¸¼r¿y¹yÓ	I€BÙ	Ø�‰�R—X‘X˜a“[×&Ñ&Ó(Ô)ÙØ�‰˜uÓ%Ð%Ør'   c                  ó  — t        dt        › d�«       t        dd«      } | d   }|dz   dz  }t        d|› d|› �«       t        j                  t
        «      }|j                  «       }d	\  }}}t        j                  «       }t        d|dz   «      D �]Ï  }		 t        |	d«      } | j                  dg «      }|s �n«|D �]   }|j                  dd«      xs dj                  «       }|j                  dd«      xs dd d }|r|t        k  r|dz  }ŒR|j                  dd«      }|j                  dd«      }|j                  dd«      }|r|s|dz  }Œ’	 t        |||«      }t        |«      }	 |j!                  d|t        t"        › d|› d|› d|› d�t"        › d|› d|› d|› d�||||rt%        |j'                  dd«      «      ndf«       |j(                  dkD  r|dz  }n|dz  }�Œ# t        j                  «       |z
  }t        d|	› d|› d|› d|› d |› d!|d"›d#�«       |D �cg c]  }|j                  dd«      d d ‘Œ }}|s�Œªt+        |«      t        k  s�Œ¾|	dkD  s�ŒÅt        d$«        n |j-                  «        t        d%«       	 |j                  «       }|j!                  d&t        f«       |j!                  d't        f«      j/                  «       }|j1                  d(|«       |j-                  «        t        d)t3        |«      › d*�«       |j5                  «        t        j                  «       |z
  }t        d,|d"›d-|› d.|› d/|› �«       y # t        $ r1}
t        d
|	› d|
› �«       t        j                  d«       Y d }
~
�Œêd }
~
ww xY w# t        $ r}
t        d|› d|
› �«       d}Y d }
~
�ŒJd }
~
ww xY w# t        $ r!}
t        d|› d|
› �«       |dz  }Y d }
~
�Œd }
~
ww xY wc c}w # t        $ r}
t        d+|
› �«       Y d }
~
Œõd }
~
ww xY w)0Nz=== z ===r,   ÚelementsTotalé   r   zTotal: z	, Pages: )r   r   r   z  [ERROR] List page z: é   ÚcontentsÚsubjectr-   Úfwdateé
   r   r<   r   r   z  [ERROR] Detail z|INSERT OR IGNORE INTO gov_raw(id,site_name,source_url,page_url,title,publish_date,content,date_rank) VALUES(?,?,?,?,?,?,?,?)r   r)   ú-r   z  [DB ERR] z  Page z: +z (-z, >3yz) [z.0fzs]z  (Reached cutoff)z
Syncing FTS...zPDELETE FROM gov_search WHERE rowid IN (SELECT id FROM gov_raw WHERE site_name=?)zLSELECT id, title, site_name, summary, content FROM gov_raw WHERE site_name=?z]INSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary, content) VALUES(?,?,?,?,?)z  FTS: z recordsz  FTS error: z
=== Done (zs) === Inserted z
, Skipped z, Old )ÚprintÚ	SITE_NAMEr&   Úsqlite3ÚconnectÚDB_PATHÚcursorÚtimeÚrangeÚ	ExceptionÚsleepr0   r9   ÚCUTOFF_DATErB   r   Úexecuter/   r	   r*   ÚrowcountÚmaxÚcommitÚfetchallÚexecutemanyÚlenÚclose)ÚdÚtotalÚtotal_pagesÚconnÚcÚinsertedÚskippedÚoldÚstartÚpgÚeÚartsÚartÚtitleÚpub_dater   r<   r   Úcontent_htmlÚint_idÚelapsedÚaÚdatesÚc2Úrowss                            r   Úmainru   8   s.  € Ü	ˆD”�˜4Ð
 Ô!Ü�1�aÓ€AØˆoÑ€EØ˜2‘: "Ñ$€KÜ	ˆG�E�7˜) K =Ð
1Ô2ä�?‰?œ7Ó#€DØ�‰‹€AØ$Ñ€Hˆg�sÜ�I‰I‹K€Eä�A�{ Q‘Ó'ó 1ˆð	Ü˜2˜rÓ"ˆAð
 �u‰u�Z Ó$ˆÙÚàó 	ˆCØ—W‘W˜Y¨Ó+Ò1¨r×8Ñ8Ó:ˆEØŸ™ ¨"Ó-Ò3°°S°bÐ9ˆHÙ˜H¤{Ò2Ø�q‘�ØØ—7‘7˜6 2Ó&ˆDØ—7‘7˜6 2Ó&ˆDØ—‘˜˜uÓ%ˆBÙ™uØ˜1‘�Øð"Ü+¨B°°dÓ;�ô
 ! Ó&ˆFðØ—	‘	ð  YØ!¤9Ü&˜Z q¨¨¨A¨d¨V°1°T°F¸%Ð@Ü&˜Z q¨¨¨A¨d¨V°1°T°F¸%Ð@Ø  (¨LÙ<Dœ3˜x×/Ñ/°°BÓ7Ô8È!ð	MôNð —:‘: ’> 8¨q¡=¡8Ø ‘l�gùð9	ôB —)‘)“+ Ñ%ˆÜ�˜�t˜1˜[˜M¨¨X¨J°c¸'¸À%ÈÀuÈCÐPWÐX[È}Ð\^Ð_Ô`Ø26Ö7¨Q�—‘�x Ó# C RÒ(Ð7ˆÐ7Û”S˜“Z¤+Ô-°"°q´&ÜÐ&Ô(Ùðc1ðf 	‡K�K„MÜ	ÐÔð#Ø�[‰[‹]ˆØ
�
‰
ÐeÔhqÐgsÔtØ�z‰zÐhÔktÐjvÓw÷  Añ  Aó  CˆØ
�‰ÐvÐx|Ô}Ø�‰ŒÜ�œ˜D›	�{ (Ð+Ô,ð 	‡J�J„LÜ�i‰i‹k˜EÑ!€GÜ	ˆL˜ ˜Ð%5°h°Z¸zÈ'ÈÐRXÐY\ÐX]Ð
^Õ_øô{ ò 	ÜÐ(¨¨¨B¨q¨cÐ2Ô3Ü�J‰J�qŒMÝûð	ûô. ò "ÜÐ)¨$¨¨r°!°Ð5Ô6Ø!–ûð"ûô ò Ü˜ D 6¨¨A¨3Ð/Ô0Ø˜1‘–ûðüò 8øô ò #Ü�˜a˜SÐ!×"Ñ"ûð#úsh   ÂMÅNÅ&A5N,ÈOÉ?BO Í	M?Í&M:Í:M?Î	N)ÎN$Î$N)Î,	OÎ5OÏOÏ	O?Ï'O:Ï:O?Ú__main__)r   )Úrequestsr   rN   r3   rR   r   ÚosÚgetenvrP   rM   r/   r!   rV   r   ÚHEADERSÚSessionr   ÚheadersÚupdater   r&   rB   ru   Ú__name__© r'   r   ú<module>r€      s§   ð÷ 2× 1× 1Û 	à
ˆ"�)‰)�KÐ!2Ó
3€Ø>€	Ø'€Ø
Ð+Ñ
+€Ø€Ø	€ð QØ&Ø ñ€ð ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ ò$óò
ò,L`ð\ ˆzÒÙ…Fð r'   