Ë
    €ÛµjH  ã                   óø   — 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 ddl	m	Z	 ddl
Z
 e
j                  «        dZdZdZdZd	Zd
ZdZdZe› de› de› de› �ZdZddddœZd„ Zdd„Zd„ Zd„ Zedk(  r e«        yy)uÙ   
ä½›å±±å¸‚ä¸‰æ°´å¤§å¡˜é•‡ - æ”¿åºœä¿¡æ�¯å…¬å¼€ï¼ˆå…¶ä»–æ �ç›®ï¼‰
https://www.ss.gov.cn/fsssdt/gkmlpt/index#2913
CMS: å¹¿ä¸œçœ�ç»Ÿä¸€æ”¿åºœä¿¡æ�¯å…¬å¼€å¹³å�° (gkmlpt)
API: /fsssdt/gkmlpt/api/all/2913?page=N&sid=757177
é    N)ÚBeautifulSoup)Údatetimez/root/search.dbu   ä½›å±±å¸‚ä¸‰æ°´å¤§å¡˜é•‡-å…¶ä»–u   å…¶ä»–u   å¹¿ä¸œzhttps://www.ss.gov.cnÚfsssdtÚ757177ia  ú/z/gkmlpt/api/all/z?page={}&sid=é   ú<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z!application/json, text/plain, */*úzh-CN,zh;q=0.9©z
User-AgentÚAcceptzAccept-Languagec                  ó€   — t        j                  t        d¬«      } | j                  d«       | j                  d«       | S )Né   ©ÚtimeoutzPRAGMA journal_mode=WALzPRAGMA busy_timeout=30000)Úsqlite3ÚconnectÚDB_PATHÚexecute)Úconns    ú&/root/gov_crawler/crawl_datang_gkml.pyÚinit_dbr       s1   € Ü�?‰?œ7¨BÔ/€DØ‡L�LÐ*Ô+Ø‡L�LÐ,Ô-Ø€Kó    c                 óP  — |r|d d n|}t        j                  dd|«      j                  «       }	 | j                  dt        |||j                  «       |||t
        t        f	«      }|j                  dkD  S # t        $ r(}t        d|› �t        j                  ¬«       Y d }~yd }~ww xY w)	NéÈ   z\s+ú z½INSERT OR IGNORE INTO gov_raw
               (site_name, source_url, page_url, title, publish_date, summary, content, category, group_name)
               VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)r   z  DB error: ©ÚfileF)ÚreÚsubÚstripr   Ú	SITE_NAMEÚCATEGORYÚGROUPÚrowcountÚ	ExceptionÚprintÚsysÚstderr)	r   ÚtitleÚpage_urlÚpublish_dateÚcontentÚ	publisherÚsummaryÚcurÚes	            r   Úsave_articler1   '   sž   € Ù&ˆg�d�s‰m¨E€GÜ�f‰f�V˜S 'Ó*×0Ñ0Ó2€GðØ�l‰lð5ô ˜ (¨E¯K©K«M¸<Ø�gœx¬ð0ó	
ˆð �|‰|˜aÑÐøÜò Ü�˜Q˜CÐ ¤s§z¡zÕ2Üûðús   °AA4 Á4	B%Á=B Â B%c                 ó†  — 	 t        j                  | ddddœdd¬«      }d|_        |j                  dk7  ry
t        |j                  d«      }d	}|j                  d«      }|rK|j                  d¬«      }|j                  d«      }|r&|d   j                  «       r|d   j                  «       }|j                  dt        j                  dt        j                  «      ¬«      }|s|d	fS g }|j                  ddgd¬«      D ]u  }	|	j                  dk(  r:|	j!                  d«      rŒ$|	j                  dd¬«      }
|
sŒ:|j#                  |
«       ŒL|	j                  dk(  sŒ\|j#                  t%        |	«      «       Œw |rdj'                  |«      nd}t)        |j                  «       «      dk  rd	}||fS # t        $ r
}Y d	}~y
d	}~ww xY w)z*Fetch detail page, return (title, content)r	   z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8r
   r   r   F)Úheadersr   Úverifyzutf-8N)NNr   zhtml.parserr)   T)r    ú|r   Údivzarticle-content)Úclass_ÚpÚtable)Ú	recursiveÚ z

