Ë
    ý&˜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d dlmZ  e j                  dd«      Z	ddiZ
dZdZeez   d	z   Zd
Zdd„Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)é    N)ÚBeautifulSoupÚ	SEARCH_DBz/mnt/data/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zhttps://www.kaiping.gov.cnz	/jmkpsstzz/gkmlpt/api/all/%sé   c                 óÐ   — 	 t        j                  | t        d¬«      }||_        |j                  S # t
        $ r+}t        d| ›d|›�t        j                  ¬«       Y d }~y d }~ww xY w)Né   )ÚheadersÚtimeoutz  FETCH ERROR z: ©Úfile)	ÚrequestsÚgetÚHEADERSÚencodingÚtextÚ	ExceptionÚprintÚsysÚstderr)Úurlr   ÚrÚes       ú%/root/gov_crawler/crawl_kpstz_gkml.pyÚfetchr      sO   € ðÜ�L‰L˜¤g°rÔ:ˆØˆŒ
Ø�v‰vˆøÜò Ýª©QÐ/´c·j±jÕAÜûðús   ‚.1 ±	A%º!A Á A%c                 óX   — t        | «      }|sy 	 t        j                  |«      S #  Y y xY w)N)r   ÚjsonÚloads)r   Úhtmls     r   Ú
fetch_jsonr       s/   € Ü�‹:€DÙØðÜ�z‰z˜$ÓÐøðÙús   �% ¥)c                 ób   — dd l }|j                   j                  | «      }|j                  d«      S )Nr   z%Y-%m-%d)ÚdatetimeÚfromtimestampÚstrftime)Útsr    Údts      r   Úparse_tsr%   *   s*   € ÛØ	×	Ñ	×	(Ñ	(¨Ó	,€BØ�;‰;�zÓ"Ð"ó    c                 ó®  — t        | «      }|sddg |fS t        |d«      }|}|j                  d«      }|r|j                  d¬«      }|r|}d}t	        j
                  d|«      }|r!|j                  d«      j                  dd	«      }|j                  d
«      }	d}
g }|	�rŒ|	j                  dd¬«      D ]±  }|d   j                  «       }|j                  d¬«      }t	        j
                  d|t        j                  «      sd|v sŒR|xs |j                  d«      d   }|j                  d«      r|nt        |z   }|j                  ||dœ«       |j                  d|›d|›d�«       Œ³ t        t!        |	«      d«      }|j                  d«      }g }t#        |«      D ]7  \  }}d|z  }|j                  |t!        |«      f«       |j                  |«       Œ9 t!        |«      }t        |d«      }|j                  ddg«      D ]  }|j%                  «        Œ |j                  g d¢«      D ]  }|j'                  «        Œ |j                  d«      D ]$  }|j)                  dd«       |j'                  «        Œ& |j                  d«      D ]$  }|j)                  dd «       |j'                  «        Œ& |j                  d!«      D ]  }|j                  d «       Œ |j                  dd"¬#«      }
t	        j*                  d$d|
«      j                  «       }
|D ]  \  }}|
j                  |d|z   dz   «      }
Œ |
rt-        |
j                  «       «      d%k  r	d&| ›d'|›d(�}
|
|||fS ))NÚ ÚlxmlÚtitleT)Ústripz(\d{4}[-/]\d{2}[-/]\d{2})é   ú/ú-zdiv.article-contentÚa)Úhrefr0   z+\.(docx?|pdf|pptx?|xlsx?|jpg|png|gif)($|\?)z
/download/éÿÿÿÿÚhttp©r   Únameú[z](ú)zhtml.parserÚtablez___TBL_%d___ÚscriptÚstyle)ÚspanÚfontÚbÚstrongÚiÚemÚuÚpr   z

