Ë
    ¸¬ujM  ã                   óè  — d Z ddlZddlZddlZddlZddlmZ ddlZddlZ	ddl
Z ej                  «       Zej                  dedd¬«       ej!                  «       \  ZZej&                  dkD  rej&                  ndZer ede› �«        ej,                  d«        ej.                  d	d
«      ZdZdZe› d�ZddddddddœZdZdZeez   dz
  ez  Zde› d�dœZ d„ Z!d„ Z"d„ Z#d„ Z$d „ Z%e&d!k(  r e%«        yy)"uu   åŒ—ä»‘åŒº-å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»· çˆ¬è™«


JPAAS API: /api-gateway/jpaas-publish-server/front/page/build/unit
é    N)ÚBeautifulSoupz--pagesu   é™�åˆ¶é¡µæ•°)ÚtypeÚdefaultÚhelpz[AutoPg] max_pages=ÚignoreÚ	SEARCH_DBz/root/search.dbu(   åŒ—ä»‘åŒº-å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»·zhttps://www.bl.gov.cnz7/api-gateway/jpaas-publish-server/front/page/build/unitÚbulidstaticÚ3499ÚiIEzq5wa84hjU6xuCoM3qÚcolumnu   æ”¿åŠ¡å…¬å¼€ä¿¡æ�¯åˆ—è¡¨ÚnullÚ
1229505487)Ú	parseTypeÚwebIdÚtplSetIdÚpageTypeÚtagIdÚeditTypeÚpageIdi—  é   é   z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z/col/col1229505487/index.html)z
User-AgentÚRefererc                 ó†  — i t         ¥}t        j                  | t        dœd¬«      |d<   	 t	        j
                  t        |t        dd¬«      }d|_        |j                  «       }|j                  d«      r)|j                  d	i «      j                  d
«      r|d	   d
   S y# t        $ r}t        d|› �«       Y d}~yd}~ww xY w)u"   è°ƒç”¨JPAAS APIèŽ·å�–åˆ—è¡¨é¡µHTML)ÚpageNoÚpageSizeF)Úensure_asciiÚ	paramJsoné   )ÚparamsÚheadersÚtimeoutÚverifyúutf-8ÚsuccessÚdataÚhtmlNu     â�Œ APIå¤±è´¥: )Ú
API_PARAMSÚjsonÚdumpsÚ	PAGE_SIZEÚrequestsÚgetÚAPI_URLÚHEADERSÚencodingÚ	ExceptionÚprint)Úpage_nor   Úrr%   Úes        ú!/root/gov_crawler/crawl_beilun.pyÚ	fetch_apir6   0   s­   € à”
ˆ^€FÜŸ*™*°ÄYÑ%OÐ^cÔd€Fˆ;Ñð	Ü�L‰Lœ¨¼È"ÐUZÔ[ˆØˆŒ
Ø�v‰v‹xˆØ�8‰8�IÔ 4§8¡8¨F°BÓ#7×#;Ñ#;¸FÔ#CØ˜‘< Ñ'Ð'ØøÜò ÜÐ! ! Ð%Ô&Üûðús   «A2B Â	C Â(B;Â;C c                 óÄ   — 	 | j                  d«      s	t        | z   } t        j                  | t        dd¬«      }d|_        |j                  S # t        $ r
}Y d}~yd}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µÚhttpr   F)r    r!   r"   r#   N)Ú
startswithÚBASE_URLr+   r,   r.   r/   Útextr0   )Úurlr3   r4   s      r5   Úfetch_detailr=   @   sS   € ðØ�~‰~˜fÔ%Ü˜S‘.ˆCÜ�L‰L˜¤g°rÀ%ÔHˆØˆŒ
Ø�v‰vˆøÜò Üûðús   ‚A	A Á	AÁAc                 ó¼  — g }t        | d«      }|j                  d«      D ]¹  }|j                  d«      }|sŒ|j                  dd«      }|j                  dd«      xs |j	                  d¬«      }|r|sŒT|j                  d	«      r	t        |z   n|}|j                  d
«      }|r!|j	                  d¬«      j                  d«      nd}	|j                  |||	f«       Œ» |S )u   ä»ŽAPIè¿”å›žçš„HTMLè§£æž�åˆ—è¡¨úhtml.parserÚliÚaÚhrefÚ ÚtitleT)Ústripú/Úspanz[])	r   Úfind_allÚfindr,   Úget_textr9   r:   rE   Úappend)
r&   ÚitemsÚsoupr@   rA   rB   rD   Ú
detail_urlrG   Údate_strs
             r5   Úparse_list_from_htmlrP   L   sÒ   € à€EÜ˜˜}Ó-€Dà�m‰m˜DÓ!ò 4ˆØ�G‰G�C‹LˆÙØØ�u‰u�V˜RÓ ˆØ—‘�g˜rÓ"Ò< a§j¡j°t jÓ&<ˆÙ™5ØØ(,¯©¸Ô(<”X ’_À$ˆ
