Ë
    ¸¬ujq-  ã                   óÀ  — 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mZ ddl	Z	 e	j                  d«       ddlmZmZ ddlZ ej                  dd«      ZdZd	Zd
ZdZdZ ej*                  «        ed¬«      z
  j-                  d«      ZddiZd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zedk(  rœdZ ejB                  dd Z"dZ#e# e$e"«      k  rue"e#   Z%e%jM                  d«      r	  e'e%jQ                  dd«      d   «      Z n1e%dk(  r#e#dz    e$e"«      k  r	  e'e"e#dz      «      Z e#dz  Z#n		  e'e%«      Z e#dz  Z#e# e$e"«      k  rŒu ee «       yy# e)$ r Y Œ"w xY w# e)$ r Y Œ<w xY w# e)$ r Y Œ8w xY w)u`   
å‡¯é‡Œå¸‚-é€šçŸ¥å…¬å‘Š çˆ¬è™« (BeautifulSoupç‰ˆ)
ç«™ç‚¹: www.kaili.gov.cn
æ �ç›®: é€šçŸ¥å…¬å‘Š
é    N)ÚBeautifulSoupÚignore)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/mnt/data/search.dbu   å‡¯é‡Œ-é€šçŸ¥å…¬å‘Šzcrawl_kaili_tzgg.pyu   è´µå·žzwww.kaili.gov.cnz
/xwzx/tzggiG  )Údaysz%Y-%m-%dz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 ó  — | j                  dd«      j                  dd«      } | j                  dd«      j                  dd«      } t        j                  dd| «      } t        j                  dd| «      } | j                  «       S )u:   strip &middot;&nbsp; å®žä½“å‰�ç¼€ å’Œçœ�ç•¥å�·æˆªæ–­å�Žç¼€z&middot;Ú z&nbsp;u   â€‹u   ï»¿u   ^[\s\xa0Â·\u00b7]+z\s*\.{3,}\s*$)ÚreplaceÚre_modÚsubÚstrip)Útitles    ú%/root/gov_crawler/crawl_kaili_tzgg.pyÚclean_titler      sn   € à�M‰M˜* bÓ)×1Ñ1°(¸BÓ?€EØ�M‰M˜( BÓ'×/Ñ/°¸"Ó=€EÜ�J‰JÐ,¨b°%Ó8€EÜ�J‰JÐ'¨¨UÓ3€EØ�;‰;‹=Ðó    c           	      ón  — | dk(  rdt         › t        › d�}ndt         › t        › d| dz
  › d�}t        d«      D �]Æ  }	 t        j                  |t
        d¬«      }|j                  d	k(  �r–d
|_        t        |j                  d«      }g }|j                  dd¬«      }|sg dfc S |j                  d«      D �]  }|j                  d«      }|sŒ|j	                  dd«      j                  «       }	|j                  d¬«      }
|j                  d«      }|r|j                  d¬«      nd}|	j                  d«      sm|	j                  d«      rd|	› �}	nV|	j                  d«      rdt         › |	› �}	n9|	j                  d«      rdt         › t        › d|	dd › �}	ndt         › t        › d|	› �}	|j                  |	|
|dœ«       �Œ t!        j"                  d|j                  «      }|rt%        |j'                  d«      «      nd }||fc S �ŒÉ g dfS # t(        $ r%}|dk  rt+        j,                  d«       Y d}~�Œ÷d}~ww xY w)!u   èŽ·å�–åˆ—è¡¨é¡µé   úhttps://z/index.htmlz/index_z.htmlé   é   ©ÚheadersÚtimeoutéÈ   úutf-8úhtml.parserÚulÚul_1©Úclass_r   ÚliÚaÚhrefr
   T©r   ÚspanÚhttpú//úhttps:ú/z./é   N)Úurlr   ÚdatezcreatePageHTML\((\d+)é]   )ÚDOMAINÚ	BASE_PATHÚrangeÚrequestsÚgetÚHEADERSÚstatus_codeÚencodingr   ÚtextÚfindÚfind_allr   Úget_textÚ