Údivú
ÚbrF)Ú	separatorr+   z\n{3,}é   z<p><a href="z">z</a></p>)r   r   Ú
select_oneÚget_textÚreÚsearchÚgroupÚreplaceÚfind_allr+   Ú
IGNORECASEÚsplitÚ
startswithÚDOMAINÚappendÚreplace_withÚstrÚ	enumerateÚ	decomposeÚunwrapÚinsertÚsubÚlen)r   Útitle_from_listr   ÚsoupÚ
full_titleÚptÚtÚpub_dateÚmÚbodyÚcontent_htmlÚattachmentsÚa_tagÚhÚtxtÚfnameÚ
attach_urlÚtbl_soupÚtablesÚtable_markersr>   ÚtbÚkeyÚ	body_htmlÚ	body_soupÚtagrA   ÚdrD   Útbl_htmls                                 r   Ú
get_detailrt   0   sH  € Ü�‹:€DÙØ�2�r˜?Ð*Ð*ä˜˜vÓ&€Dà €JØ	�‰˜Ó	!€BÙ	Ø�K‰K˜dˆKÓ#ˆÙØˆJà€HÜ
�	‰	Ð.°Ó5€AÙØ—7‘7˜1“:×%Ñ% c¨3Ó/ˆà�?‰?Ð0Ó1€DØ€LØ€KâØ—]‘] 3¨T�]Ó2ò 	EˆEØ�f‘×#Ñ#Ó%ˆAØ—.‘. t�.Ó,ˆCÜ�y‰yÐGÈÌBÏMÉMÔZÐ^jÐnoÒ^oØÒ/˜qŸw™w s›|¨BÑ/�Ø"#§,¡,¨vÔ"6™Q¼FÀQ¹J�
Ø×"Ñ"¨:¸uÑ#EÔFØ×"Ò"²º
Ð#CÕDð	Eô !¤ T£¨MÓ:ˆØ×"Ñ" 7Ó+ˆØˆÜ˜vÓ&ò 	!‰EˆAˆrØ  1Ñ$ˆCØ× Ñ  #¤s¨2£w Ô0Ø�O‰O˜CÕ ð	!ô
 ˜“Mˆ	Ü! )¨]Ó;ˆ	à×%Ñ% x°Ð&9Ó:ò 	ˆCØ�M‰M�Oð	à×%Ñ%Ò&UÓVò 	ˆCØ�J‰J�Lð	à×#Ñ# CÓ(ò 	ˆAØ�H‰H�Q˜ÔØ�H‰H�Jð	ð ×#Ñ# EÓ*ò 	ˆAØ�H‰H�Q˜ÔØ�H‰H�Jð	ð ×$Ñ$ TÓ*ò 	"ˆBØ�O‰O˜DÕ!ð	"ð !×)Ñ)°B¸eÐ)ÓDˆÜ—v‘v˜i¨°Ó>×DÑDÓFˆà*ò 	Q‰MˆC�Ø'×/Ñ/°°V¸hÑ5FÈÑ5OÓP‰Lð	Qñ œ3˜|×1Ñ1Ó3Ó4°rÒ9øÚ7:ºJÐGˆà˜ ;°
Ð:Ð:r&   c                  ó  ‡— dd l } | j                  d¬«      }|j                  ddd¬«       |j                  dd	d
¬«       |j                  dt        dd¬«       |j	                  «       }|j
                  }|j                  }dd l}|j                  t        «      }|j                  d«       |j                  «       }|j                  d|f«       |j                  «       d   }t        d|||fz  t        j                  ¬«       d}	t!        d|j"                  dz   «      D �]z  }
t$        |z  d|
z  z   }t'        |«      }|st        d|
z  t        j                  ¬«       Œ?|j)                  dg «      }|s!t        d|
z  t        j                  ¬«        �n
|j)                  dd«      }t        d|
t+        |«      |fz  t        j                  ¬«       |D �]°  }|j)                  dd«      }|sŒ|j-                  dd«      }|j)                  dd«      }|j)                  dd«      xs |j)                  d d«      }|rt/        |«      nd}|j)                  d!g «      }|j                  d"||f«       |j                  «       rŒ©t1        ||«      \  }}}}|s|r|}|D ]z  }|j)                  dd«      Š|j)                  d#d«      }‰sŒ*‰j-                  dd«      Št3        ˆfd$„|D «       «      rŒQ|j5                  ‰|xs ‰j7                  d%«      d&   d'œ«       Œ| 	 |j                  d(|||d d) ||d d* |d+t9        j:                  |d,¬-«      f«       |	dz  }	t        d.|d d/ |t+        |«      t+        |«      fz  t        j                  ¬«       �Œ³ t?        j@                  d1«       �Œ} |jC                  «        t        d2|	z  t        j                  ¬«       |jE                  «        y # t<        $ r)}t        d0|z  t        j                  ¬«       Y d }~�Œ8d }~ww xY w)3Nr   u    å¼€å¹³å¸‚æ²™å¡˜é•‡ GKMLPT çˆ¬è™«)Údescriptionz--idÚ3555u/   æ �ç›®ID (3555=é€šçŸ¥å…¬å‘Š, 6334=éƒ¨é—¨æ–‡ä»¶))ÚdefaultÚhelpz--nameÚ
kpstz_gkmlu   ç«™ç‚¹å��ç§°z--pagesr   u   çˆ¬å�–é¡µæ•° (é»˜è®¤5))Útyperx   ry   zPRAGMA journal_mode=WALz.SELECT COUNT(*) FROM gov_raw WHERE site_name=?u$   æ �ç›®ID=%s ç«™ç‚¹=%s: å·²æœ‰ %d æ�¡r
   r,   z?page=%d&pageSize=20u     ç¬¬%dé¡µ APIå¤±è´¥Úarticlesu     ç¬¬%dé¡µ æ— æ�¡ç›®Útotalu     ç¬¬%dé¡µ: %d æ�¡ (å…±%d)r   r(   zhttp://zhttps://r*   Údisplay_publish_timeÚdateÚ
attachmentz7SELECT id FROM gov_raw WHERE page_url=? AND site_name=?r4   c              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­w)r   N© )Ú.0r/   Úatt_urls     €r   ú	<genexpr>zmain.<locals>.<genexpr>²   s   øè ø€ ÒH°q˜q ™x¨7Õ2ÑHùs   ƒr-   r1   r3   z˜INSERT INTO gov_raw (site_name, page_url, title, content, publish_date, source_url, status, attachments)
                       VALUES (?,?,?,?,?,?,?,?)iô  rF   ÚsyncedF)Úensure_asciiz     + %s (%s) body:%dB attach:%dé2   u       ! å…¥åº“å¤±è´¥: %sg333333Ó?u   