à�w‰w�v‹ˆÙ<@�4—=‘= t�=Ó,×2Ñ2°4Ô8ÀbˆØ�‰�e˜Z¨Ð2Õ3ð4ð €Ló    c                 ór  — t        | d«      }d}|j                  dddi¬«      }|r|j                  d«      r|d   }d}|j                  dddi¬«      }|r=|j                  d«      r,t        j                  d	|d   «      }|r|j                  d
«      }d}|j                  dd¬«      }|rt        |«      }|||fS )u   è§£æž�è¯¦æƒ…é¡µr?   rC   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentÚPubDatez(\d{4}-\d{2}-\d{2})r   ÚdivÚzoom)Úid)r   rI   r,   ÚreÚsearchÚgroupÚstr)	r&   rM   rD   rS   Úpublish_dateÚ	meta_dateÚmrW   Úzoom_divs	            r5   Úparse_detailrd   a   sÇ   € ä˜˜}Ó-€Dð €EØ�9‰9�V F¨NÐ#;ˆ9Ó<€DÙ�—‘˜Ô#Ø�Y‘ˆð €LØ—	‘	˜&¨°Ð(;�	Ó<€IÙ�Y—]‘] 9Ô-Ü�I‰IÐ,¨i¸	Ñ.BÓCˆÙØŸ7™7 1›:ˆLð €GØ�y‰y˜ 6ˆyÓ*€HÙÜ�h“-ˆà�'˜<Ð'Ð'rQ   c                  ó>  — d } 	 dd l }|j                  t        «      } | j                  «       }|j	                  d«       d}d}t        dt        t        t        xs t        «      dz   «      D �]†  }t        |«      }|st        d|› dt        › d�«       Œ(t        |«      }|st        d|› dt        › d�«        �n<t        d|› dt        › dt        |«      › d	�«       t        |d«      D �]  \  }\  }	}
}|j	                  d
|
f«       |j                  «       r|dz  }Œ4t        |
«      }|s"t        d|› dt        |«      › d|	d d › d�«       Œct!        |«      \  }}}|s|}	 |j	                  d|	||
t"        |xs df«       | j%                  «        |dz  }|rt        |«      nd}|dk  rdnd}|dz  dk(  rt        d|› d|› d�«       |dk(  r&t        d|› dt        |«      › d|	d d › d|› d|› �
«       �Œ
 �Œ‰ t        d|› d|› �«       |j	                  dt"        f«       |j                  «       d   }t        d|› d �«       | r| j)                  «        y y # t&        $ r(}t        d|› dt        |«      › d|› �«       Y d }~�Œ˜d }~ww xY w# | r| j)                  «        w w xY w)!Nr   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
        )r   u   ç¬¬rF   u   é¡µ: APIæ— æ•°æ�®u   é¡µ: æ— æ•°æ�®ï¼Œç»“æ�Ÿåˆ†é¡µu   é¡µ: u   æ�¡z+SELECT id FROM gov_raw WHERE source_url = ?z  [u   ] â�Œ è¯¦æƒ…å¤±è´¥: r   z...zjINSERT OR IGNORE INTO gov_raw (title, content, source_url, site_name, publish_date) VALUES (?, ?, ?, ?, ?)rC   éÈ   u    âš ï¸� å†…å®¹è¿‡çŸ­é2   z  [pageu   ] å·²å…¥åº“ u    æ�¡...u   ] âœ… é#   z... (ú)u   ] â�Œ å…¥åº“å¤±è´¥: u   