é   )ÚrequestsÚgetÚencodingr%   Ústatus_coder   ÚtextÚfindÚget_textÚsplitr    r   ÚcompileÚIÚfind_allÚnameÚfind_parentÚappendÚstrÚjoinÚlen)ÚurlÚrr0   Úsoupr)   Ú	title_tagÚtÚpartsÚcontent_divÚelemrA   r,   s               r   Úfetch_detailrV   8   s¯  € ðÜ�L‰L˜ØXØWØ/ñ'
ð ˜eô	%ˆð
 ˆŒ
ð 	‡}�}˜ÒØä˜Ÿ™ Ó/€Dð €EØ—	‘	˜'Ó"€IÙØ×Ñ TÐÓ*ˆà—‘˜“ˆÙ�U˜1‘X—^‘^Ô%Ø˜!‘H—N‘NÓ$ˆEð —)‘)˜E¬"¯*©*Ð5GÌÏÉÓ*N�)ÓO€KÙØ�dˆ{Ðð €EØ×$Ñ$ c¨7 ^¸tÐ$ÓDò $ˆØ�9‰9˜ÒØ×Ñ Ô(ØØ—=‘= ¨4�=Ó0ˆDÚØ—‘˜TÕ"Ø�Y‰Y˜'Ó!Ø�L‰Lœ˜T›Õ#ð$ñ %*ˆf�k‰k˜%Ô ¨r€GÜ
ˆ7�=‰=‹?Ó˜bÒ Øˆà�'ˆ>ÐøôM ò Üûðús   ‚$F- Æ-	G Æ;G c            
      ó°  — t         } t        t        j                  «      dkD  r	 t	        t        j                  d   «      } t        dt        › d| › �t        j                  ¬«       t        «       }d}|j                  «        t        dt        j                  ¬«       t        j                  «       }|j                  j                  t        «       t!        d| dz   «      D �]O  }t"        j%                  |«      }t        d|› d	|› �t        j                  ¬«       	 |j'                  |d
¬«      }|j(                  dk7  r,t        d|j(                  › d�t        j                  ¬«        �nÊ|j+                  «       }|j'                  dg «      }	|	st        dt        j                  ¬«        �nˆt        dt        |	«      › d�t        j                  ¬«       |	D �]2  }
|
j'                  dd«      }|
j'                  dd«      }|
j'                  d|
j'                  dd«      «      }|r$t/        j0                  |«      j3                  d«      nd}|r|sŒwt        d|› d|d d › d�t        j                  ¬«       |j5                  d|f«      }|j7                  «       rŒÀt9        |«      \  }}|xs |}|xs	 d|› d|› d �}t;        |||||«      r.|dz  }|d!k  r$t        d"|› d#|d d$ › �t        j                  ¬«       t=        j>                  d%«       �Œ5 |j                  «        t=        j>                  d«       �ŒR |j                  «        |jA                  «        t        d&|› d'�t        j                  ¬«       t        |«       y # t
        $ r t        j                  d   dv rd} Y �Œ_w xY w# t,        $ r)}t        d|› �t        j                  ¬«       Y d }~ ŒŸd }~ww xY w)(Né   )z--incrementalú[z] max pages: r   r   z  Cleaned old dataz[LIST] Page z: r   r   r   z  HTTP z
