Ë
    ��vjÏ  ã                   ó˜   — 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ZdZ	dZ
e
› d�ZdZddiZd	Zd
Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u˜   
æ€€è¿œåŽ¿äººæ°‘æ”¿åºœ - å»ºè®¾é¡¹ç›®çŽ¯è¯„å®¡æ‰¹ (crawl_ahhy_hpsp.py)
èšŒåŸ å¸‚ä¿¡æ�¯å…¬å¼€ç³»ç»Ÿ - site/label/8888 API
æ€»è®¡398æ�¡, 27é¡µ(15æ�¡/é¡µ)
é    NÚ	ahhy_hpspzhttps://www.ahhy.gov.cnz/zfxxgk/site/label/8888z/root/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36é   é   c           
      ó^  — t         j                  j                  dddd| t        ddœ«      }t        › d|› �}t         j
                  j                  |t        ¬«      }t         j
                  j                  |d	¬
«      }t        j                  |j                  «       j                  d«      «      S )zFetch one page from label APIÚpublicDynamicInfoListÚ6795621Ú29621Ú18193621Útrue)Ú	labelNameÚsiteIdÚorganIdÚcatIdÚ	pageIndexÚpageSizeÚisJsonú?©Úheadersé   ©Útimeoutúutf-8)ÚurllibÚparseÚ	urlencodeÚ	PAGE_SIZEÚAPI_URLÚrequestÚRequestÚHEADERSÚurlopenÚjsonÚloadsÚreadÚdecode)Ú
page_indexÚparamsÚurlÚreqÚresps        ú$/root/gov_crawler/crawl_ahhy_hpsp.pyÚfetch_list_pager-      s”   € ä�\‰\×#Ñ#Ø,ØØØØÜØñ%ó €Fô ˆI�Q�v�hÐ
€CÜ
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CÜ�>‰>×!Ñ! #¨rÐ!Ó2€DÜ�:‰:�d—i‘i“k×(Ñ(¨Ó1Ó2Ð2ó    c                 ód  — g }| j                  di «      }|j                  dg «      D ]†  }|j                  dd«      j                  «       }|j                  dd«      }|j                  d«      xs |j                  dd«      }|r|dd	 }|sŒd|sŒgt        › d
|› �}|j                  |||dœ«       Œˆ |S )z"Extract articles from API responseÚ
resultListÚdataÚtitleÚ Ú	contentIdÚpublishDateÚ
createDateNé
   z/zfxxgk/public/content/)r2   r)   Údate)ÚgetÚstripÚBASE_URLÚappend)r1   ÚarticlesÚresultÚitemr2   Ú
