Ë
    †É…j   ã                   óÄ  — d dl Z d dlZd dlZd dlZd dlZd dlZ eej                  «      dkD  r2ej                  d   j                  «       r e
ej                  d   «      ndZe� ed ee«      z   «       d dlZ ej                  dd«      ZdZdZedz   Zd	Zd
diZ e j,                  «       Zej0                  j3                  e«       d„ Zdd„Zd„ Zd„ Zedk(  r e«        yy)é    Né   z[AutoPg] max_pages=Ú	SEARCH_DBz/root/search.dbu   å¼€é²�åŽ¿é€šçŸ¥å…¬å‘Šzhttp://www.kailu.gov.cnz/xwzx/tzgggsz
2023-06-01z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 ó¾   — 	 t        | «      S # t        $ rF t        j                  | j	                  «       «      j                  «       d d }t        |d«      dz  cY S w xY w)Né   é   l            )ÚintÚ
ValueErrorÚhashlibÚmd5ÚencodeÚ	hexdigest)ÚxidÚhs     ú%/root/gov_crawler/crawl_kailu_tzgg.pyÚmake_int_idr      sT   € ð$Ü�3‹xˆøÜò $Ü�K‰K˜Ÿ
™
›Ó%×/Ñ/Ó1°#°2Ð6ˆÜ�1�b‹z˜UÑ#Ò#ð$ús   ‚
 �AAÁAc                 óÆ  — | dk(  r
t         › d�}nt         › d| › d�}t        j                  |d¬«      }|j                  j	                  dd¬	«      }g }t        j                  d
|t
        j                  «      }|D ]e  \  }}t        j                  dd|«      j                  «       }|sŒ.t        |«      dkD  sŒ=|j                  d«      sŒO|j                  ||dd  dœ«       Œg |S )Nr   z/index.htmlz/index_z.htmlé   ©Útimeoutúutf-8Úreplace©Úerrorsz$<a[^>]*href="([^"]+)"[^>]*>(.*?)</a>z<[^>]+>Ú é
   z./é   )ÚtitleÚhref)ÚLIST_URLÚsessionÚgetÚcontentÚdecodeÚreÚfindallÚDOTALLÚsubÚstripÚlenÚ
startswithÚappend)	ÚpageÚurlÚrÚhtmlÚarticlesÚlinksr   ÚtextÚatexts	            r   Ú
fetch_listr4      sÔ   € Øˆq‚yÜ�
˜+Ð&‰ä�
˜' $  uÐ-ˆÜ�‰�C ˆÓ$€AØ�9‰9×Ñ˜G¨IÐÓ6€DØ€HÜ�J‰JÐ>ÀÄbÇiÁiÓP€EØò @‰
ˆˆdÜ—‘�z 2 tÓ,×2Ñ2Ó4ˆÚ”S˜“Z "“_¨¯©¸Õ)>Ø�O‰O e°T¸!¸"°XÑ>Õ?ð@ð €Oó    c                 ó@  — t         › d| › �}t        j                  |d¬«      }|j                  j	                  dd¬«      }d}t        j                  d|«      }|r|j                  d	«      }d}t        j                  d
|t
        j                  «      }|r|j                  d	«      }ntt        j                  d|t
        j                  «      }|r|j                  d	«      }n;t        j                  d|t
        j                  «      }	|	r|	j                  d	«      }nd}|r€t        j                  dd|t
        j                  t
        j                  z  ¬«      }t        j                  dd|t
        j                  t
        j                  z  ¬«      }|j                  «       }||fS )Nú/r   r   r   r   r   r   z1<meta name="PubDate" content="(\d{4}-\d{2}-\d{2})r   z@<div[^>]*class="[^"]*TRS_UEDITOR[^"]*"[^>]*>(.*?)</div>\s*</div>zD<div[^>]*class="[^"]*trs_editor_view[^"]*"[^>]*>(.*?)</div>\s*</div>z(<em[^>]*id="pareContent"[^>]*>(.*?)</em>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>)r   r    r!   r"   r#   r$   ÚsearchÚgroupr&   r'   ÚIr(   )
