Ë
    ¸¬uj6%  ã                   óþ  — 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	Zddl
Z
 e
j                  d«       ej                  j                  ej                  j                  e«      «      Zej                  j#                  de«       ej                  j#                  dej                  j%                  edd«      «       ddlmZ dZdZd	Z ej0                  d
d«      ZdZd„ Zd„ Zd„ Zefd„Zdd„Zd„ Z dd„Z!e"dk(  rqdZ#ejH                  dd Z% e&e%«      D ])  \  Z'Z(e(dk(  sŒe'dz    e)e%«      k  sŒ	  e*e%e'dz      «      Z#Œ+ e#€ e%D ]  Z(	  e*e(jW                  d«      «      Z# n  e!e#¬«       yy#  Y Œ]xY w#  Y Œ4xY w)uo   
è‘«èŠ¦å²›ç»�æµŽå¼€å�‘åŒº-é€šçŸ¥å…¬å‘Š çˆ¬è™« (TRS CMS)
ç«™ç‚¹: jjkfq.hld.gov.cn
æ �ç›®: /xwdt/tzgg/index.html
é    NÚignorez..Úcrawler)Ú
fetch_pageu%   è‘«èŠ¦å²›ç»�æµŽå¼€å�‘åŒº-é€šçŸ¥å…¬å‘Šzjjkfq.hld.gov.cnzhttps://jjkfq.hld.gov.cnÚ	SEARCH_DBz/root/search.dbé   c                 óÞ  — | sy t        j                  t        «      }|j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j	                  «        dx}}| D ]Ø  }	 |j                  d«      xs dd d	 }|j                  d
«      xs |d d	 }|j                  d«      xs d}|j                  d«      xs dd d }|j                  d«      xs d}	|j                  d«      xs |	}
|j                  d«      xs d}|j                  dt        |	|
||||d|f	«       |j                  dkD  r|dz  }n|dz  }ŒÚ |j	                  «        	 |j                  dt        f«       |j	                  «        |j                  «        t        d|› d|› �«       |S #  |dz  }Y �Œ@xY w# t        $ r}t        d|› �«       Y d }~ŒLd }~ww xY w)NzPRAGMA journal_mode=WALzPRAGMA busy_timeout=8000zPRAGMA synchronous=NORMALa"  CREATE TABLE IF NOT EXISTS gov_raw (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        site_name TEXT, source_url TEXT UNIQUE, page_url TEXT,
        title TEXT, publish_date TEXT, summary TEXT,
        content TEXT, status TEXT, category TEXT, tags TEXT,
        attachments TEXT
    )zˆCREATE VIRTUAL TABLE IF NOT EXISTS gov_search USING fts5(
        title, site_name, summary, content='gov_raw', content_rowid='id'
    )r   ÚtitleÚ iô  ÚsummaryÚcontentÚpublish_dateé
   Ú
source_urlÚurlÚattachmentszÏINSERT OR IGNORE INTO gov_raw
                (site_name, source_url, page_url, title, publish_date,
                 summary, content, status, attachments)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)Úactiveé   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.site_name=? AND r.id NOT IN (SELECT rowid FROM gov_search)z  [FTS ERROR] u     [DB] æ–°å¢ž: õ
   , è·³è¿‡: )Úsqlite3Úconnectr   ÚexecuteÚcommitÚgetÚ	SITE_NAMEÚtotal_changesÚ	ExceptionÚprintÚclose)ÚitemsÚdbÚokÚskipÚitemr	   r   r   Úpub_dater   Úpage_urlr   Úes                ú/root/gov_crawler/crawl_hld.pyÚ	insert_dbr(      sý  € ÙØÜ	�‰œÓ	#€BØ‡J�JÐ(Ô)Ø‡J�JÐ)Ô*Ø‡J�JÐ*Ô+Ø‡J�Jð 	ô 
ð ‡J�Jð 	ô 
ð ‡I�I„KØ€M€BˆØò ˆð	Ø—X‘X˜gÓ&Ò,¨"¨d¨sÐ3ˆEØ—x‘x 	Ó*Ò3¨e°T°cÐ:ˆGØ—h‘h˜yÓ)Ò/¨RˆGØŸ™ Ó0Ò6°B¸¸Ð<ˆHØŸ™ ,Ó/Ò5°2ˆJØ—x‘x “Ò4¨*ˆHØŸ(™( =Ó1Ò7°RˆKØ�J‰Jð 6ô ˜J¨°%¸Ø˜' 8¨[ð:ô	;ð ×Ñ !Ò#Ø�a‘‘à˜‘	�øð%ð* ‡I�I„Kð$Ø
�
‰
ð Rô ˆLô		ð
 	�	‰	Œð ‡H�H„JÜ	ˆO˜B˜4˜z¨$¨Ð
0Ô1Ø€Iøð	Ø�A‰I‹Dûô ò $Ü�˜q˜cÐ"×#Ñ#ûð$ús%   ÂCF>Å4'G Æ>GÇ	G,ÇG'Ç'G,c                 óV  — | syt        j                  dd| t         j                  t         j                  z  ¬«      } t        j                  dd| t         j                  t         j                  z  ¬«      } t        j                  dd| t         j                  ¬«      } | j	                  «       S )Nr
   z<style[^>]*>.*?</style>©Úflagsz<script[^>]*>.*?</script>z
<!--.*?-->)ÚreÚsubÚDOTALLÚ
IGNORECASEÚstrip)Úhtmls    r'   Úclean_contentr2   O   sp   € ÙØÜ�6‰6Ð,¨b°$¼b¿i¹iÌ"Ï-É-Ñ>WÔX€DÜ�6‰6Ð.°°DÄÇ	Á	ÌBÏMÉMÑ@YÔZ€DÜ�6‰6�-  T´·±Ô;€DØ�:‰:‹<Ðó    c                 óp  — | sy| }t        j                  dd|t         j                  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  d	d|t         j                  ¬«      }t        j                  d
d|t         j                  ¬«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }|j                  «       S )Nr
   z	<br\s*/?>ú
