Ë
    †É…j!  ã                   óÊ  — 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ej                  «      dkD  r2ej                  d   j                  «       r eej                  d   «      ndZe� ed ee«      z   «       d dlZ ej                   dd«      ZdZdZdZd	d
ddœZ e j,                  «       Zej0                  j3                  e«       d„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)é    Né   z[AutoPg] max_pages=Ú	SEARCH_DBz/root/search.dbu   é�’åŽŸåŒºå…¬ç¤ºå…¬å‘Šzhttp://www.qyq.gov.cnz
2023-06-01z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9)z
User-AgentÚAcceptzAccept-Languagec                 ó
   — g d¢S )N))zajax_type[0]Ú13_xxgk)zajax_type[1]Ú134709)zajax_type[2]Ú13)zajax_type[3]Úxxgk)zajax_type[4]zY-m-d)zajax_type[5]Ú50)zajax_type[6]Ú20)zajax_type[7][0]zis_top DESC)zajax_type[7][1]zdisplayorder DESC)zajax_type[7][2]zinputtime DESC)zajax_type[8]Ú )Úis_dsÚ1© )Úpages    ú#/root/gov_crawler/crawl_qyq_tzgg.pyÚbuild_ajax_datar      s   € òð ó    c                 óx   — t         j                  t        › d| › d�t        | «      d¬«      }|j	                  «       S )Nz/api-ajax_list-ú.htmlé   )ÚdataÚtimeout)ÚsessionÚpostÚBASE_URLr   Újson)r   Úrs     r   Ú