çˆ¬å�–å®Œæˆ�ï¼�æ–°å¢ž: u   , è·³è¿‡(å·²å­˜åœ¨): z0SELECT COUNT(*) FROM gov_raw WHERE site_name = ?u     å…± u    æ�¡)Úsqlite3Úconnectr   ÚcursorÚexecuteÚrangeÚminÚTOTAL_PAGESÚ_MAX_PGr6   r1   rP   ÚlenÚ	enumerateÚfetchoner=   rd   Ú	SITE_NAMEÚcommitr0   Úclose)Úconnrj   ÚcÚ	total_newÚtotal_skippedÚpager&   rL   ÚirD   rN   Údate_from_listÚdetail_htmlÚ_rW   r`   Úcontent_lenÚstatusr4   Útotals                       r5   Úcrawlr„   |   sß  € Ø€DðDÛØ�‰œyÓ)ˆØ�K‰K‹MˆØ	�	‰	ð ô 	ð ˆ	Øˆä˜!œS¤¬gÒ.D¼ÓEÀaÑGÓHó +	IˆDÜ˜T“?ˆDÙÜ˜˜D˜6 ¤; -Ð/@ÐAÔBØä(¨Ó.ˆEÙÜ˜˜D˜6 ¤; -Ð/LÐMÔNÚä�C˜�v˜Qœ{˜m¨5´°U³°¸CÐ@ÔAä:CÀEÈ1Ó:Mó IÑ6�Ñ6�E˜: ~Ø—	‘	ÐGÈ*ÈÔWØ—:‘:”<Ø! QÑ&�MØä*¨:Ó6�Ù"Ü˜C ˜s !¤C¨£J <Ð/CÀEÈ#È2ÀJÀ<ÈsÐSÔTØä+7¸Ó+DÑ(��7˜LÙ#Ø#1�LðIØ—I‘Ið EØ ¨´YÀÒ@RÐPRÐSôð —K‘K”MØ ‘N�IÙ29¤# g¤,¸q�KØ7BÀSÒ7HÑ3Èb�FØ  2‘~¨Ò*Ü ¨ v¨\¸)¸ÀGÐLÔMà˜A’vÜ  A 3 a¬¨E«
 |°6¸%ÀÀ¸*¸ÀUÈ<È.ÐXYÐZ`ÐYaÐbÔcùò9Ið+	IôZ 	Ð)¨)¨Ð4IÈ-ÈÐYÔZØ	�	‰	ÐDÄyÀlÔSØ—
‘
“˜Q‘ˆÜ��u�g˜TÐ"Ô#ñ Ø�J‰J�Lð øô !ò IÜ˜C ˜s !¤C¨£J <Ð/CÀAÀ3ÐG×HÒHûðIûñ Ø�J‰J�Lð ús8   „EJ ÅBIÇ/AJ É	JÉI?É9J É?JÊJ ÊJÚ__main__)'Ú__doc__r+   r\   Úosr(   Úbs4r   ÚwarningsÚsysÚ_SYSÚargparseÚ_APÚArgumentParserÚ
_AP_PARSERÚadd_argumentÚintÚparse_known_argsÚ_AP_ARGSr€   Úpagesrq   r1   ÚfilterwarningsÚgetenvr   ru   r:   r-   r'   ÚTOTAL_COUNTr*   rp   r.   r6   r=   rP   rd   r„   Ú__name__© rQ   r5   ú<module>rš      sC  ðñó
 Û 	Û 	Û Ý Û Û ã ØˆS×ÑÓ!€
Ø 
× Ñ ˜	¨°Q¸^Ð Ô LØ×)Ñ)Ó+�€ˆ!Ø$ŸN™N¨QÒ.ˆ(�.Š.°D€Ù
Ù	Ð ˜yÐ
)Ô*à €× Ñ ˜Ô !àˆB�I‰I�kÐ#4Ó5€	Ø6€	Ø"€ØˆJÐMÐ
N€àØØ'ØØ'ØØñ€
ð €Ø€	Ø˜YÑ&¨Ñ*¨yÑ8€ð QØ�Ð8Ð9ñ€òò 	òò*(ò6FðR ˆzÒÙ	…Gð rQ   