r*   z</p>ú

ú</div>z</tr>z</th>z</td>z5<(?!/?(?:table|tr|td|th|thead|tbody|tfoot|img))[^>]*>z&nbsp;ú z&lt;ú<z&gt;ú>z&amp;ú&z\n{3,}z[ \t]+z-(?<=[\u4e00-\u9fff])[ \t]+(?=[\u4e00-\u9fff]))r,   r-   r/   r0   )r1   Útexts     r'   Úextract_textr=   W   s<  € ÙØØ€DÜ�6‰6�,  d´"·-±-Ô@€DÜ�6‰6�'˜6 4¬r¯}©}Ô=€DÜ�6‰6�)˜T 4¬r¯}©}Ô=€DÜ�6‰6�(˜D $¬b¯m©mÔ<€DÜ�6‰6�(˜D $¬b¯m©mÔ<€DÜ�6‰6�(˜D $¬b¯m©mÔ<€DÜ�6‰6ÐJÈBÐPTÓU€DÜ�6‰6�)˜S $Ó'€DÜ�6‰6�'˜3 Ó%€DÜ�6‰6�'˜3 Ó%€DÜ�6‰6�(˜C Ó&€DÜ�6‰6�)˜V TÓ*€DÜ�6‰6�)˜S $Ó'€DÜ�6‰6ÐBÀBÈÓM€DØ�:‰:‹<Ðr3   c                 ód  — | syd}t        j                  d|z   dz   | t         j                  «      }|syg }|D ]f  \  }}}}|j                  d«      r|n%|j	                  d«      dz   |j                  d«      z   }|j                  d|j                  «       › d|› d	�«       Œh d
j                  |«      S )Nr
   z1\.(doc|docx|pdf|xls|xlsx|rar|zip)(\?[^\s"\'<>]*)?z<a[^>]*href=["\']([^"\']*?(?:z))["\'][^>]*>([^<]*)</a>Úhttpú/u	   [é™„ä»¶: z](ú)r5   )	r,   Úfindallr/   Ú
startswithÚrstripÚlstripÚappendr0   Újoin)	r1   Úbase_urlÚext_patternÚlinksÚpartsÚhrefÚ_r<   Úfull_urls	            r'   Úextract_attachmentsrO   k   s¼   € ÙØØF€KÜ�J‰JØ(¨;Ñ6Ð9TÑTØŒb�m‰mó€Eñ ØØ€EØ!ò >Ñˆˆa��DØŸ?™?¨6Ô2‘4¸¿¹ÈÓ9MÐPSÑ9SÐVZ×VaÑVaÐbeÓVfÑ9fˆØ�‰�y §¡£ ¨b°°
¸!Ð<Õ=ð>ð �9‰9�UÓÐr3   c                 óÒ  — | dk(  r
t         › d�}nt         › d| › d�}t        |d¬«      }|sg S g }t        j                  dt        j                  t        j
                  z  «      }|j                  |«      D ]ï  }|j                  d«      j                  «       }|j                  d	«      j                  «       xs |j                  d