startswithÚappendr   ÚsearchÚintÚgroupÚ	ExceptionÚtimeÚsleep)Úpager,   ÚretryÚrÚsoupÚitemsr   r"   r#   r$   r   r&   r-   ÚpmÚtotal_pagesÚes                   r   Úfetch_list_pagerK   "   s  € àˆq‚yØœ˜¤ ¨;Ð7‰àœ˜¤ ¨7°4¸±6°(¸%Ð@ˆä�q“ó (ˆð'	Ü—‘˜S¬'¸2Ô>ˆAØ�}‰} Ó#Ø$�”
Ü$ Q§V¡V¨]Ó;�à�Ø—Y‘Y˜t¨F�YÓ3�ÙØ˜q˜5’LàŸ+™+ dÓ+ó N�BØŸ™ ›�AÙØ ØŸ5™5 ¨Ó,×2Ñ2Ó4�DØŸJ™J¨T˜JÓ2�EØŸ7™7 6›?�DÙ8<˜4Ÿ=™=¨t˜=Ô4À"�Dð  Ÿ?™?¨6Ô2ØŸ?™?¨4Ô0Ø%+¨D¨6 ?™DØ!Ÿ_™_¨SÔ1Ø%-¬f¨X°d°VÐ#<™DØ!Ÿ_™_¨TÔ2Ø%-¬f¨X´i°[ÀÀ$ÀqÀrÀ(ÀÐ#L™Dà%-¬f¨X´i°[ÀÀ$ÀÐ#H˜Dà—L‘L¨¸ÀtÑ!LÖMð)Nô. —]‘]Ð#;¸Q¿V¹VÓD�Ù24œc "§(¡(¨1£+Ô.¸"�Ø˜kÐ)Ò)ñE $ð(ðR ˆqˆ5€Løô ò 	Ø�qŠyÜ—
‘
˜1”ÿùð	ús   ½A#HÂ#EHÈ	H4ÈH/È/H4c           
      ó‚  ‡‡‡— t        | d«      }d}dD ]  Š|j                  dˆfd„¬«      }|sŒ n |s|j                  dd¬«      }|r|}|sy|j                  d	d
g«      D ]  }|j                  «        Œ g }|j                  dd¬«      D ]î  }|d   }|j	                  d¬«      xs |j                  dd«      }	t        j                  d|«      s6d|j                  «       v s$d|j                  «       v s|	j                  d«      sŒzt        j                  j                  ‰|«      }
|
j                  d«      s|
j                  d«      rd|
z   n|
}
|	r|	n|
j                  d«      d   }|j                  |||
f«       Œð |D ]±  \  }}}
|j                  d|
d¬«      }||_        |j"                  �s|j"                  }d}t%        |j&                  «      D ]  \  }}||u sŒ|} n |�>t)        |j&                  d| «      D ]#  }t+        |dd«      dk(  sŒ|j                  «        Œ% |j-                  |«       Œ³ |D ��
ch c]  \  }}}
|
’Œ
 c}
}Šg }|j                  d¬«      D ]ð  }|j.                  d k(  r|j                  t1        |«      «       Œ-|j.                  d!v r�|j	                  dd¬«      }	|	s|j                  d«      sŒb|j                  d «      }t3        ˆˆfd"„|j                  dd¬«      D «       «      }|s|r|j                  t1        |«      «       Œ¸|j                  |	«       ŒÊ|j	                  dd¬«      }	|	sŒà|j                  |	«       Œò t5        «       }g }|D ]X  }t        j6                  d#dt        j6                  d$d|«      «      }|sŒ2||vsŒ7|j9                  |«       |j                  |«       ŒZ d%j;                  |«      }|j=                  d&d'«      }|D ]  \  }}}
|
|vsŒ|
|vsŒ|d(|
› d)|› d*�z  }Œ t        j6                  d+d|«      }t        j6                  d,d%|«      j?                  «       }|S c c}
}w )-uX   ä»Ž trs_editor_view æ��å�–æ­£æ–‡: \n\n åˆ†æ®µ + è¡¨æ ¼ä¿�ç•™HTML + é™„ä»¶å†…åµŒç»�å¯¹URLr   N)Útrs_editor_viewÚTRS_UEDITORÚdivc                 ó   •— | xr ‰| v S )N© )ÚcÚclss    €r   ú<lambda>z!extract_content.<locals>.<lambda>Z   s   ø€ °²°c¸Q°h€ r   r    Úcontr
   ÚscriptÚstyler#   T)r$   r$   r%   r   z6(?i)\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|et|ofd)(\?|$)ÚattachÚdownloadu   é™„ä»¶)zhttp://r   r(   r)   r*   éÿÿÿÿÚ_blank)r$   ÚtargetÚnameÚimgF)Ú	recursiveÚtable)	ÚprO   Úh1Úh2Úh3r   Úolr"   Ú