Úrel_pathr-   r.   r/   Úpub_dateÚdmÚcontent_htmlÚmr   Úpms
             r   Úfetch_detailrB   ,   sK  € ÜˆJ�a˜�zÐ
"€CÜ�‰�C ˆÓ$€AØ�9‰9×Ñ˜G¨IÐÓ6€Dà€HÜ	�‰ÐGÈÓ	N€BÙ	Ø—8‘8˜A“;ˆð €Lô 	�	‰	ÐUÐW[Ô]_×]fÑ]fÓg€AÙØ�G‰G�A‹J‰ä�I‰IÐ]Ð_cÔeg×enÑenÓoˆÙØ—‘˜“
‰Aô —‘ÐFÈÌbÏiÉiÓXˆBÙØ—H‘H˜Q“K‘à�áÜ�F‰FÐ/°°Q¼b¿i¹iÌÏÉ¹nÔMˆÜ�F‰FÐ-¨r°1¼B¿I¹IÄbÇdÁd¹NÔKˆØ—w‘w“yˆà˜Ð!Ð!r5   c                  ó^  — t        dt        › d�«       g } t        dt        xs d«      D ]S  }	 t	        |«      }|s nC| j                  |«       t        d|› dt        |«      › d�«       t        j                  d«       ŒU t        d
t        | «      › �«       t        j                  t        d¬«      }|j                  «       }d\  }}}}	t        j                  «       }
t        | «      D �],  \  }}|d   }|d   }	 t        |«      \  }}|s>t!        j"                  d|«      }|r&|j%                  d«      › d|j%                  d«      › d�}|r|t&        k  r|dz  }Œq|s|	dz  }	t)        |«      }	 |j+                  d|t        t,        › d|› �t,        › d|› �||||rt/        |j1                  dd«      «      ndf«       |j2                  dkD  r|dz  }n|dz  }|dz   dz  dk(  sŒ÷t        j                  «       |
z
  }t        d|› d|dz   › d|› d|› d|d›d �«       �Œ/ |j5                  «        t        j                  «       |
z
  }t        d!|	› d||z   › �«       t        d"«       	 |j                  «       }|j+                  d#t        f«       |j+                  d$t        f«      j7                  «       }|j9                  d%|«       |j5                  «        t        d&t        |«      › d'�«       |j;                  «        t        d)|d›d*|› d+|› d|› �«       y # t        $ r}t        d	|› d|› �«       Y d }~�Œd }~ww xY w# t        $ r}t        d|› d|› �«       Y d }~�Œnd }~ww xY w# t        $ r!}t        d|› d|› �«       |dz  }Y d }~�Œ°d }~ww xY w# t        $ r}t        d(|› �«       Y d }~ŒÂd }~ww xY w),Nz=== z ===r   é"   z  List page z: z	 articlesg333333Ã?z  [ERROR] List page z
Total: é<   r   )r   r   r   r   r   r   z  [ERROR] Detail z/(\d{4})(\d{2})/r   ú-r   z-01z|INSERT OR IGNORE INTO gov_raw(id,site_name,source_url,page_url,title,publish_date,content,date_rank) VALUES(?,?,?,?,?,?,?,?)r7   r   z  [DB ERR] é2   z  +z (-z, >3yz) [z.0fzs]z
No content: z
Syncing FTS...zPDELETE FROM gov_search WHERE rowid IN (SELECT id FROM gov_raw WHERE site_name=?)zLSELECT id, title, site_name, summary, content FROM gov_raw WHERE site_name=?z]INSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary, content) VALUES(?,?,?,?,?)z  FTS: z recordsz  FTS error: z
=== Done (zs) === +z, -)ÚprintÚ	SITE_NAMEÚrangeÚ_MAX_PGr4   Úextendr)   ÚtimeÚsleepÚ	ExceptionÚsqlite3ÚconnectÚDB_PATHÚcursorÚ	enumeraterB   r$   r9   r:   ÚCUTOFF_DATEr   Úexecuter   r   r   ÚrowcountÚcommitÚfetchallÚexecutemanyÚclose)Úall_articlesÚpgÚartsÚeÚconnÚcÚinsertedÚskippedÚoldÚ
no_contentÚstartÚiÚartr   r   r?   r=   r>   Úint_idÚelapsedÚc2Úrowss                         r   Úmainrm   P   sÉ  € Ü	ˆD”�˜4Ð
 Ô!à€LÜ�A”w’} "Ó%ò 	4ˆð	4Ü˜b“>ˆDÙÙØ×Ñ Ô%Ü�L   B¤s¨4£y k°Ð;Ô<Ü�J‰J�tÕð	4ô 