, stoppingz  API error: Úarticlesz  No articles, stoppingz  Found z	 articlesr)   r;   rN   Úcreate_timeÚdatez%Y-%m-%dz  [z] é(   z...z)SELECT id FROM gov_raw WHERE page_url = ?z](ú)é   z  + r   é2   g333333Ó?z
Done: z new articles inserted)!Ú	MAX_PAGESrM   r'   ÚargvÚintÚ
ValueErrorr&   r!   r(   r   Úcommitr=   ÚSessionr3   ÚupdateÚHEADERSÚrangeÚAPI_URLÚformatr>   r@   Újsonr%   r   ÚfromtimestampÚstrftimer   ÚfetchonerV   r1   ÚtimeÚsleepÚclose)Ú	max_pagesr   Ú	total_newÚsessionÚpageÚapi_urlrO   Údatar0   rZ   Úar)   Úarticle_urlÚtsÚdate_strr/   Ú	det_titleÚdet_contentÚfinal_titleÚfinal_contents                       r   Úmainr�   j   s6  € Ü€IÜ
Œ3�8‰8ƒ}�qÒð	ÜœCŸH™H Q™KÓ(ˆIô
 
ˆAŒiˆ[˜ i [Ð
1¼¿
¹
ÕCÜ‹9€DØ€Ið 	‡K�K„MÜ	Ð¤c§j¡jÕ1ä×ÑÓ €GØ‡O�O×Ñœ7Ô#ä�a˜ Q™Ó'ó 1ˆÜ—.‘. Ó&ˆÜ�˜T˜F " W IÐ.´S·Z±ZÕ@ð	Ø—‘˜G¨R�Ó0ˆAØ�}‰} Ò#Ü˜ §¡˜¨jÐ9ÄÇ
Á
ÕKÚØ—6‘6“8ˆDð
 —8‘8˜J¨Ó+ˆÙÜÐ+´3·:±:Õ>Úä�œ˜X›˜ yÐ1¼¿
¹
ÕCàó 	ˆAØ—E‘E˜' 2Ó&ˆEØŸ%™%  rÓ*ˆKØ—‘�} a§e¡e¨F°AÓ&6Ó7ˆBÙJL”x×-Ñ-¨bÓ1×:Ñ:¸:ÔFÐRTˆHá¡Øä�C˜�z  E¨#¨2 J <¨sÐ3¼#¿*¹*ÕEð —,‘,ÐJÈ[ÈNÓ[ˆCØ�|‰|Œ~Øä%1°+Ó%>Ñ"ˆI�{Ø#Ò, uˆKØ'ÒL¨Q¨{¨m¸2¸k¸]È!Ð+LˆMä˜D +¨{¸HÀmÔTØ˜Q‘�	Ø ’>Ü˜D  
¨!¨K¸¸Ð,<Ð+=Ð>ÄSÇZÁZÕPä�J‰J�sŽOð3	ð6 	�‰ŒÜ�
‰
�1Žðc1ðf 	‡K�K„MØ‡J�J„LÜ	ˆH�Y�KÐ5Ð
6¼S¿Z¹ZÕHÜ	ˆ)ÕøôM ò 	Ü�x‰x˜‰{Ð0Ñ0Ø�	úð	ûô4 ò 	Ü�M ! Ð%¬C¯J©JÕ7Ýûð	ús0   ¤M< ÄAN#Å'N#Í< N ÎN Î#	OÎ,OÏOÚ__main__)r;   )Ú__doc__r'   r   rl   rp   r=   r   Úbs4r   r   Úurllib3Údisable_warningsr   r!   r"   r#   ÚBASEÚSITE_PREFIXÚSIDÚ	COLUMN_IDrj   ra   rh   r   r1   rV   r�   Ú__name__© r   r   ú<module>r�      s´   ðñ÷ .× -× -Ý Ý Û Ø €× Ñ Ô à
€Ø-€	Ø€Ø€Ø€Ø€Ø€Ø€	ØˆF�!�K�=Ð 0°°¸?È3È%Ð
P€Ø€	ð QØ1Ø'ñ€òóò"/òdKð\ ˆzÒÙ…Fð r   