blockquotec              3   óz   •K  — | ]2  }t         j                  j                  ‰|d    «      ‰v xs |d    ‰v –— Œ4 y­w)r$   N)r2   ÚcompatÚurljoin)Ú.0ÚxÚattached_hrefsÚpage_urls     €€r   ú	<genexpr>z"extract_content.<locals>.<genexpr>�   sH   øè ø€ ò  6àô —‘×'Ñ'¨°!°F±)Ó<ÀÐNÒmÐRSÐTZÑR[Ð_mÐRmÓmñ 6ùs   ƒ8;ú\s+ú<[^>]+>z

z&amp;ú&z

<p><a href="z" target="_blank">z</a></p>u   æ‰“å�°æœ¬é¡µ[^\n]*z\n{3,}) r   r8   r9   Ú	decomposer:   r3   r   r=   Úlowerr;   r2   rh   ri   Úsplitr<   Únew_tagÚstringÚparentÚ	enumerateÚcontentsÚlistÚgetattrÚreplace_withr]   ÚstrÚanyÚsetr   ÚaddÚjoinr   r   )Úhtmlrm   rF   rO   rU   ÚtagÚattachmentsr#   r$   ÚtxtÚabs_urlr]   Únew_ara   Úidx_aÚciÚchildÚ_ÚpartsÚelÚinner_tablesÚel_has_attachÚseenÚfinal_partsÚkeyÚcontentÚcontent_unescapedrl   rS   s    `                         @@r   Úextract_contentr•   U   s8  ú€ ä˜˜}Ó-€DØ
€CØ1ò ˆØ�i‰i˜Ó&>ˆiÓ?ˆÚÙðñ Ø�y‰y˜ vˆyÓ.ˆÙØˆCÙØà�|‰|˜X wÐ/Ó0ò ˆØ�‰�ðð €KØ�\‰\˜# Dˆ\Ó)ò 	3ˆØ�‰yˆØ�j‰j˜tˆjÓ$Ò:¨¯©¨g°rÓ(:ˆÜ�M‰MÐSÐUYÔZØ˜tŸz™z›|Ñ+¨z¸T¿Z¹Z»\Ñ/IÈSÏ^É^Ð\dÕMeÜ—o‘o×-Ñ-¨h¸Ó=ˆGØ×%Ñ%Ð&=Ô>Ø07×0BÑ0BÀ4Ô0H˜( WÒ,Èg�Ù‘3 7§=¡=°Ó#5°bÑ#9ˆDØ×Ñ  4¨Ð1Õ2ð	3ð (ò Ñˆˆ4�Ø—‘˜S w°x�Ó@ˆØˆŒØ�8‰8ÐØ—‘ˆAØˆEÜ& q§z¡zÓ2ò ‘	��EØ˜A’:Ø�EÙðð Ð Ü! !§*¡*¨V¨eÐ"4Ó5ò *�EÜ˜u f¨dÓ3°uÓ<ØŸ™Õ)ð*ð 	
�‰�uÕðð 4?×?¡- ! Q¨’gÓ?€Nð €EØ�l‰l UˆlÓ+ò "ˆØ�7‰7�gÒØ�L‰Lœ˜R›Ô!ØØ�7‰7ÐTÑTØ—+‘+˜b¨�+Ó-ˆCÙ˜rŸw™w uœ~ØØŸ;™; wÓ/ˆLÜô  6àŸ™ S¨t˜Ó4ô 6ó 6ˆMñ ™}Ø—‘œS ›WÔ%ØØ�L‰L˜Õà—+‘+˜b¨�+Ó-ˆCÚØ—‘˜SÕ!ð'"ô, ‹5€DØ€KØò "ˆÜ�j‰j˜ ¤V§Z¡Z°
¸BÀÓ%BÓCˆÚ�3˜d’?Ø�H‰H�SŒMØ×Ñ˜qÕ!ð	"ð �k‰k˜+Ó&€GØŸ™¨°Ó5ÐØ'ò TÑˆˆ4�Ø˜'Ò! gÐ5FÒ&FØÐ)¨'¨Ð2DÀTÀFÈ(ÐSÑS‰GðTô �j‰jÐ.°°GÓ<€GÜ�j‰j˜ F¨GÓ4×:Ñ:Ó<€GØ€NùóU @s   È8P;c                 óœ  — t        | d«      }d}|j                  dddi¬«      }|r|j                  d«      rt        |d   «      }|s.|j                  d«      }|rt        |j	                  d	¬
«      «      }d}|j                  dddi¬«      }|r‘|j                  d«      r€|d   j                  «       }t        j                  d|«      }|rU|j                  d«      › d|j                  d«      j                  d«      › d|j                  d«      j                  d«      › �}|s)t        j                  d| «      }	|	r|	j                  d«      }||fS )Nr   r
   Úmetar]   ÚArticleTitle)Úattrsr“   r   Tr%   ÚPubDatez(\d{4})-(\d{1,2})-(\d{1,2})r   ú-r+   r   z(\d{4}-\d{2}-\d{2}))r   r8   r3   r   r:   r   r   Úmatchr?   Úzfillr=   )