fetch_listr   (   s5   € Ü�‰œ�z °°°eÐ<Ä?ÐSWÓCXÐbdˆÓe€AØ�6‰6‹8€Or   c                 óˆ  — t         j                  t        › d| › d�d¬«      }|j                  j	                  dd¬«      }d}t        j                  d	|«      }|r|j                  d
«      }d}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  ¬«      }t        j                  dd|«      j                  «       }t        |«      dk\  r|j                  «       }||fS d|v r`t        j                  d|«      }	|	rH|	j                  d
«      }
|
j                  d«      s	t        |
z   }
|
j                  d«      d   }d|
› d|› d�}||fS )Nú/xxgk-show-r   r   ©r   zutf-8Úreplace)Úerrorsr   z1<meta name="PubDate" content="(\d{4}-\d{2}-\d{2})r   z8<div[^>]*class="[^"]*xxgk_content[^"]*"[^>]*>(.*?)</div>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>z<[^>]+>é   z<iframez<iframe[^>]*src="([^"]+)"Úhttpú/éÿÿÿÿuA   <div class="article-attachments"><h3>é™„ä»¶</h3><ul><li><a href="z" target="_blank" download>z</a></li></ul></div>)r   Úgetr   ÚcontentÚdecodeÚreÚsearchÚgroupÚDOTALLÚsubÚIÚstripÚlenÚ
startswithÚsplit)Úart_idr   ÚhtmlÚpub_dateÚdmÚcontent_htmlÚmÚhÚ	text_onlyÚifmÚpdf_urlÚfnames               r   Úfetch_detail_with_daterB   ,   s�  € Ü�‰”x�j ¨F¨8°5Ð9À2ˆÓF€AØ�9‰9×Ñ˜G¨IÐÓ6€Dà€HÜ	�‰ÐGÈÓ	N€BÙ	Ø—8‘8˜A“;ˆà€LÜ
�	‰	Ð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ˆÜ—F‘F˜: r¨1Ó-×3Ñ3Ó5ˆ	äˆy‹>˜RÒØŸ7™7›9ˆLð ˜Ð!Ð!ð ˜!‰^ä—)‘)Ð8¸!Ó<ˆCÙØŸ)™) A›,�Ø×)Ñ)¨&Ô1Ü&¨Ñ0�GØŸ™ cÓ*¨2Ñ.�Ø!hÐipÐhqð  rMð  NSð  MTð  Thð   i�à˜Ð!Ð!r   c                 ó¾   — 	 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)Úxidr=   s     r   Úmake_int_idrM   K   sT   € ð$Ü�3‹xˆøÜò $Ü�K‰K˜Ÿ
™
›Ó%×/Ñ/Ó1°#°2Ð6ˆÜ�1�b‹z˜UÑ#Ò#ð$ús   ‚
 �AAÁAc                  ó¼  — t        dt        › d�«       t        d«      } | j                  dt	        | d   «      «      }|dz   dz  }t        d|› d	|› �«       t        j                  t        d
¬«      }|j                  «       }d\  }}}}t        j                  «       }	t        dt        |t        xs |«      dz   «      D �]m  }
	 t        |
«      }|j                  dg «      }|s �nJ|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«      xs t"        › d|› d�}|r|s|dz  }ŒŽ	 t%        |«      \  }}|r|}|s|dz  }t'        |«      }	 |j)                  d|t        ||||||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%�«       �Œp |j1                  «        t        j                  «       |	z
  }t        d&|› d||z   › �«       t        d'«       	 |j                  «       }|j)                  d(t        f«       |j)                  d)t        f«      j3                  «       }|j5                  d*|«       |j1                  «        t        d+t	        |«      › d,�«       |j7                  «        t        d.|d$›d/|› d0|› d!|› �«       y # t        $ r1}t        d|
› d|› �«       t        j                  d«       Y d }~�Œœd }~ww xY w# t        $ r }t        d|› d|› �«       d}d}Y d }~�Œd }~ww xY w# t        $ r!}t        d|› d|› �«       |dz  }Y d }~�ŒÌd }~ww xY w# t        $ r}t        d-|› �«       Y d }~ŒÛd }~ww xY w)1Nz=== z ===r   Útotalr   é   r&   zTotal: z	, Pages: é<   r"   )r   r   r   r   z  [ERROR] List page z: é   Útitler   Ú	inputtimeé
   ÚidÚurlr!   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   z  [DB ERR] z  Page r(   z: +z (-z, >3yz, ncz) [z.0fzs]z
No content: 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) === +z, -)ÚprintÚ	SITE_NAMEr   r*   r4   Úsqlite3ÚconnectÚDB_PATHÚcursorÚtimeÚrangeÚminÚ_MAX_PGÚ	ExceptionÚsleepr3   ÚCUTOFF_DATEr   rB   rM   ÚexecuterF   r#   ÚrowcountÚcommitÚfetchallÚexecutemanyÚclose)Úd1rO   Útotal_pagesÚconnÚcÚinsertedÚskippedÚoldÚ
no_contentÚstartÚpgÚdÚeÚartsÚartrS   r9   r7   rW   r;   Údetail_dateÚint_idÚelapsedÚc2Úrowss                            r   Úmainr   R   s  € Ü	ˆD”�˜4Ð
 Ô!Ü	�A‹€BØ�F‰F�7œC  6¡
›OÓ,€EØ˜2‘: "Ñ$€KÜ	ˆG�E�7˜) K =Ð
1Ô2ä�?‰?œ7¨BÔ/€DØ�‰‹€AØ)3Ñ&€Hˆg�s˜JÜ�I‰I‹K€Eä�A”s˜;¬Ò(>°;Ó?À!ÑCÓDó ,qˆð	Ü˜2“ˆAð
 �u‰u�V˜RÓ ˆÙÚàó 	ˆCØ—W‘W˜W bÓ)Ò/¨R×6Ñ6Ó8ˆEØŸ™ ¨RÓ0Ò6°B¸¸Ð<ˆHÙ˜H¤{Ò2Ø�q‘�ØØ—W‘W˜T 2Ó&ˆFØ—'‘'˜% Ó$ÒM¬8¨*°KÀ¸xÀuÐ(MˆCÙ¡Ø˜1‘�Øð!Ü,BÀ6Ó,JÑ)�˜kñ
 Ø&�ÙØ˜a‘�
Ü  Ó(ˆFðØ—	‘	ð  YØ!¤9¨c°3¸¸xÈÙ<Dœ3˜x×/Ñ/°°BÓ7Ô8È!ðMôNð —:‘: ’> 8¨q¡=¡8Ø ‘l�gùð7	ô@ —)‘)“+ Ñ%ˆÜ�˜�t˜1˜[˜M¨¨X¨J°c¸'¸À%ÈÀuÈDÐQ[ÐP\Ð\_Ð`gÐhkÐ_lÐlnÐoÖpðY,qð\ 	‡K�K„MÜ�i‰i‹k˜EÑ!€GÜ	ˆN˜:˜, a¨°Ñ(8Ð'9Ð
:Ô;Ü	ÐÔð#Ø�[‰[‹]ˆØ
�
‰
ÐeÔhqÐgsÔtØ�z‰zÐhÔktÐjvÓw÷  Añ  Aó  CˆØ
�‰ÐvÐx|Ô}Ø�‰ŒÜ�œ˜D›	�{ (Ð+Ô,ð 	‡J�J„LÜ	ˆL˜ ˜ X¨h¨Z°s¸7¸)À5ÈÈÐ
NÕOøôs ò 	ÜÐ(¨¨¨B¨q¨cÐ2Ô3Ü�J‰J�qŒMÝûð	ûô* ò !ÜÐ)¨&¨°°A°3Ð7Ô8Ø!�Ø –ûð!ûô ò Ü˜ F 8¨2¨a¨SÐ1Ô2Ø˜1‘–ûðûô$ ò #Ü�˜a˜SÐ!×"Ñ"ûð#úsb   ÃL$Å5M!ÆANÉ5BN: Ì$	MÌ-&MÍMÍ!	N
Í*NÎN
Î	N7ÎN2Î2N7Î:	OÏOÏOÚ__main__) Úrequestsr   r[   r-   r_   rH   ÚsysÚ_SYSr4   ÚargvÚisdigitrF   rb   rY   ÚstrÚosÚgetenvr]   rZ   r   re   ÚHEADERSÚSessionr   ÚheadersÚupdater   r   rB   rM   r   Ú__name__r   r   r   ú<module>rŽ      së   ð÷ 2× 1× 1ã Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/ã 	à
ˆ"�)‰)�KÐ!2Ó
3€Ø8€	Ø"€Ø€àWØVØ.ñ0€ð ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ òò ò"ò>$òHPðT ˆzÒÙ…Fð r   