Ë
    ¸¬uj  ã                   ó  — 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dlmZm	Z	  ej                  dd«      ZdZdZedz   Zd	Z ej                   «        e	d
¬«      z
  j#                  d«      ZddiZd„ Zd„ Zd„ Zedk(  r e«        yy)uë   åŒ—å®‰å¸‚äººæ°‘æ”¿åºœ - é€šçŸ¥å…¬å‘Š çˆ¬è™«
   https://www.hljba.gov.cn/bas/c100747/list.shtml
   CMS: ZGå‰�ç«¯æ¡†æž¶, AJAX APIåˆ†é¡µ, ç›´æŽ¥è¿”å›žæ­£æ–‡
   API: /common/search/{channelId}?_isAgg=false&_isJson=true&_pageSize=15&page=N
é    N)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/root/search.dbu   åŒ—å®‰å¸‚-é€šçŸ¥å…¬å‘Šzhttps://www.hljba.gov.cnz//common/search/7ccb692175054df19eb53e5b910162c9é   iG  )Údaysú%Y-%m-%dz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c           	      óÆ  — t         › dt        › d| › �}	 t        j                  |t        d¬«      }|j
                  dk7  rt        d|j
                  › �«       y|j                  «       }|j                  di «      j                  d	g «      }|j                  di «      j                  d
d«      }||fS # t        $ r'}t        d| › dt        |«      d d › �«       Y d }~yd }~ww xY w)Nz%?_isAgg=false&_isJson=true&_pageSize=z3&_template=index&_rangeTimeGte=&_channelName=&page=é   )ÚheadersÚtimeoutéÈ   u     [warn] APIè¿”å›ž )Nr   ÚdataÚresultsÚtotalr   u     [warn] APIè¯·æ±‚å¤±è´¥ z: é<   )
ÚAPI_URLÚ	PAGE_SIZEÚrequestsÚgetÚHEADERSÚstatus_codeÚprintÚjsonÚ	ExceptionÚstr)ÚpageÚurlÚrr   r   r   Úes          ú%/root/gov_crawler/crawl_hljba_tzgg.pyÚ	fetch_apir!      sØ   € ÜˆIÐ:¼9¸+ÐExÐy}Ðx~Ð
€CðÜ�L‰L˜¤g°rÔ:ˆØ�=‰=˜CÒÜÐ'¨¯© Ð7Ô8ØØ�v‰v‹xˆØ—(‘(˜6 2Ó&×*Ñ*¨9°bÓ9ˆØ—‘˜ Ó$×(Ñ(¨°!Ó4ˆØ˜ˆ~ÐøÜò ÜÐ)¨$¨¨r´#°a³&¸¸"°+°Ð?Ô@Üûðús   ”AB0 ÁAB0 Â0	C Â9CÃC c                 óZ  — | j                  dd«      xs | j                  dd«      }|sy|j                  dd«      j                  dd«      j                  dd«      j                  d	d
«      }|j                  dd«      j                  dd«      }t        j                  dd|t        j                  ¬«      }t        j                  dd|«      }g }t        j
                  d|t        j                  «      D ];  }t        j                  dd|«      j                  «       }|sŒ+|j                  |«       Œ= |s*t        j                  dd|«      j                  «       }|r|g}dj                  |«      }| j                  dg «      }|r©dg}|D ]  }|j                  dd«      }	|j                  dd«      xs |j                  dd«      }
|	sŒ>|
sŒA|
j                  d«      r
t        |
z   }nt        dz   |
z   }|j                  d|	› d|› d�«       Œ� t        |«      dkD  r|dj                  |«      z  }|S ) uR   ä»ŽAPIè¿”å›žçš„itemä¸­æ��å�–æ­£æ–‡ï¼ˆä½¿ç”¨contentHtmlä¿�ç•™æ®µè�½ç»“æž„+é™„ä»¶ï¼‰ÚcontentHtmlÚ Úcontentz&ensp;ú z&nbsp;z&lt;ú<z&gt;ú>z&amp;ú&z&quot;ú"z(</?(b|span|font|strong|u|i|em|o:p)[^>]*>)Úflagsz	<br\s*/?>ú
z<p[^>]*>(.*?)</p>z<[^>]+>z

ÚresListu   

**é™„ä»¶ï¼š**ÚfileNameÚfilePathNewÚfilePathú/ú[z](ú)é   )r   ÚreplaceÚreÚsubÚ
IGNORECASEÚfindallÚDOTALLÚstripÚappendÚjoinÚ
startswithÚBASE_URLÚlen)ÚitemÚrawÚpartsÚpÚtxtÚcontent_textÚres_listÚattachment_linesÚrlÚfnameÚfpathÚfurls               r    Úextract_contentrM   #   s   € à
�(‰(�= "Ó
%Ò
@¨¯©°)¸RÓ)@€CÙØØ
�+‰+�h Ó
$×
,Ñ
,¨X°sÓ
;×
CÑ
CÀFÈCÓ
P×
XÑ
XÐY_ÐadÓ
e€CØ
�+‰+�g˜sÓ
#×
+Ñ
+¨H°cÓ
:€Cä
�&‰&Ð<¸bÀ#ÌRÏ]É]Ô
[€CÜ
�&‰&�˜t SÓ
)€Cà€EÜ�Z‰ZÐ,¨c´2·9±9Ó=ò ˆÜ�f‰f�Z  QÓ'×-Ñ-Ó/ˆÚØ�L‰L˜Õðñ Ü�f‰f�Z  SÓ)×/Ñ/Ó1ˆÙØ�EˆEà—;‘;˜uÓ%€Lð �x‰x˜	 2Ó&€HÙØ/Ð0ÐØò 	>ˆBØ—F‘F˜: rÓ*ˆEØ—F‘F˜=¨"Ó-ÒG°·±¸
ÀBÓ1GˆEÚšØ×#Ñ# CÔ(Ü# eÑ+‘Dä# c™>¨EÑ1�DØ ×'Ñ'¨!¨E¨7°"°T°F¸!Ð(<Õ=ð	>ô ÐÓ  1Ò$Ø˜DŸI™IÐ&6Ó7Ñ7ˆLàÐó    c                  ó  — dt         j                  v} | rdnd}t        dt        › d|› dt        › d�«       t        j                  t        «      }|j                  d«       |j                  «       }d	}d	}d	}d	}t        d
«      \  }}	|€t        d«       |j                  «        y |	t        z   d
z
  t        z  }
