Ë
    †É…jg  ã                   óÀ  — 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mZ d dlZ	 e
e	j                  «      dkD  r2e	j                  d   j                  «       r ee	j                  d   «      ndZe� ed ee«      z   «        e j"                  dd«      ZdZdZd	Zd
ZddiZ ej0                  ed¬«      Zej5                  d«       d„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)é    N)ÚurlopenÚRequesté   z[AutoPg] max_pages=Ú	SEARCH_DBz/root/search.dbzhttps://www.qqhrlsq.gov.cnu%   é½�é½�å“ˆå°”å¸‚é¾™æ²™åŒº-çŽ¯å¢ƒä¿�æŠ¤Ú 7263f408df684117b349c7a880d4b8d7é
   z
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36é<   ©ÚtimeoutzPRAGMA busy_timeout=5000c                 ó¸   — t         › dt        › d| › dt        › d�}t        |t        ¬«      }t        |d¬«      }t        j                  |j                  «       «      S )Nz/search/z?page=z&_pageSize=z&_isJson=true©Úheadersé   r
   )	ÚBASE_URLÚ
CHANNEL_IDÚ	PAGE_SIZEr   ÚHEADERSr   ÚjsonÚloadsÚread)ÚpageÚurlÚreqÚresps       ú"/root/gov_crawler/crawl_qqhrlsq.pyÚ	fetch_apir       sM   € ÜˆJ�hœz˜l¨&°°°kÄ)ÀÈMÐ
Z€CÜ
�#œwÔ
'€CÜ�3 Ô#€DÜ�:‰:�d—i‘i“kÓ"Ð"ó    c                 ó¨  — t        | t        ¬«      }t        |d¬«      }|j                  «       j	                  d«      }t        j                  d|t
        j                  «      }|rë|j                  d«      }d}d}t        |«      D ]œ  \  }}	|	dk(  sŒ|j                  d	|«      }
|
d
k(  r nz||dz   |
 j                  «       }|j                  «       d   }|j                  d«      r|dz  }|dk(  r2|
dz   } n/|j                  d«      s|dvr|j                  d«      s|dz  }|
}Œž |dkD  r|d |dz
   j                  «       n|j                  «       }nd}t        j                  dd|t
        j                  t
        j                   z  ¬«      }t        j                  dd|t
        j                  t
        j                   z  ¬«      }|j                  «       }|S )Nr   r   r
   zutf-8z5<div[^>]*class=[\"\']article-content[\"\']?[^>]*>(.*)r   r   ú<ú>éÿÿÿÿú/z!--)ÚbrÚhrÚimgÚinputÚmetaÚlinkz!DOCTYPEÚ z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>)r   r   r   r   ÚdecodeÚreÚsearchÚDOTALLÚgroupÚ	enumerateÚfindÚstripÚsplitÚ
startswithÚendswithÚsubÚI)r   r   r   ÚhtmlÚcÚrestÚdepthÚposÚiÚchÚtag_endÚtagÚtag_nameÚcontents                 r   Úfetch_detailrC   '   s¸  € Ü
�#œwÔ
'€CÜ�3 Ô#€DØ�9‰9‹;×Ñ˜gÓ&€DÜ
�	‰	ÐJÈDÔRT×R[ÑR[Ó\€AÙà�w‰w�q‹zˆØˆØˆÜ˜t“_ò 	‰EˆAˆrØ�S‹yØŸ)™) C¨Ó+�Ø˜b’=ÙØ˜1˜Q™3˜wÐ'×-Ñ-Ó/�ØŸ9™9›; q™>�Ø—>‘> #Ô&Ø˜Q‘J�EØ ’zØ%¨™k˜ÙØŸ™¨Ô.°8ÐC{Ñ3{ð  EH÷  EQñ  EQð  RUô  EVØ˜Q‘J�EØ‘ð	ð +.°ª'�$�v˜˜A™�,×$Ñ$Ô&°t·z±z³|‰àˆÜ�f‰fÐ1°2°wÄbÇiÁiÔRT×RVÑRVÑFVÔW€GÜ�f‰fÐ/°°WÄBÇIÁIÔPR×PTÑPTÑDTÔU€GØ�m‰m‹o€GØ€Nr   c           	      óx   — | sy| j                  «       } | syt        j                  d| |xs d|||t        f«       y)NFzxINSERT OR REPLACE INTO gov_raw (title, content, publish_date, page_url, source_url, site_name) VALUES (?, ?, ?, ?, ?, ?)r)   T)r2   ÚconnÚexecuteÚ	SITE_NAME)ÚtitlerB   Úpub_dater   s       r   ÚsaverJ   I   sD   € ÙØØ�K‰K‹M€EÙØÜ‡L�Lð 	CØ	�’˜2˜x¨¨c´9Ð=ôð r   c            	      ó(  — t        j                   «       } d}d}t        d«       t        d«      }|j                  di «      j                  dd«      }|t        z   dz
  t        z  }t        d|› d|› d�«       t        dt        |t        xs |«      dz   «      D �]  }|dk(  r|}n2t        d	|› d