«      j                  «       }|j                  d«      j                  «       }|j                  d«      r|}	nF|j                  d«      rt         › d|d	d › �}	n&|j                  d«      r
t         |z   }	nt         › d|› �}	|j                  ||	|dœ«       Œñ |S )uA   èŽ·å�–åˆ—è¡¨é¡µï¼Œpage=0 = index.html, page=1 = index_1.html, ...r   z/xwdt/tzgg/index.htmlz/xwdt/tzgg/index_z.htmlé   ©Útimeoutz�<li><a\s+href=[\'"]([^\'"]+)[\'"]\s+title=[\'"]([^\'"]*)[\'"][^>]*>(.*?)</a><span\s+class=[\'"]date[\'"]>\[([^\]]+)\]</span></li>r   é   é   r   r?   ú./z/xwdt/tzgg/Nr@   )r	   r   Údate)ÚBASE_URLr   r,   Úcompiler.   r/   ÚfinditerÚgroupr0   rC   rF   )
Úpager   r1   r   ÚpatternÚmrL   r	   Údate_strrN   s
             r'   Ú
fetch_listr`   z   sW  € àˆq‚yÜ�
Ð/Ð0‰ä�
Ð+¨D¨6°Ð7ˆÜ�c 2Ô&€DÙØˆ	à€EÜ�j‰jð	Jä
�	‰	”B—M‘MÑ!ó€Gð
 ×Ñ˜dÓ#ò ˆØ�w‰w�q‹z×ÑÓ!ˆØ—‘˜“
× Ñ Ó"Ò8 a§g¡g¨a£j×&6Ñ&6Ó&8ˆØ—7‘7˜1“:×#Ñ#Ó%ˆð �?‰?˜6Ô"Ø‰HØ�_‰_˜TÔ"ô #˜ ;¨t°A°B¨x¨jÐ9‰HØ�_‰_˜SÔ!Ü $‘‰Hä"˜ ;¨t¨fÐ5ˆHà�‰ØØØñ
õ 	ð#ð, €Lr3   c                 ó.  — | d   }t        |d¬«      }|sy|j                  d«      }|dk  ry|j                  d|«      }|dk  ry||dz   d }d}d}|dkD  rZ|t        |«      k  rL|j                  d	|«      r|dz  }|d
z  }n|||dz    dk(  r|dz  }|dz  }n|dz  }|dkD  r|t        |«      k  rŒL|d|dz
   }t	        |«      }	t        |«      }
t        |	«      }|
r|j                  «       dz   |
z   }t        j                  d|t        j                  «      }g }|D ]T  }|j                  d«      r|n)|j                  dd«      d   dz   |j                  d«      z   }|j                  d|› d�«       ŒV |r|r|dz  }|dj                  |«      z  }| d   ||
dœS )u   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹r   rQ   rR   NÚ
TRS_Editorr   r:   r   z<divr   é   r7   u   

--- é™„ä»¶ ---
z <img[^>]*src=["\']([^"\']+)["\']r?   r@   rV   u
   ![å›¾ç‰‡](rA   r6   r5   r	   )r	   r   r   )r   ÚfindÚlenrC   r2   rO   r=   rD   r,   rB   r/   ÚrsplitrE   rF   rG   )r#   r   r1   ÚidxÚtag_endÚrestÚdepthÚposÚrawÚcleanedr   Útext_contentÚimgsÚ	img_descsÚimg_srcÚfull_srcs                   r'   Úfetch_detailrs   ¢   sæ  € à
ˆu‰+€CÜ�c 2Ô&€DÙØð �)‰)�LÓ
!€CØ
ˆQ‚wØà�i‰i˜˜SÓ!€GØ�‚{ØØ�˜‘	�
Ð€Dà€EØ
€CØ
�!Š)˜œc $›išØ�?‰?˜6 3Ô'Ø�Q‰JˆEØ�1‰H‰CØ�#�c˜!‘eˆ_ Ò(Ø�Q‰JˆEØ�1‰H‰Cà�1‰HˆCð �!Š)˜œc $›i›ð ˆv��A‘ˆ,€Cä˜CÓ €GÜ% cÓ*€KÜ Ó(€LáØ#×*Ñ*Ó,Ð/EÑEÈÑSˆô �:‰:Ð9¸3ÄÇÁÓN€DØ€IØò 3ˆØ%×0Ñ0°Ô8‘7¸s¿z¹zÈ#ÈqÓ?QÐRSÑ?TÐWZÑ?ZÐ]d×]kÑ]kÐlpÓ]qÑ?qˆØ×Ñ˜: h Z¨qÐ1Õ2ð3ñ ÙØ˜FÑ"ˆLØ˜Ÿ	™	 )Ó,Ñ,ˆð �g‘ØØ"ñð r3   c                 óæ  — t        dd› �«       t        dt        › �«       t        d› «       | r| dkD  rt        | t        «      }nt        }t        d«       g }t	        |«      D ]W  }t        |«      }|r3|j                  |«       t        d|dz   › d|› d	t        |«      › d
�«       ŒCt        d|dz   › d|› d�«       ŒY t        dt        |«      › d
�«       dx}}g }t        |d«      D ]¡  \  }}	t        d|› dt        |«      › d|	d   d d › d�«       t        |	«      }
|
€|dz  }Œ=|
d   }|j                  |	d   |	d   |	d   |	d   d d |	d   d d ||
j                  dd«      dœ«       |dz  }t        dt        |«      › d|	d   › �«       Œ£ t        dd› �«       t        d|› d|› dt        |«      |z
  |z
  › �«       |rt        |«       t        d› «       t        dt        |«      › d |› d!|› �«       y )"Nr5   z<============================================================u   ðŸš€ r   u   
ðŸ“¥ èŽ·å�–åˆ—è¡¨...u      ç¬¬ r   r@   u    é¡µ: u    æ�¡u	    é¡µ: ç©ºu      å…±èŽ·å�–: z
[z] r	   é<   z...r   r   rW   r   éÈ   r   r
   )r	   r   r   r   r   r   r   u      âœ… æ­£æ–‡: u    å­—, æ—¥æœŸ: u    ðŸ“¦ å†™å…¥æ•°æ�®åº“... æˆ�åŠŸ: u
   , å¤±è´¥: r   u   âœ… å®Œæˆ�! å…±å¤„ç�† u    æ�¡ï¼Œæˆ�åŠŸ u
   ï¼Œå¤±è´¥ )r   r   ÚminÚ	MAX_PAGESÚranger`   Úextendre   Ú	enumeraters   rF   r   r(   )Ú	max_pagesÚtotal_pagesÚ	all_itemsÚpr   ÚsuccessÚfailÚdb_itemsÚir#   ÚdetailÚcontent_texts               r'   Úrunr†   Ø   sN  € Ü	ˆBˆvˆhˆ-ÔÜ	ˆE”)�Ð
ÔÜ	ˆVˆHÔá�Y ’]Ü˜)¤YÓ/‰äˆô 
Ð
"Ô#Ø€IÜ�;Óò :ˆÜ˜1“ˆÙØ×Ñ˜UÔ#Ü�G˜A˜a™C˜5  + ¨f´S¸³Z°LÀÐEÕFä�G˜A˜a™C˜5  + ¨iÐ8Õ9ð:ô 
ˆNœ3˜y›>Ð*¨$Ð
/Ô0ð Ð€GˆdØ€Hä˜Y¨Ó*ò Q‰ˆˆ4Ü��A�3�aœ˜I›Ð' r¨$¨w©-¸¸Ð*<Ð)=¸SÐAÔBä˜dÓ#ˆØˆ>Ø�A‰IˆDØà˜iÑ(ˆà�‰Ø˜'‘]Ø˜u™+Ø˜‘;Ø  ™L¨¨"Ð-Ø˜G‘} T cÐ*Ø#Ø!Ÿ:™: m°RÓ8ñ
ô 	ð 	�1‰ˆÜ�¤ LÓ 1Ð2°.ÀÀfÁÀÐOÕPð)Qô, 
ˆBˆvˆhˆ-ÔÜ	Ð,¨W¨I°ZÀ¸vÀZÔPSÐT]ÓP^Ð_fÑPfÐgkÑPkÐOlÐ
mÔnÙÜ�(ÔÜ	ˆVˆHÔÜ	Ð"¤3 y£>Ð"2°.ÀÀ	ÈÐTXÐSYÐ
ZÕ[r3   Ú__main__r   z--pagesú-)r|   )r   )N),Ú__doc__ÚsysÚosr,   Újsonr   ÚmathÚurllib.requestÚurllibÚurllib.errorÚwarningsÚfilterwarningsÚpathÚdirnameÚabspathÚ__file__Ú_HEREÚinsertrG   Úcrawler_libr   r   ÚDOMAINrX   Úgetenvr   rx   r(   r2   r=   rO   r`   rs   r†   Ú__name__Úmax_pÚargvÚargsr{   rƒ   Úargre   ÚintrE   © r3   r'   ú<module>r£      sŒ  ðñ÷ P× O× O× OÓ OØ €× Ñ ˜Ô !à
�‰�‰˜Ÿ™Ÿ™¨Ó1Ó2€Ø ‡�‡���5Ô Ø ‡�‡���2—7‘7—<‘<  t¨YÓ7Ô 8å "à3€	Ø	€Ø%€ØˆB�I‰I�kÐ#4Ó5€	à€	ò4òlòð( (0ó ó&òP4ól6\ðp ˆzÒØ€EØ�8‰8�A�Bˆ<€DÙ˜D“/ò ‰ˆˆ3Ø�)Ó  A¡©¨D«	Ó 1ðÙ˜D  Q¡™KÓ(‘ðð €}Øò 	ˆCðÙ˜CŸJ™J s›OÓ,�Ùð	ñ �%Öð! øðÙûðÙús   Ä4E1ÅE8Å1E5Å8E<