Ë
    V_Šj®  ã                   óÈ   — 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ej                  j                  dd«      Z	ddddœZ
d	Zd
ZdZdZdZd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)ue   
è�¥å�£ä»™äººå²›èƒ½æº�åŒ–å·¥åŒº - é¡¹ç›®çŽ¯ä¿�å…¬ç¤º
http://xrd.yingkou.gov.cn/009/009004/about.html
é    NÚDB_PATHz/root/search.dbzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zJtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languageu1   è�¥å�£ä»™äººå²›èƒ½æº�åŒ–å·¥åŒº-é¡¹ç›®çŽ¯ä¿�å…¬ç¤ºu   è�¥å�£z$http://xrd.yingkou.gov.cn/009/009004é   é   c                 ó6   — | dk(  r	t         dz   S t         d| z  z   S )Né   z/about.htmlz/about.html?pageIndex=%d)ÚBASE_URL)Úpages    ú/root/gov_crawler/crawl_xrd.pyÚget_list_urlr      s%   € Øˆq‚yÜ˜-Ñ'Ð'äÐ4°tÑ;Ñ;Ð;ó    c                 ób   — t        j                  | t        dd¬«      }d|_        |j                  S )Né   T)ÚheadersÚtimeoutÚallow_redirectszutf-8)ÚrequestsÚgetÚHEADERSÚencodingÚtext)ÚurlÚrs     r   Ú
fetch_pager      s&   € Ü�‰�S¤'°2ÀtÔL€AØ€A„JØ�6‰6€Mr   c                 óž  — g }t        j                  d| t         j                  «      }|s|S |j                  d«      }t        j                  d|t         j                  «      D �]g  }|j                  d«      }t        j                  d|«      }|sŒ.|j                  d«      }t        j                  d|«      }|r|j                  d«      j                  «       nd}	|	s[t        j                  d|t         j                  «      }
|
r4t        j                  dd|
j                  d«      «      j                  «       }	|	r|sŒÚt        j                  d	|«      }|r|j                  d«      j                  «       nd}|j                  d
«      rd|z   }n|j                  d«      sd|z   }|j                  d«      s�ŒS|j                  ||	|dœ«       �Œj |S )Nz%<ul[^>]*id="infolist"[^>]*>(.*?)</ul>r   z<li[^>]*>(.*?)</li>z<a[^>]*href="([^"]*)"[^>]*>ztitle=[\'"]([^\'"]*)[\'"]Ú z<a[^>]*>(.*?)</a>ú<[^>]+>z1<span[^>]*class="ewb-list-date"[^>]*>(.*?)</span>ú/úhttp://xrd.yingkou.gov.cnÚhttpúhttp://xrd.yingkou.gov.cn/)r   ÚtitleÚdate)	ÚreÚsearchÚDOTALLÚgroupÚfinditerÚstripÚsubÚ
startswithÚappend)ÚhtmlÚitemsÚmÚul_htmlÚliÚli_htmlÚar   Útitle_mr"   Útxt_mÚdate_mÚdate_strs                r   Úextract_list_itemsr8   #   s}  € Ø€EÜ
�	‰	Ð:¸DÄ"Ç)Á)ÓL€AÙØˆØ�g‰g�a‹j€Gä�k‰kÐ0°'¼2¿9¹9ÓEó EˆØ—(‘(˜1“+ˆÜ�I‰IÐ4°gÓ>ˆÙØØ�g‰g�a‹jˆä—)‘)Ð8¸'ÓBˆÙ,3�—‘˜aÓ ×&Ñ&Ô(¸ˆÙä—I‘IÐ2°G¼R¿Y¹YÓGˆEÙÜŸ™˜z¨2¨u¯{©{¸1«~Ó>×DÑDÓF�Ù™CØä—‘ÐOÐQXÓYˆÙ.4�6—<‘< “?×(Ñ(Ô*¸"ˆà�>‰>˜#ÔØ-°Ñ3‰CØ—‘ Ô'Ø.°Ñ4ˆCØ�~‰~Ð9Ô:ÙØ�‰˜S¨5¸(ÑCÖDð5Eð6 €Lr   c           
      óP  — d}t        j                  d| t         j                  «      }|r|j                  d«      j	                  «       }g }g }t        j                  d| t         j                  «      }|�r«|j                  d«      }t        j
                  d|t         j                  «      D ]o  }t        j                  dd|j                  d«      «      j	                  «       }t        j                  dd|«      j	                  «       }|sŒ_|j                  |«       Œq t        j
                  d	|t         j                  «      D �]
  }	g }