|› d�«       t        |«      }t        j                  d«       |j                  di «      j                  dg «      }|D ]‰  }	|	j                  dd«      }
|	j                  dd«      }|	j                  dd«      }|	j                  dd«      }|dz  }|sŒSd}	 t        |«      }t        j                  d«       t        |
|||«      sŒ…|dz  }Œ‹ t        j                  «        t        d|› d
|› d�«       �Œ t        j                   «       | z
  }t        d|› d
|› d|d›d�«       t        j                  «        y # t        $ r}t        d|› �«       Y d }~Œ�d }~ww xY w)Nr   z [qqhrlsq] Fetching API page 1...r   ÚdataÚtotalz[qqhrlsq] Total: z articles, z pagesz[qqhrlsq] Fetching page r"   z...g333333Ã?ÚresultsrH   r)   rB   ÚpublishedTimeStrr   z  [warn] Detail fetch failed: z[qqhrlsq] Progress: z savedz[qqhrlsq] Done: z
 saved in z.1fÚs)ÚtimeÚprintr   Úgetr   ÚrangeÚminÚ_MAX_PGÚsleeprC   Ú	ExceptionrJ   rE   ÚcommitÚclose)ÚstartÚtotal_savedÚtotal_articlesÚrawrM   Útotal_pagesr   Úraw_pagerN   ÚartrH   Úapi_contentrI   Úarticle_urlrB   ÚeÚelapseds                    r   Úmainrf   V   s  € Ü�I‰I‹K€EØ€KØ€Nä	Ð,Ô.Ü
�A‹,€CØ�G‰G�F˜BÓ×#Ñ# G¨QÓ/€EØœ9Ñ$ qÑ(¬YÑ6€KÜ	Ð˜e˜W K°¨}¸FÐ
CÔDä�aœ˜[¬'Ò*@°[ÓAÀ!ÑCÓDó  BˆØ�1Š9Ø‰HäÐ,¨T¨F°!°K°=ÀÐDÔEÜ  “ˆHÜ�J‰J�tÔà—,‘,˜v rÓ*×.Ñ.¨y¸"Ó=ˆØò 	!ˆCØ—G‘G˜G RÓ(ˆEØŸ'™' )¨RÓ0ˆKØ—w‘wÐ1°2Ó6ˆHØŸ'™' %¨Ó,ˆKà˜aÑˆNáØð ˆGð<Ü& {Ó3�Ü—
‘
˜4Ô ô �E˜7 H¨kÕ:Ø˜qÑ ‘ð)	!ô, 	�‰ŒÜÐ$ [ M°°5°'¸Ð@ÖAðA BôD �i‰i‹k˜EÑ!€GÜ	Ð˜[˜M¨¨>Ð*:¸*ÀWÈSÀMÐQRÐ
SÔTÜ‡J�J…Løô ò <ÜÐ6°q°cÐ:×;Ñ;ûð<ús   Å G0Ç0	HÇ9HÈHÚ__main__) Úosr   ÚsysrQ   Úsqlite3r,   Úurllib.requestr   r   Ú_SYSÚlenÚargvÚisdigitÚintrV   rR   ÚstrÚgetenvÚDB_PATHr   rG   r   r   r   ÚconnectrE   rF   r   rC   rJ   rf   Ú__name__© r   r   ú<module>rw      sï   ðã 	ð÷ $× #Ó #ß +ã Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/à
ˆ"�)‰)�KÐ!2Ó
3€Ø'€Ø3€	Ø/€
Ø€	àð  Dð€ð €w‡��w¨Ô+€Ø ‡�Ð'Ô (ò#òòD
ò/ðd ˆzÒÙ…Fð r   