Ë
    Ôyujž  ã                   ó
  — 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mZ dZ	dZ
dZ ej                  dd«      Z ej                  «        ed	¬
«      z
  j                  d«      ZdZdZdd„Zd„ Zd„ Zd„ Zedk(  r e«        yy)uó   crawl_ahgc_hjsp_gs.py - æ± å·žå¸‚è´µæ± åŒº å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»·å®¡æ‰¹ (145330æ �ç›®)
åˆ—è¡¨: /OpennessTarget/257/145330/page_N.html (td.bt > a + td.cwrq)
è¯¦æƒ…: /OpennessContent/show/{id}.html (meta ArticleTitle/PubDate + div#zoom)
é    N)ÚdatetimeÚ	timedeltazhttps://www.ahgc.gov.cnz'/OpennessTarget/257/145330/page_{}.htmlz/OpennessContent/show/{}.htmlÚ	SEARCH_DBz/root/search.dbiG  )Údaysz%Y-%m-%du   è´µæ± åŒº-çŽ¯è¯„å®¡æ‰¹å…¬ç¤ºé	   c                 ó  — t        |«      D ]o  }	 t        j                  dddd| gdd¬«      }|j                  dk(  r+|j                  r|j                  j                  d	d
¬«      c S t        j                  d«       Œq y#  Y ŒxY w)NÚcurlz-sLz
--max-timeÚ15Té   )Úcapture_outputÚtimeoutr   zutf-8Úreplace)Úerrorsé   Ú )ÚrangeÚ
subprocessÚrunÚ
returncodeÚstdoutÚdecodeÚtimeÚsleep)ÚurlÚretriesÚiÚrs       ú'/root/gov_crawler/crawl_ahgc_hjsp_gs.pyÚfetchr      s   € Ü�7‹^ò ˆð	Ü—‘ ¨¨|¸TÀ3ÐGØ#¨Rô1ˆAà�|‰|˜qÒ  Q§X¢XØ—x‘x—‘ w°y�ÓAÒAô 	�
‰
�1�ðð øð	Ùús   �AA?Á?Bc           
      óö   — t        j                  d| t         j                  «      }t        j                  d| «      }t        |«      D ���cg c]  \  }\  }}||t	        |«      k  r||   ndf‘Œ! c}}}S c c}}}w )NzI<td class="bt"><a href="/OpennessContent/show/(\d+)\.html"[^>]*>(.*?)</a>z<td class="cwrq">([^<]+)</td>r   )ÚreÚfindallÚDOTALLÚ	enumerateÚlen)ÚhtmlÚitemsÚdatesr   Úitem_idÚ_s         r   Úextract_listr+      sh   € Ü�J‰JÐcÐeiÔkm×ktÑktÓu€EÜ�J‰JÐ7¸Ó>€EÜQZÐ[`ÓQa×bÐb¹o¸aÁÀ'È1ˆW !¤c¨%£j¢.�e˜A’h°bÒ9ÔbÐbùÔbs   Á$A4c                 ó¼  — dx}}t        j                  d| «      }|r|j                  d«      j                  «       }t        j                  d| «      }|r|j                  d«      j                  «       }d}t        j                  d| t         j                  «      }|r|j                  d«      j                  «       }t        j
                  d| t         j                  «      D ]v  }|j                  d«      }t        j                  dd|j                  d«      «      j                  «       }|j                  d	«      s	t        |z   }|d
j                  ||«      z  }Œx |||fS )Nr   z/<meta name="ArticleTitle"[^>]*content="([^"]*)"é   z*<meta name="PubDate"[^>]*content="([^"]*)"z#<div[^>]*id="zoom"[^>]*>(.*?)</div>z?<a[^>]*href="([^"]*\.(?:pdf|docx?|xlsx?|zip))"[^>]*>([^<]+)</a>ú<[^>]+>r   Úhttpu4   
<p><a href="{}" target="_blank">[æ–‡ä»¶] {}</a></p>)
r!   ÚsearchÚgroupÚstripr#   ÚfinditerÚsubÚ
startswithÚBASEÚformat)r&   ÚtitleÚpub_dateÚmÚcontentÚfmÚfurlÚfnames           r   Úextract_detailr?   "   s&  € ØÐ€EˆHÜ
�	‰	ÐDÀdÓK€AÙ�!—'‘'˜!“*×"Ñ"Ó$ˆ%Ü
�	‰	Ð?ÀÓF€AÙ�Q—W‘W˜Q“Z×%Ñ%Ó'ˆ(Ø€GÜ
�	‰	Ð8¸$ÄÇ	Á	ÓJ€AÙ�A—G‘G˜A“J×$Ñ$Ó&ˆ'ä�k‰kÐ\Ð^bÔdf×dmÑdmÓnò _ˆØ�x‰x˜‹{ˆÜ—‘�z 2 r§x¡x°£{Ó3×9Ñ9Ó;ˆØ�‰˜vÔ&¬t°d©{¨ØÐJ×QÑQÐRVÐX]Ó^Ñ^‰ð	_ð
 �(˜GÐ#Ð#ó    c                  óh  — d} t        j                  t        d¬«      }t        dt        dz   «      D �]¼  }t
        t        j                  |«      z   }t        |«      }|st        dj                  |«      «        �nvt        |«      }|st        dj                  |«      «        �nLd}|D ]é  \  }}|sŒ	|j                  «       d d }|t        k  rŒ&d	}t        t
        t        j                  |«      z   «      }	|	sŒPt        |	«      \  }
}}|
sŒb|rt        |«      dk\  r|d d }t!        j"                  d
d|«      d d j                  «       }t
        t        j                  |«      z   }d}	 |j%                  |t'        |«      |
||||t(        |f«       | dz  } Œë |j3                  «        t        dj                  |t        |«      | «      «       |rt        d«        nt-        j.                  d«       �Œ¿ |j5                  «        	 t        j                  t        d¬«      }|j%                  dt(        f«       |j3                  «        |j5                  «        t        d«       t        dj                  | «      «       y # t         j*                  $ r€}t        d|› �«       t-        j.                  d«       	 |j%                  |t'        |«      |
||||t(        |f«       | dz  } n$# t0        $ r}t        d|› �«       Y d }~nd }~ww xY wY d }~�Œ_d }~ww xY w# t0        $ r}t        d|› �«       Y d }~ŒÍd }~ww xY w)Nr   é   )r   r-   z  Page {}: emptyz  Page {}: no items, doneTé
   Fr.   r   éÈ   z‹INSERT OR REPLACE INTO gov_raw (id, title, content, publish_date, source_url, page_url, site_name, summary) VALUES (?, ?, ?, ?, ?, ?, ?, ?)z  DB lock, retry: é   z  DB error: z  Page {}: {} items, {} totalz  All before cutoff, stoppingg333333Ó?z‡INSERT OR IGNORE INTO gov_search (rowid, title, site_name, summary) SELECT id, title, site_name, summary FROM gov_raw WHERE site_name=?z
FTS syncedzFTS sync error: z
Done! {} records)Úsqlite3ÚconnectÚDB_PATHr   Ú	MAX_PAGESr6   Ú	LIST_TMPLr7   r   Úprintr+   r2   ÚCUTOFFÚDETAIL_TMPLr?   r%   r!   r4   ÚexecuteÚintÚ	SITE_NAMEÚOperationalErrorr   r   Ú	ExceptionÚcommitÚclose)ÚtotalÚdbÚpager   r&   r'   Ú
all_beforer)   Údate_strÚdetail_htmlr8   r9   r;   ÚsummaryÚ
detail_urlÚsqlÚeÚe2Údb2s                      r   Úmainra   3   só  € Ø€EÜ	�‰œ¨"Ô	-€BÜ�aœ Q™Ó'ó -ˆÜ”Y×%Ñ% dÓ+Ñ+ˆÜ�S‹zˆÙÜÐ$×+Ñ+¨DÓ1Ô2ÚÜ˜TÓ"ˆÙÜÐ-×4Ñ4°TÓ:Ô;ÚØˆ
Ø!&ò 	/ÑˆG�XÙØØ—~‘~Ó'¨¨Ð,ˆHØœ&Ò ØØˆJÜ¤¤{×'9Ñ'9¸'Ó'BÑ BÓCˆKÙØÜ'5°kÓ'BÑ$ˆE�8˜WÙØÙœC ›M¨RÒ/Ø# C R˜=�Ü—f‘f˜Z¨¨WÓ5°d°sÐ;×AÑAÓCˆGÜ¤× 2Ñ 2°7Ó ;Ñ;ˆJð `ˆCð
/Ø—
‘
˜3¤ W£¨u°g¸xÈÐU_ÔajÐlsÐ tÔuØ˜‘
‘ð)	/ð: 	�	‰	ŒÜÐ-×4Ñ4°T¼3¸u»:ÀuÓMÔNÙÜÐ1Ô2ÙÜ�
‰
�3Žð[-ð\ ‡H�H„Jð&Ü�o‰oœg¨rÔ2ˆØ�‰ð  ^ô  ajð  `lô  	mØ�
‰
ŒØ�	‰	ŒÜˆlÔô 
Ð
×
%Ñ
% eÓ
,Õ-øô1 ×+Ñ+ò /ÜÐ*¨1¨#Ð.Ô/Ü—
‘
˜1”ð/Ø—J‘J˜s¤S¨£\°5¸'À8ÈZÐYcÔenÐpwÐ$xÔyØ˜Q‘J‘EøÜ ò /Ü˜L¨¨Ð-×.Ñ.ûð/ÿüð/ûô, ò &ÜÐ   Ð$×%Ñ%ûð&ús[   Å',I:ÈAL É:LÊ#LÊ1,KËLË	K?	Ë'K:	Ë5LË:K?	Ë?LÌLÌ	L1ÌL,Ì,L1Ú__main__)rE   )Ú__doc__ÚsysÚosr!   r   rF   r   r   r   r6   rJ   rM   ÚgetenvrH   ÚnowÚstrftimerL   rP   rI   r   r+   r?   ra   Ú__name__© r@   r   ú<module>rk      s�   ðñ÷ .× -× -ß (à €Ø5€	Ø-€Ø
ˆ"�)‰)�KÐ!2Ó
3€Ø
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€Ø*€	Ø€	ó
òcò
$ò";.ðz ˆzÒÙ…Fð r@   