r‚   rF   r   ÚtmÚttr-   rH   ÚdÚcmÚdms
             r   Úextract_metar£   ¯   s3  € Ü˜˜}Ó-€DØ€EØ	�‰�6 &¨.Ð!9ˆÓ	:€BÙ	ˆb�f‰f�YÔÜ˜B˜y™MÓ*ˆÙØ�Y‰Y�wÓˆÙÜ §¡°$ Ó 7Ó8ˆEà€DØ	�‰�6 &¨)Ð!4ˆÓ	5€BÙ	ˆb�f‰f�YÔØˆy‰M×ÑÓ!ˆÜ�\‰\Ð8¸!Ó<ˆÙØ—h‘h˜q“k�] ! B§H¡H¨Q£K×$5Ñ$5°aÓ$8Ð#9¸¸2¿8¹8ÀA»;×;LÑ;LÈQÓ;OÐ:PÐQˆDÙÜ�]‰]Ð1°4Ó8ˆÙØ—8‘8˜A“;ˆDØ�$ˆ;Ðr   c                 óH  — t        j                  t        «      }|j                  d«       	 t	        j
                  dd|«      d d }t	        j
                  dd|«      j                  «       }d|v rdnd	}|j                  d
t        | | ||||ddt        t        |f«       |j                  }|j                  «        |r#|j                  d| f«       |j                  «        |j                  «        |S # t        $ r(}|j                  «        t        d|› �«       Y d }~y	d }~ww xY w)NzPRAGMA journal_mode=WALrp   r
   r   ro   ú z<tabler   r   z°INSERT OR IGNORE INTO gov_raw(site_name,source_url,page_url,title,publish_date,content,summary,status,category,script_name,group_name,has_table) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)Úactiveu   é€šçŸ¥å…¬å‘Šz°INSERT INTO gov_search(rowid,title,site_name,summary) SELECT r.id,r.title,r.site_name,r.summary FROM gov_raw r WHERE r.page_url=? AND r.id NOT IN (SELECT rowid FROM gov_search)z  DB error: )Úsqlite3Úconnectr   Úexecuter   r   r   Ú	SITE_NAMEÚSCRIPT_NAMEÚ