content_idr8   r)   s           r,   Ú
parse_listrA   $   s¸   € à€HØ�X‰X�l BÓ'€FØ—
‘
˜6 2Ó&ò HˆØ—‘˜ "Ó%×+Ñ+Ó-ˆØ—X‘X˜k¨2Ó.ˆ
Ø�x‰x˜Ó&ÒD¨$¯(©(°<ÀÓ*DˆÙØ˜˜�9ˆDÚ’ZÜ�JÐ5°j°\ÐBˆCØ�O‰O e°CÀÑFÕGðHð €Or.   c                 ó  — 	 t         j                  j                  | t        ¬«      }t         j                  j	                  |d¬«      }|j                  «       j                  dd¬«      }d}t        j                  d|«      }|r|j                  d	«      j                  «       }d}t        j                  d
|t        j                  t        j                  z  «      }|s6t        j                  d|t        j                  t        j                  z  «      }|r|j                  d	«      j                  «       }|sWt        j                  d|t        j                  t        j                  z  «      }|r|j                  d	«      j                  «       }|rpt        j                  dd|t        j                  t        j                  z  ¬«      }t        j                  dd|t        j                  t        j                  z  ¬«      }t        t        j                  dd|«      j                  «       «      }|dk\  r|xs d|xs dfS |xs ddfS # t         j                  j                   $ r}d|j"                  dk(  rdndfcY d}~S d}~wt$        $ r Y yw xY w)zFetch article detail contentr   r   r   r   Úreplace)Úerrorsr3   z/<meta\s+name="ArticleTitle"\s+content="([^"]*)"é   z(id="zoom"[^>]*>([\s\S]*?)</div>\s*</div>zid="zoom"[^>]*>([\s\S]*?)</div>zid="Zoom"[^>]*>([\s\S]*?)</div>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>z<[^>]+>Ni”  )NN)r   r   r    r!   r"   r%   r&   ÚreÚsearchÚgroupr:   ÚDOTALLÚIÚsubÚlenÚerrorÚ	HTTPErrorÚcodeÚ	Exception)	r)   r*   r+   Úhtmlr2   ÚmÚcontentÚtext_lenÚes	            r,   Úfetch_detailrW   4   sÿ  € ð"Ü�n‰n×$Ñ$ S´'Ð$Ó:ˆÜ�~‰~×%Ñ% c°2Ð%Ó6ˆØ�y‰y‹{×!Ñ! '°)Ð!Ó<ˆð ˆÜ�I‰IÐHÈ$ÓOˆÙØ—G‘G˜A“J×$Ñ$Ó&ˆEð ˆÜ�I‰IÐAÀ4ÌÏÉÔUW×UYÑUYÑIYÓZˆÙÜ—	‘	Ð<¸dÄBÇIÁIÔPR×PTÑPTÑDTÓUˆAÙØ—g‘g˜a“j×&Ñ&Ó(ˆGáÜ—	‘	Ð<¸dÄBÇIÁIÔPR×PTÑPTÑDTÓUˆAÙØŸ'™' !›*×*Ñ*Ó,�áÜ—f‘fÐ9¸2¸wÌbÏiÉiÔZ\×Z^ÑZ^ÑN^Ô_ˆGÜ—f‘fÐ7¸¸WÌBÏIÉIÔXZ×X\ÑX\ÑL\Ô]ˆGä”r—v‘v˜j¨"¨gÓ6×<Ñ<Ó>Ó?ˆØ3;¸r²>�’˜˜wš¨$Ð/Ð\ÈÊÐQUÐW[ÐG\Ð\øä�<‰<×!Ñ!ò 5Ø˜QŸV™V sš]‘T°Ð4Õ4ûÜò Ùðús*   ‚H:I È=I ÉJÉ"I<É6JÉ<JÊ
Jc                  ó²  — t        j                  d«       dt        j                  v } t	        d«       g }t        «       }| rdgnt        dt        dz   «      }| rdn	dt        › d�}t	        d|› �«       |D ]‰  }	 t        |«      }t        |«      }d	}|D ]4  }	|	d
   |vsŒ|j                  |	d
   «       |j                  |	«       |dz  }Œ6 t	        d|› dt        |«      › d|› d�d¬«       t        j                  d«       Œ‹ t        |«      }t	        d|› �«       |d	k(  rt	        d«       y t	        d«       t!        j"                  t$        «      }|j'                  «       }|j)                  d«       |j+                  «        d	}d	}d	}t-        |«      D ]Ñ  \  }}	|j)                  d|	d
   f«       |j/                  «       d	   d	kD  r|dz  }Œ8t1        |	d
   «      \  }}|xs |	d   }|r8	 |j)                  d|||	d
   t2        |	d   f«       |j+                  «        |dz  }n|dz  }|dz  d	k(  s||dz
  k(  rt	        d|› d|› d|› d |› d!|› �
d¬«       t        j                  d"«       ŒÓ |j5                  «        t	        d#|› d |› d!|› d$�«       y # t        $ r}
t	        d|› d|
› �d¬«       Y d }
~
�ŒÃd }
~
ww xY w# t        $ r}
t	        d|
› �«       Y d }
~
Œ¯d }
~
ww xY w)%Nz/rootz--incrementalz(=== Phase 1: Collecting article URLs ===rE   ÚINCREMENTALzFULL (z pages)zMode: r   r)   z  Page z: z items, z newT)Úflushz
: ERROR - g333333Ó?z
Total unique articles: zNo articles found. Exiting.z"
=== Phase 2: Fetching details ===z¼CREATE TABLE IF NOT EXISTS gov_raw (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        title TEXT, content TEXT, source_url TEXT UNIQUE,
        site_name TEXT, publish_date TEXT
    )z1SELECT COUNT(*) FROM gov_raw WHERE source_url = ?r2   zjINSERT OR IGNORE INTO gov_raw (title, content, source_url, site_name, publish_date) VALUES (?, ?, ?, ?, ?)r8   z  DB error: é   z  [ú/z] ins=z skip=z emp=gš™™™™™É?z