å®Œæˆ�! æ–°å¢ž %d æ�¡)#ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚidr4   Úsqlite3Úconnectr   ÚexecuteÚcursorÚfetchoner   r   r   ÚrangeÚpagesÚAPI_LISTr   r   rZ   rL   r%   rt   ÚanyrR   rO   r   Údumpsr   ÚtimeÚsleepÚcommitÚclose)r‰   ÚparserÚargsÚcol_idÚ	site_namer�   ÚconnÚcÚexistingÚall_newÚpgÚapi_urlÚdatar|   r}   ÚartÚ
detail_urlr*   r#   r   Úattachment_listÚcontentr`   rd   r]   ÚattÚatt_namer   r„   s                               @r   Úmainr®   u   s×  ø€ ÛØ×$Ñ$Ð1SÐ$ÓT€FØ
×Ñ˜¨Ð5fÐÔgØ
×Ñ˜¨,¸^ÐÔLØ
×Ñ˜	¬°QÐ=UÐÔVØ×ÑÓ€Dà�W‰W€FØ—	‘	€IãØ�?‰?œ9Ó%€DØ‡L�LÐ*Ô+Ø�‰‹€Aà‡I�IÐ>ÀÀÔMØ�z‰z‹|˜A‰€Hä	Ð
0°F¸IÀxÐ3PÑ
PÔWZ×WaÑWaÕbà€GÜ�A�t—z‘z A‘~Ó&ó 6ˆÜ˜VÑ#Ð&<¸rÑ&AÑAˆÜ˜'Ó"ˆÙÜÐ(¨2Ñ-´C·J±JÕ?Øà—8‘8˜J¨Ó+ˆÙÜÐ(¨2Ñ-´C·J±JÕ?Úà—‘˜ !Ó$ˆÜÐ*¨b´#°h³-ÀÐ-GÑGÌcÏjÉjÕYàó %	EˆCØŸ™ ¨Ó+ˆJÙØØ#×+Ñ+¨I°zÓBˆJà—G‘G˜G RÓ(ˆEØ—‘Ð/°Ó3ÒI°s·w±w¸vÀqÓ7IˆBÙ#%”8˜B”<¨2ˆDØ!Ÿg™g l°BÓ7ˆOà�I‰IÐOÐR\Ð^gÐQhÔiØ�z‰zŒ|Øä9CÀJÐPUÓ9VÑ6ˆG�X˜{¨JÙ™HØ�à&ò i�ØŸ'™' %¨Ó,�ØŸ7™7 6¨2Ó.�ÚØ%Ÿo™o¨i¸ÓD�GÜÓH¸KÔHÕHØ#×*Ñ*°7ÀHÒDfÐPW×P]ÑP]Ð^aÓPbÐceÑPfÑ+gÕhðið
EØ—	‘	ð3à 
¨J°t¸Ð,<¸gÀtÈCÈRÀyØ ¬4¯:©:°kÐPUÔ+VðXôð ˜1‘�ÜÐ8¸JÀsÈ¸OÈTÔSVÐW^ÓS_ÔadÐepÓaqÐ;rÑrÔy|÷  zDñ  zD÷  EðG%	EôN 	�
‰
�3Žðm6ðp 	‡K�K„MÜ	Ð
# gÑ
-´C·J±JÕ?ð 	‡J�J…Løô ò EÜÐ.°Ñ2¼¿¹×DÓDûðEús   ÌA1OÏ	PÏ#PÐPÚ__main__)zutf-8)Úosr   rI   r™   r   r   Úbs4r   Úgetenvr   r   rQ   Ú	BASE_PATHr–   Ú	MAX_PAGESr   r   r%   rt   r®   Ú__name__r‚   r&   r   ú<module>r¶      s‰   ðã 	ð÷ )× (× (Ý àˆB�I‰I�kÐ#8Ó9€	ØÐWÐ
X€Ø	%€Ø€	Ø�IÑÐ 4Ñ4€Ø€	óòò#òB;òJSðl ˆzÒÙ…Fð r&   