t        j
                  d
|	j                  d«      t         j                  «      D ]«  }g }t        j
                  d|j                  d«      t         j                  «      D ]G  }t        j                  dd|j                  d«      «      j	                  «       }|j                  |«       ŒI |sŒ†|
j                  ddj                  |«      z   dz   «       Œ­ |
sŒë|j                  dj                  |
«      «       �Œ t        j
                  d|t         j                  «      D ]¨  }|j                  d«      }t        j                  dd|j                  d«      «      j	                  «       }|st        j                  j                  |«      }|j                  d«      s|j                  d«      rd|z   nd|z   }|j                  ||dœ«       Œª dj                  |«      }t        |j	                  «       «      dk  r:dj                  ||xs d«      }|r"|D ]  }|dj                  |d   |d   «      z  }Œ |rt        j                   |d¬«      nd}|||d œS )!Nr   z&<h3[^>]*id="ivs_title"[^>]*>(.*?)</h3>r   z5<div[^>]*class="ewb-article-content"[^>]*>(.*?)</div>z<p[^>]*>(.*?)</p>r   z\s+ú z<table[^>]*>(.*?)</table>z<tr[^>]*>(.*?)</tr>z<t[dh][^>]*>(.*?)</t[dh]>z| z | z |ú
zG<a[^>]*href="([^"]*\.(?:pdf|doc|docx|xls|xlsx|zip|rar))"[^>]*>(.*?)</a>é   r    r   r   r!   )Únamer   z

é   z<p><a href="{}">{}</a></p>u   æ–‡ä»¶u    
ðŸ“Ž <p><a href="{}">{}</a></p>r   r=   F)Úensure_ascii)r"   ÚcontentÚattachments)r$   r%   r&   r'   r)   r(   r*   r,   ÚjoinÚosÚpathÚbasenamer+   ÚlenÚformatÚjsonÚdumps)r-   Ú
source_urlr"   r/   Úcontent_partsrA   Úcontent_htmlÚpÚtxtÚtableÚrowsÚtrÚcellsÚtdÚ	cell_textr3   ÚfurlÚfnamer@   ÚattÚattachments_jsons                        r   Úextract_contentrY   H   s  € Ø€EÜ
�	‰	Ð;¸TÄ2Ç9Á9ÓM€AÙØ—‘˜“
× Ñ Ó"ˆà€MØ€Kä
�	‰	ÐJÈDÔRT×R[ÑR[Ó\€AÚØ—w‘w˜q“zˆÜ—‘Ð1°<ÄÇÁÓKò 	*ˆAÜ—&‘&˜ R¨¯©°«Ó4×:Ñ:Ó<ˆCÜ—&‘&˜  cÓ*×0Ñ0Ó2ˆCÚØ×$Ñ$ SÕ)ð		*ô
 —[‘[Ð!=¸|ÌRÏYÉYÓWó 
	6ˆEØˆDÜ—k‘kÐ"8¸%¿+¹+Àa».Ì"Ï)É)ÓTò A�Ø�ÜŸ+™+Ð&BÀBÇHÁHÈQÃKÔQS×QZÑQZÓ[ò ,�BÜ "§¡ z°2°r·x±xÀ³{Ó C× IÑ IÓ K�IØ—L‘L Õ+ð,ò Ø—K‘K  u§z¡z°%Ó'8Ñ 8¸4Ñ ?Õ@ðAò Ø×$Ñ$ T§Y¡Y¨t£_Ö5ð
	6ô —‘ÐgÐiuÔwy÷  xAñ  xAó  Bò 	=ˆAØ—7‘7˜1“:ˆDÜ—F‘F˜: r¨1¯7©7°1«:Ó6×<Ñ<Ó>ˆEÙÜŸ™×(Ñ(¨Ó.�Ø—?‘? 6Ô*Ø?C¿¹ÈsÔ?SÐ3°dÒ:ÐYuÐx|ÑY|�Ø×Ñ¨°dÑ;Õ<ð	=ð �k‰k˜-Ó(€GÜ
ˆ7�=‰=‹?Ó˜bÒ Ø.×5Ñ5°jÀ%ÒBSÈ8ÓTˆÙØ"ò _�ØÐ>×EÑEÀcÈ%ÁjÐRUÐV\ÑR]Ó^Ñ^‘ð_ñ GR”t—z‘z +¸EÕBÐWYÐØ wÐ?OÑPÐPr   c                  ó
  — dd l } dt        j                  v xs dt        j                  v }|rdnt        }| j	                  t
        d¬«      }|j                  d«       |j                  d«       |j                  «       }g }t        d|dz   «      D ]„  }t        |«      }t        d	|› d