t        d|	› d|
› �«       t        d
|
d
z   «      D �]y  }|d
kD  rt        |«      \  }}|sŒd	}|D �]  }|j                  d«      xs dd d }| r|r|t        k  r|d
z  }Œ/|j                  dd«      }|j                  d«      s	t         |z   }|j                  dd«      }|j                  d|f«       |j#                  «       d	   d	kD  r|d
z  }Œœt%        |«      }|rt'        |«      dk  rt        d|d d › d�«       |d
z  }ŒÏ|r|n"t)        j*                  «       j-                  d«      }|j                  d|||t        ||df«       |d
z  }|d
z  }�Œ |j/                  «        t        d|› d|
› d|› d|› �«       t1        j2                  d «       �Œ| |j                  «        t        d!t        › d"|› d#|› d$|› d%|› �
«       y )&Nz--fullu   å¢žé‡�u   å…¨é‡�z=== u    === (æ¨¡å¼�: z	, cutoff=r3   zPRAGMA busy_timeout=30000r   r4   u   æ— æ³•èŽ·å�–æ•°æ�®ï¼Œé€€å‡ºu   æ€»æ�¡æ•°: u   , æ€»é¡µæ•°: ÚpublishedTimeStrr$   é
   r   ÚhttpÚtitlez-SELECT COUNT(*) FROM gov_raw WHERE page_url=?é2   u     [warn] æ­£æ–‡è¿‡çŸ­: é(   z...r   zzINSERT INTO gov_raw (page_url, title, content, site_name, publish_date, source_url, category) VALUES (?, ?, ?, ?, ?, ?, ?)u   é€šçŸ¥å…¬å‘Šz  [page r1   z] +z new, total: g333333Ó?u
   
[å®Œæˆ�] u	   : æ–°å¢ž u    æ�¡, æ—§è·³è¿‡ u	   , é‡�å¤� u	   , é”™è¯¯ )ÚsysÚargvr   Ú	SITE_NAMEÚCUTOFFÚsqlite3ÚconnectÚDB_PATHÚexecuteÚcursorr!   Úcloser   Úranger   r>   r?   ÚfetchonerM   r@   r   ÚnowÚstrftimeÚcommitÚtimeÚsleep)ÚINCREMENTALÚmodeÚconnÚcÚ	new_totalÚ	dup_totalÚ	old_totalÚ	err_totalr   Útotal_countÚtotal_pagesr   Ú_Úpage_newrA   Údate_strr   rS   r%   Úpds                       r    Úmainru   M   sŸ  € Ø¤#§(¡(Ð*€KÙ"‰8¨€DÜ	ˆD”�˜>¨$¨¨y¼¸ÀÐ
BÔCä�?‰?œ7Ó#€DØ‡L�LÐ,Ô-Ø�‰‹€AØ€IØ€IØ€IØ€Iä$ Q›<Ñ€Gˆ[Ø€ÜÐ+Ô,Ø�
‰
ŒØØ¤Ñ*¨QÑ.´9Ñ<€KÜ	ˆK˜�} M°+°Ð
?Ô@ä�a˜ q™Ó)ó "ˆØ�!Š8Ü" 4›‰JˆG�QÙØØˆØó 	ˆDØŸ™Ð!3Ó4Ò:¸¸C¸RÐ@ˆHÙ™x¨H´vÒ,=Ø˜Q‘�	ØØ—(‘(˜5 "Ó%ˆCØ—>‘> &Ô)Ü ‘n�Ø—H‘H˜W bÓ)ˆEØ�I‰IÐEÈÀvÔNØ�z‰z‹|˜A‰ Ò"Ø˜Q‘�	ØÜ% dÓ+ˆGÙœc '›l¨RÒ/ÜÐ/°°c°r°
¨|¸3Ð?Ô@Ø˜Q‘�	ØÙ%‘¬8¯<©<«>×+BÑ+BÀ:Ó+NˆBØ�I‰Ið/à�e˜W¤i°°S¸.ÐIôð
 ˜‰MˆHØ˜‰NŠIð3	ð4 	�‰ŒÜ�˜˜˜a ˜}¨C°¨z¸ÀyÀkÐRÔSÜ�
‰
�3ŽðE"ðH 	‡J�J„LÜ	ˆKœ	�{ )¨I¨;Ð6FÀyÀkÐQZÐ[dÐZeÐenÐoxÐnyÐ
zÕ{rN   Ú__main__)Ú__doc__r   r   rZ   ÚosrV   re   r6   r   r   Úgetenvr\   rX   r?   r   r   rb   rc   rY   r   r!   rM   ru   Ú__name__© rN   r    ú<module>r|      s›   ðñ÷
 2× 1× 1Ó 1ß (à
ˆ"�)‰)�KÐ!2Ó
3€Ø$€	Ø%€Ø
ÐFÑ
F€Ø€	Ø
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€ØÐWÐ
X€òò 'òT:|ðz ˆzÒÙ…Fð rN   