ˆI”c˜,Ó'Ð(Ð
)Ô*ä�?‰?œ7¨BÔ/€DØ�‰‹€AØ)3Ñ&€Hˆg�s˜JÜ�I‰I‹K€Eä˜LÓ)ó %T‰ˆˆ3Ø�G‘ˆØ�6‰{ˆð	Ü%1°$Ó%7Ñ"ˆL˜(ñ
 Ü—‘Ð.°Ó5ˆBÙØ Ÿh™h q›k˜]¨!¨B¯H©H°Q«K¨=¸Ð<�á˜¤;Ò.Ø�1‰HˆCØÙØ˜!‰OˆJä˜TÓ"ˆð	Ø�I‰Ið  UØœyÜ"˜ 1 T FÐ+Ü"˜ 1 T FÐ+Ø˜h¨Ù8@”s˜8×+Ñ+¨C°Ó3Ô4Àað	IôJð �z‰z˜AŠ~˜x¨1™}™xØ˜Q‘,�'ð
 ˆa‰C�2‰:˜‹?Ü—i‘i“k EÑ)ˆGÜ�C˜�z  A a¡C '¨¨W¨I°U¸3¸%¸sÀ7È3À-ÈrÐRÖSðK%TðN 	‡K�K„MÜ�i‰i‹k˜EÑ!€GÜ	ˆN˜:˜, a¨°Ñ(8Ð'9Ð
:Ô;Ü	ÐÔð#Ø�[‰[‹]ˆØ
�
‰
ÐeÔhqÐgsÔtØ�z‰zÐhÔktÐjvÓw÷  Añ  Aó  CˆØ
�‰ÐvÐx|Ô}Ø�‰ŒÜ�œ˜D›	�{ (Ð+Ô,ð 	‡J�J„LÜ	ˆL˜ ˜ X¨h¨Z°s¸7¸)À5ÈÈÐ
NÕOøô ò 	4ÜÐ(¨¨¨B¨q¨cÐ2×3Ò3ûð	4ûô  ò 	ÜÐ% d V¨2¨a¨SÐ1Ô2Ýûð	ûô2 ò 	Ü�K ˜v R¨ sÐ+Ô,Ø�q‰LŽGûð	ûô& ò #Ü�˜a˜SÐ!×"Ñ"ûð#úsg   ®L½ALÃ:L6Å,A'MÉBN Ì	L3ÌL.Ì.L3Ì6	MÌ?MÍMÍ	NÍ'NÎNÎ	N,ÎN'Î'N,Ú__main__)r   )ÚrequestsrP   r$   rM   r
   ÚsysÚ_SYSr)   ÚargvÚisdigitr   rK   rH   ÚstrÚosÚgetenvrR   rI   ÚBASE_URLr   rU   ÚHEADERSÚSessionr    ÚheadersÚupdater   r4   rB   rm   Ú__name__© r5   r   ú<module>r~      sê   ð÷ ,× +Ó +ã Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/ã 	à
ˆ"�)‰)�KÐ!2Ó
3€Ø8€	Ø$€Ø�nÑ$€Ø€àÐWÐ
X€Ø
ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ ò$óò""òHKPðZ ˆzÒÙ…Fð r5   