|› d|› �«       t        |«      }t        |«      }	|	st        d«        n@t        dt        |	«      › d�«       |j                  |	«       t        j                   d«       Œ† t        dt        |«      › �«       d}
d}t#        |«      D �]  \  }}|dz  dk(  rt        d|› d
t        |«      › �d¬«       |j                  d|d   f«       |j%                  «       r|dz  }ŒWt        |d   «      }t'        ||d   «      }|d   dz   t(        z   dz   |d   r|d   d d ndz   d d }|j                  d|d   xs |d   |d   ||j+                  dd«      |d   t(        |d   t,        |d   f	«       |
dz  }
|
dz  dk(  r|j/                  «        t        j                   d «       �Œ |j/                  «        |j1                  «        t        d!|
› d"|› �«       y )#Nr   z--max-pagesÚincrementalr   r   )r   zPRAGMA journal_mode=WALzPRAGMA busy_timeout=15000z[Page r   z] z  No items found, stoppingz  Found z itemsz
Total items: é
   z  T)Úflushz)SELECT id FROM gov_raw WHERE page_url = ?r   r"   r:   r@   éÈ   r   iô  z§INSERT INTO gov_raw (title, content, summary, publish_date, page_url, site_name, attachments, group_name, source_url)
               VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)r#   rA   r>   g      à?z
Done. Inserted: z, Existing: )Úsqlite3ÚsysÚargvÚ	MAX_PAGESÚconnectr   ÚexecuteÚcursorÚranger   Úprintr   r8   rF   ÚextendÚtimeÚsleepÚ	enumerateÚfetchonerY   Ú	SITE_NAMEr   ÚGROUPÚcommitÚclose)r_   Úis_incrementalÚ	max_pagesÚconnÚcÚ	all_itemsr
   r   r-   r.   ÚinsertedÚexistingÚiÚitemÚresultÚsummarys                   r   Úmainr|   x   s�  € Ûà"¤c§h¡hÐ.ÒK°-Ä3Ç8Á8Ð2K€NÙ#‘¬€Ià�?‰?œ7¨Bˆ?Ó/€DØ‡L�LÐ*Ô+Ø‡L�LÐ,Ô-Ø�‰‹€Aà€IÜ�a˜ Q™Ó'ò 
ˆÜ˜4Ó ˆÜ��t�f˜A˜i˜[¨¨3¨%Ð0Ô1Ü˜#‹ˆÜ" 4Ó(ˆÙÜÐ.Ô/ÙÜ�œ˜U›˜ FÐ+Ô,Ø×Ñ˜ÔÜ�
‰
�1�ð
ô 
ˆOœC 	›NÐ+Ð
,Ô-à€HØ€HÜ˜YÓ'ó  ‰ˆˆ4Øˆr‰6�QŠ;Ü�B�q�c˜œ3˜y›>Ð*Ð+°4Õ8à	�	‰	Ð=ÀÀUÁ¸~ÔNØ�:‰:Œ<Ø˜‰MˆHØä˜$˜u™+Ó&ˆÜ   t¨E¡{Ó3ˆà˜'‘? SÑ(¬9Ñ4°sÑ:ÐY_Ð`iÒYj¸fÀYÑ>OÐPTÐQTÑ>UÐprÑsÐuyÐvyÐzˆà	�	‰	ð5ð �w‘Ò0 4¨¡=Ø�yÑ!ØØ—‘˜ Ó$Ø�U‘ÜØ�}Ñ%ÜØ�U‘ð
ô	
ð 	�A‰ˆØ�b‰=˜AÒØ�K‰KŒMÜ�
‰
�3ŽðA ðD 	‡K�K„MØ‡J�J„LÜ	Ð˜x˜j¨°X°JÐ
?Õ@r   Ú__main__)Ú__doc__r$   r`   rC   rH   ri   r   Úenvironr   r   r   rm   rn   r	   ÚPER_PAGErb   r   r   r8   rY   r|   Ú__name__© r   r   ú<module>rƒ      sŒ   ðñ÷ )× (× (à
�*‰*�.‰.˜Ð$5Ó
6€ð DØZØ0ñ€ð
 @€	Ø€Ø1€Ø€Ø€	ò<òò"òJ-Qò`@AðF ˆzÒÙ…Fð r   