GROUP_NAMEÚtotal_changesÚcommitÚcloser@   Úprint)	r,   r   r-   r“   ÚdbÚsummaryÚ	has_tableÚaffectedrJ   s	            r   Úinsert_articlerµ   È   s
  € Ü	�‰œÓ	#€BØ‡J�JÐ(Ô)ðÜ—*‘*˜Z¨¨WÓ5°d°sÐ;ˆÜ—*‘*˜V S¨'Ó2×8Ñ8Ó:ˆØ! WÑ,‘A°!ˆ	Ø
�
‰
ð Ü˜˜S %¨¨w¸ÀÈ>Ô[fÔhrÐt}Ð~ô	@ð ×#Ñ#ˆØ
�	‰	ŒÙØ�J‰Jð CØ�ôð �I‰IŒKØ
�‰Œ
ØˆøÜò Ø
�‰Œ
Ü�˜Q˜CÐ Ô!Üûðús   ¬CC0 Ã0	D!Ã9DÄD!éd   c                 ó.  — t        dd› �«       t        dt        › �«       t        d› «       t        d«      \  }}|st        d«       y t        | |«      }t        d|› dd› d	�«       t	        |«      }t        d
|dz   «      D ]£  }t        |«      \  }}|s n‘|j                  |«       |D �cg c]  }|d   sŒ	|d   ‘Œ }}|r4t        d|› dt        |«      › dt        |«      › dt        |«      › d�	«       nt        d|› dt        |«      › d�«       t        j                  d«       Œ¥ t        dt        |«      › d�«       dx}	x}
x}}t        |d«      D �]I  \  }}|d   r|d   t        k  r|
dz  }
Œt        d«      D ]F  }	 t        j                  |d   t        d¬«      }|j                   dk(  rd|_        |j$                  } nŒH s|dz  }Œzt'        |«      \  }}|r|n|d   }|r|n|d   }|r|t        k  r|
dz  }
Œ«t)        ||d   «      }|r.t        t+        j,                  dd|«      j/                  «       «      nd}|dk  r|dz  }Œ÷t1        |d   |||«      r|	dz  }	n|
dz  }
|dz  dk(  rt        d |› d!t        |«      › �«       t        j                  d«       �ŒL t        d"«       t3        j4                  t6        «      }|j9                  d#t        f«       |j9                  d$t        f«       |j;                  «        |j9                  d%t        f«      }|j=                  «       d   }|j?                  «        t        d&|› d�«       t        d't        › d(|	› d)|
› d*|› d+|› d,|› d	�«       y c c}w #  |d
k  rt        j                  d
«       d }Y �ŒxY w)-Nú
z2==================================================u   ðŸš€ r   u   â�Œ åˆ—è¡¨é¡µæ— æ•°æ�®u     å…±u   é¡µ, çº¦i&  u   æ�¡r+   r-   u     ç¬¬u   é¡µ: u    æ�¡ (z ~ ú)u    æ�¡gš™™™™™É?u
   
ðŸ“Š å…± r   r   r,   r   r   r   r   r   rp   r
   é
   é   z  ...r*   u   