=== Done: ins=z ===)ÚosÚchdirÚsysÚargvÚprintÚsetÚrangeÚTOTAL_PAGESr-   rA   Úaddr<   rM   rQ   ÚtimeÚsleepÚsqlite3ÚconnectÚTEMP_DBÚcursorÚexecuteÚcommitÚ	enumerateÚfetchonerW   Ú	SITE_NAMEÚclose)ÚincrementalÚall_articlesÚ	seen_urlsÚpages_to_fetchÚmodeÚpager1   r=   ÚnewÚartrV   ÚtotalÚconnÚcÚinsertedÚskippedÚemptyÚiÚdetail_titlerT   Úfinal_titles                        r,   Úmainrƒ   [   s  € Ü‡H�HˆWÔØ!¤S§X¡XÐ-€Kô 
Ð
4Ô5Ø€LÜ“€Iá'�a‘S¬U°1´kÀA±oÓ-F€NÙ'‰=¨v´k°]À'Ð-J€DÜ	ˆF�4�&ˆ/Ôàò ˆð	=Ü" 4Ó(ˆDÜ! $Ó'ˆHØˆCØò �Ø�u‘: YÒ.Ø—M‘M # e¡*Ô-Ø ×'Ñ'¨Ô,Ø˜1‘H‘Cð	ô
 �G˜D˜6 ¤C¨£M ?°(¸3¸%¸tÐDÈDÕQô 	�
‰
�3�ðô �Ó€EÜ	Ð% e WÐ
-Ô.Ø�‚zÜÐ+Ô,Øô 
Ð
/Ô0Ü�?‰?œ7Ó#€DØ�‰‹€AØ‡I�Ið 	ô 
ð
 	‡K�K„Mà€HØ€GØ€Eä˜LÓ)ò ‰ˆˆ3Ø	�	‰	ÐEÈÈEÉ
À}ÔUØ�:‰:‹<˜‰?˜QÒØ�q‰LˆGØä ,¨S°©ZÓ 8Ñˆ�gØ"Ò2 c¨'¡lˆáð*Ø—	‘	ð AØ  '¨3¨u©:´yÀ#ÀfÁ+ÐNôð —‘”Ø˜A‘‘ð �Q‰JˆEàˆr‰6�QŠ;˜!˜u q™yš.Ü�C˜�s˜!˜E˜7 &¨¨
°&¸¸	ÀÀuÀgÐNÐVZÕ[ä�
‰
�3�ð3ð6 	‡J�J„LÜ	Ð˜X˜J f¨W¨I°U¸5¸'ÀÐ
FÕGøôk ò 	=Ü�G˜D˜6 ¨A¨3Ð/°t×<Ó<ûð	=ûôT ò *Ü˜ Q CÐ(×)Ñ)ûð*ús7   Á9$JÂAJÇ&6J5Ê	J2ÊJ-Ê-J2Ê5	KÊ>KËKÚ__main__)Ú__doc__r#   r]   r_   rf   rG   Úurllib.requestr   rh   rp   r;   r   rj   r!   rd   r   r-   rA   rW   rƒ   Ú__name__© r.   r,   ú<module>r‰      su   ðñ÷
 8× 7× 7Ó 7à€	Ø$€ØˆJÐ-Ð
.€Ø
€ØÐWÐ
X€à€Ø€	ò3ò"ò $òNMHð` ˆzÒÙ…Fð r.   