ðŸ“Š FTSå�Œæ­¥...z(DELETE FROM gov_search WHERE site_name=?zyINSERT INTO gov_search(rowid,title,site_name,summary) SELECT rowid,title,site_name,summary FROM gov_raw WHERE site_name=?z1SELECT COUNT(*) FROM gov_search WHERE site_name=?z  FTS: u   
âœ… u   : æ–°å¢žu   , è·³è¿‡u   , ç©ºæ­£æ–‡u   , é”™è¯¯u   , FTSå…±) r°   rª   rK   Úminrz   r1   ÚextendÚlenÚmaxrA   rB   rx   ÚCUTOFFr2   r3   r4   r5   r6   r7   r£   r•   r   r   r   rµ   r§   r¨   r   r©   r®   Úfetchoner¯   )Ú	max_pagesrG   rI   Ú	all_itemsÚpgÚitsr‹   ÚitÚdatesÚnewÚskipÚno_bodyÚerrÚiÚitemrD   rE   r‚   ÚptÚpdÚ
real_titleÚ	real_dater“   Útext_lenr±   rR   Úcnts                              r   ÚrunrÔ   á   s°  € Ü	ˆBˆvˆhˆ-ÔÜ	ˆE”)�Ð
ÔÜ	ˆVˆHÔä(¨Ó+Ñ€Eˆ;ÙÜÐ&Ô'Øä�i Ó-€KÜ	ˆE�+�˜h t f¨CÐ
0Ô1ä�U“€IÜ�A�{ Q‘Ó'ò 
ˆÜ  Ó$‰ˆˆQÙÙØ×Ñ˜ÔØ&)Ö8 ¨R°«Z��F“Ð8ˆÐ8ÙÜ�E˜"˜˜U¤3 s£8 *¨F´3°u³:°,¸cÄ#ÀeÃ*ÀÈQÐOÕPä�E˜"˜˜U¤3 s£8 *¨DÐ1Ô2Ü�
‰
�3�ð
ô 
ˆKœ˜I›Ð' tÐ
,Ô-Ø!"Ð"€CÐ"ˆ$Ð"�˜3Ü˜Y¨Ó*ó *‰ˆˆ4Ø�Š<˜D ™L¬6Ò1Ø�A‰IˆDØä˜1“Xò 
	ˆEð	Ü—L‘L  e¡´gÀrÔJ�Ø—=‘= CÒ'Ø!(�A”JØŸ6™6�DÙð (ð
	ñ Ø�1‰HˆCØä˜dÓ#‰ˆˆBÙ‘R 4¨¡=ˆ
Ù‘B $ v¡,ˆ	á˜¤VÒ+Ø�A‰IˆDØä! $¨¨U©Ó4ˆÙGN”3”v—z‘z *¨b°'Ó:×@Ñ@ÓBÔCÐTUˆØ�bŠ=Ø�q‰LˆGØä˜$˜u™+ z°9¸gÔFØ�1‰H‰Cà�A‰IˆDàˆq‰5�AŠ:Ü�E˜!˜˜Aœc )›nÐ-Ð.Ô/Ü�
‰
�3ŽðU*ôZ 
ÐÔ!Ü	�‰œÓ	#€BØ‡J�JÐ9¼I¸<ÔHØ‡J�Jð  Kô  NWð  MYô  ZØ‡I�I„KØ
�
‰
ÐFÌÈÓU€AØ
�*‰*‹,�q‰/€CØ‡H�H„JÜ	ˆG�C�5˜Ð
ÔÜ	ˆF”9�+˜X c U¨(°4°&¸ÀGÀ9ÈHÐUXÐTYÐYaÐbeÐafÐfiÐ
jÕkùò 9øð*Ø˜1’9Ü—J‘J˜q”MØ“ús   Â+
M.Â6M.Æ AM3Í3NÚ__main__r   z--pages=ú=z--pages)r¶   )*Ú__doc__r2   r§   rA   ÚsysÚrer   Úbs4r   ÚwarningsÚfilterwarningsr   r   ÚosÚgetenvr   rª   r«   r¬   r/   r0   ÚnowÚstrftimerÀ   r4   r   rK   r•   r£   rµ   rÔ   Ú__name__ÚmpÚargvÚargsrÌ   r¾   r#   r;   r>   rt   Ú
ValueErrorrQ   r   r   ú<module>ræ      s·  ðñ÷
 2× 1Ó 1Ý Û Ø €× Ñ ˜Ô !ß (Û 	àˆB�I‰I�kÐ#8Ó9€	Ø!€	Ø#€Ø€
Ø	€Ø€	à
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€ØÐWÐ
X€òò0òfWòtò2ó2Rlðj ˆzÒà	€BØ�8‰8�A�Bˆ<€DØ	€AØ
‰c�$‹iŠ-Ø�‰GˆØ�<‰<˜
Ô#ðÙ˜Ÿ™  a›¨Ñ+Ó,‘ð �)Š^  A¡©¨D«	Ò 1ðÙ˜˜a !™e™Ó%�ð �‰F‰AðÙ˜“V�ð 	
ˆQ‰ˆð% ‰c�$‹i‹-ñ& ˆ…Gð1 øð ò Ùðûð
 ò Ùðûð ò Ùðús6   ÃD? ÄE
 ÄE Ä?EÅEÅ
EÅEÅEÅE