Ë
    ¸¬ujð  ã                   óz  — 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mZ ddlm	Z	 ddl
Z
ddlmZ ddlZ ej                  d«       dZdZd	Zd
ZdZde› d�dœZdZd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zedk(  rI ej:                  «       Zej?                  de d¬«       ejC                  «       Z" ee"jF                  ¬«       yy)u-  
å®œå…´å¸‚äººæ°‘æ”¿åºœ - å…¬å‘Šå…¬ç¤ºçˆ¬è™«
URL: https://www.yixing.gov.cn/zgyx/zzxx/gggs/index.shtml
CMS: å®œå…´ç«™ç¾¤ç³»ç»Ÿ
åˆ—è¡¨: /zgyx/zzxx/gggs/index.shtml (page1), index_{N}.shtml (page 2-7)
è¯¦æƒ…: /doc/YYYY/MM/DD/ID.shtml

å…± ~94 æ�¡ (6é¡µx15 + 4)
æ—¥è·‘: --max-pages 1 (å¢žé‡�å�–æœ€æ–°é¡µ)
é    N)Údatetime)Úurljoin)ÚBeautifulSoupÚignorezhttps://www.yixing.gov.cnu   å®œå…´å¸‚äººæ°‘æ”¿åºœu   å…¬å‘Šå…¬ç¤ºu   åŽ¿åŒºz/mnt/data/search.dbzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36ú/zgyx/zzxx/gggs/index.shtml)z
User-AgentÚRefereré   c                 ój  — | sy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 )
u
   æ¸…ç�†HTMLÚ z\sstyle="[^"]*"z<span[^>]*>|</span>z<strong[^>]*>|</strong>z<b[^>]*>|</b>z<font[^>]*>|</font>z<o:p[^>]*>|</o:p>z\n{3,}z

)ÚreÚsubÚstrip)ÚhtmlÚcleaneds     ú&/root/gov_crawler/crawl_yixing_gggs.pyÚclean_content_htmlr   $   s˜   € áØÜ�f‰fÐ'¨¨TÓ2€GÜ�f‰fÐ+¨R°Ó9€GÜ�f‰fÐ/°°WÓ=€GÜ�f‰fÐ% r¨7Ó3€GÜ�f‰fÐ+¨R°Ó9€GÜ�f‰fÐ)¨2¨wÓ7€GÜ�f‰f�Y ¨Ó0€GØ�=‰=‹?Ðó    c                 ó6   — | dk(  r	t         › d�S t         › d| › d�S )u   èŽ·å�–åˆ—è¡¨é¡µ URLé   r   z/zgyx/zzxx/gggs/index_z.shtml)ÚBASE_URL)Úpages    r   Úget_page_urlr   2   s+   € àˆq‚yÜ�Ð6Ð7Ð7ÜˆZÐ-¨d¨V°6Ð:Ð:r   c                 ót  — t        | «      }g }	 t        j                  |t        d¬«      }d|_        t        |j                  d«      }|j                  d«      }|s|S |j                  dd¬«      D ]š  }|j                  d	«      }|j                  d
«      }|sŒ(|j                  dd«      }	|	r|	j                  d«      rŒNt        t        |	«      }
|j                  d¬«      }|r|j                  d¬«      nd}|j                  |
||dœ«       Œœ 	 |S # t        $ r}t!        d| › d|› �d¬«       Y d}~|S d}~ww xY w)u   è§£æž�åˆ—è¡¨é¡µé   ©ÚheadersÚtimeoutúutf-8úhtml.parserzul.contlistÚliF)Ú	recursiveÚaÚspanÚhrefr   Ú
javascriptT©r   )ÚurlÚtitleÚdateu     [é”™è¯¯] åˆ—è¡¨é¡µ u    è¯·æ±‚å¤±è´¥: ©ÚflushN)r   ÚrequestsÚgetÚHEADERSÚencodingr   ÚtextÚ
select_oneÚfind_allÚfindÚ
startswithr   r   Úget_textÚappendÚ	ExceptionÚprint)r   r'   ÚitemsÚrespÚsoupÚulr    r"   r#   r$   Úfull_urlr(   r)   Úes                 r   Ú
fetch_listr?   9   s3  € ä
�tÓ
€CØ€EðLÜ�|‰|˜C¬¸"Ô=ˆØˆŒÜ˜TŸY™Y¨Ó6ˆØ�_‰_˜]Ó+ˆÙØˆLØ—+‘+˜d¨e�+Ó4ò 	JˆBØ—‘˜“ˆAØ—7‘7˜6“?ˆDÙØØ—5‘5˜ Ó$ˆDÙ˜4Ÿ?™?¨<Ô8ØÜœx¨Ó.ˆHØ—J‘J T�JÓ*ˆEá04�4—=‘= t�=Ô,¸"ˆDØ�L‰L °EÀ4ÑHÕIñ	Jð €Løô ò LÜÐ% d V¨?¸1¸#Ð>Àd×KÑKØ€LûðLús   �AD ÁB0D Ä	D7ÄD2Ä2D7c                 ó|  — 	 t        j                  | t        d¬«      }d|_        t	        |j
                  d«      }|j                  d«      }|sy|j                  d«      D ]<  }|j                  dd«      }|sŒ|j                  d	«      rŒ*t        t        |«      |d<   Œ> |j                  d
«      D ]N  }|j                  dd«      }|sŒ|j                  d	«      rŒ*|j                  d«      rŒ<t        t        |«      |d<   ŒP t        t        |«      «      S # t        $ r}t        d| › d|› �d¬«       Y d}~yd}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µæ­£æ–‡r   r   r   r   zdiv.article_contr   ÚimgÚsrcÚhttpr"   r$   r%   u!     [é”™è¯¯] è¯¦æƒ…é¡µèŽ·å�–å¤±è´¥ z: Tr*   N)r,   r-   r.   r/   r   r0   r1   r2   r4   r   r   r   Ústrr7   r8   )	Ú
detail_urlr:   r;   Úcontent_divrA   rB   r"   r$   r>   s	            r   Úfetch_detailrG   V   s#  € ðÜ�|‰|˜J´ÀÔDˆØˆŒÜ˜TŸY™Y¨Ó6ˆð —o‘oÐ&8Ó9ˆÙØð ×'Ñ'¨Ó.ò 	4ˆCØ—'‘'˜% Ó$ˆCÚ˜3Ÿ>™>¨&Õ1Ü$¤X¨sÓ3��E’
ð	4ð ×%Ñ% cÓ*ò 	4ˆAØ—5‘5˜ Ó$ˆDÚ˜DŸO™O¨FÕ3¸D¿O¹OÈLÕ<YÜ#¤H¨dÓ3��&’	ð	4ô
 "¤# kÓ"2Ó3Ð3øäò ÜÐ1°*°¸RÀ¸sÐCÈ4ÕPÜûðús<   ‚AD Á(D Á8D Â
=D ÃD ÃD Ã,(D Ä	D;ÄD6Ä6D;c                 óv  — 	 t        j                  | t        d¬«      }d|_        t	        |j
                  d«      }|j                  d«      }|r|j                  d¬«      nd}d}|j                  d	«      }|r9|j                  «       }t        j                  d
|«      }|r|j                  d«      }||fS #  Y yxY w)u3   ä»Žè¯¦æƒ…é¡µæ��å�–æ ‡é¢˜å’Œæ—¥æœŸï¼ˆå®Œæ•´æ ‡é¢˜ï¼‰r   r   r   r   zdiv.m_article h1Tr&   r   zdiv.article_mesu"   æ—¥æœŸ[ï¼š:]\s*(\d{4}-\d{2}-\d{2})r   )r   r   )r,   r-   r.   r/   r   r0   r1   r5   r   ÚsearchÚgroup)	rE   r:   r;   Úh1r(   r)   Úmesr0   Úms	            r   Úextract_detail_inforN   s   s®   € ðÜ�|‰|˜J´ÀÔDˆØˆŒÜ˜TŸY™Y¨Ó6ˆð �_‰_Ð/Ó0ˆÙ+-�—‘ $�Ô'°2ˆð ˆØ�o‰oÐ/Ó0ˆÙØ—<‘<“>ˆDÜ—	‘	Ð?ÀÓFˆAÙØ—w‘w˜q“z�à�dˆ{ÐøðÙús   ‚B1B4 Â4B8c                 óÄ  — t        j                  «       }|j                  j                  t        «       t        j                  t        «      }|j                  d«       |j                  d«       t        «       }|j                  dt        f«      }|D ]  }|j                  |d   «       Œ t        dt        |«      › d�d¬«       t        }| rt        | t        «      }d}d}d}	t!        d	|d	z   «      D �]  }
t        d
|
› d|› d�dd¬«       t#        |
«      }|st        dd¬«       Œ4d}|D �]–  }|d   }||v r|d	z  }Œ|d   }|d   }t%        |«      \  }}d|vr|n|xs |}|xs |}|s|d	z  }ŒEt'        |«      }|rt        |j)                  «       «      dk  r	d|› d|› d�}t+        j,                  dd|«      }t+        j,                  dd|«      j)                  «       dd }t/        t+        j0                  d||z   «      «      }	 |j                  dt        |||dd ||dd |d t2        t4        d!|v rd	ndf«      }|j6                  dkD  ru|j                  d"|f«      j9                  «       }|r&|d   }	 |j                  d#||dd t        |dd$ f«       |j                  |«       |j=                  «        |d	z  }|d	z  }n|d	z  }�Œ™ t        d&|› d'|› d(�d¬«       |
|k  s�ŒítA        jB                  d)«       �Œ |jE                  «        t        d*|› d+|› d,|	› �d¬«       |S # t
        j:                  $ r Y Œ¤w xY w# t>        $ r}t        d%dd¬«       |	d	z  }	Y d}~�Œ0d}~ww xY w)-u   ä¸»çˆ¬å�–é€»è¾‘zPRAGMA journal_mode=WALzPRAGMA synchronous=NORMALz.SELECT page_url FROM gov_raw WHERE site_name=?r   u   å·²æœ‰ u    æ�¡å®œå…´è®°å½•Tr*   r   u   [ç¬¬ ú/u    é¡µ] r   )Úendr+   u	   æ— æ•°æ�®r'   r(   r)   z...é   u   <p>è¯¦æƒ…è§�åŽŸæ–‡ï¼š<a href='z'>z</a></p>z<[^>]+>ú z\s+Ni,  u   é™„ä»¶|ä¸‹è½½|æ–‡ä»¶zõINSERT OR IGNORE INTO gov_raw
                    (site_name, source_url, page_url, title, publish_date,
                     summary, content, status, category, group_name, has_table)
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)iô  Úactivez<tablez'SELECT id FROM gov_raw WHERE page_url=?zLINSERT INTO gov_search(rowid, title, site_name, summary) VALUES (?, ?, ?, ?)éÈ   Úxú+u    æ�¡ (ç´¯è®¡ ú)g      à?u   
å®Œæˆ�! æ–°å¢ž u	   , è·³è¿‡ u	   , é”™è¯¯ )#r,   ÚSessionr   Úupdater.   Úsqlite3ÚconnectÚDB_PATHÚexecuteÚsetÚ	SITE_NAMEÚaddr8   ÚlenÚMAX_TOTAL_PAGESÚminÚranger?   rN   rG   r   r   r   ÚboolrI   ÚCATEGORYÚGROUPÚrowcountÚfetchoneÚIntegrityErrorÚcommitr7   ÚtimeÚsleepÚclose)Ú	max_pagesÚsÚdbÚexistingÚcurÚrowÚpages_to_fetchÚ	total_newÚ
total_skipÚtotal_errorr   r9   Úpage_newÚitemr=   Ú
list_titleÚ	list_dateÚdetail_titleÚdetail_dater(   Úpublish_dateÚbodyÚsummaryÚhas_attachmentsÚridr>   s                             r   Úcrawlr…   Œ   s£  € ä×ÑÓ€AØ‡I�I×Ñ”WÔä	�‰œÓ	!€BØ‡J�JÐ(Ô)Ø‡J�JÐ*Ô+ä‹u€HØ
�*‰*ÐEÌ	À|Ó
T€CØò ˆØ�‰�S˜‘VÕðô 
ˆG”C˜“M�?Ð"2Ð
3¸4Õ@ä$€NÙÜ˜Y¬Ó8ˆà€IØ€JØ€Kä�a˜¨!Ñ+Ó,ó EˆÜ��d�V˜1˜^Ð,¨FÐ3¸À4ÕHÜ˜4Ó ˆÙÜ�+ TÕ*ØàˆØó 8	!ˆDØ˜E‘{ˆHà˜8Ñ#Ø˜a‘�
Øà˜g™ˆJØ˜V™ˆIô )<¸HÓ(EÑ%ˆL˜+Ø"'¨zÑ"9‘JÀÒ@ZÐPZˆEØ&Ò3¨)ˆLáØ˜a‘�
Øô   Ó)ˆDÙœ3˜tŸz™z›|Ó,¨rÒ1Ø7¸°zÀÀEÀ7È(ÐS�ä—f‘f˜Z¨¨dÓ3ˆGÜ—f‘f˜V S¨'Ó2×8Ñ8Ó:¸4¸CÐ@ˆGô #¤2§9¡9Ð-DÀeÈgÁoÓ#VÓWˆOð!Ø—j‘jð "@ô ˜x¨°5¸¸#°;ÀØ˜D˜S�M 4¨´8¼UØ! TÑ)‘A¨qðBó�ð —<‘< !Ò#ØŸ*™*Ð%NÐQYÐP[Ó\×eÑeÓg�CÙØ! !™f˜ð!ØŸJ™JÐ'uØ(+¨U°4°C¨[¼)ÀWÈTÈcÀ]Ð'SôUð —L‘L Ô*Ø—I‘I”KØ ‘N�IØ ‘M‘Hà !‘O�Jùðk8	!ôt 	��(�˜=¨¨°1Ð5¸TÕBà�.Ô Ü�J‰J�sŽOðKEðN ‡H�H„JÜ	Ð˜i˜[¨	°*°¸YÀ{ÀmÐ
TÐ\`ÕaØÐøô'  '×5Ñ5ò !Ù ð!ûô ò !Ü˜ ¨$Õ/Ø˜qÑ –ûð!ús=   ÈA,L8É0 LÊ1L8ÌL5Ì2L8Ì4L5Ì5L8Ì8	MÍMÍMÚ__main__z--max-pages)ÚtypeÚdefault)rp   )N)$Ú__doc__ÚsysÚosr   rm   r[   Úargparser   Úurllib.parser   r,   Úbs4r   ÚwarningsÚfilterwarningsr   r`   rg   rh   r]   r.   rc   r   r   r?   rG   rN   r…   Ú__name__ÚArgumentParserÚparserÚadd_argumentÚintÚ
parse_argsÚargsrp   © r   r   ú<module>r™      sÚ   ðñ	÷ ,× +× +Ý Ý  Û Ý ã Ø €× Ñ ˜Ô !à&€Ø#€	Ø€Ø€Ø
€ð DØ�Ð6Ð7ñ€ð
 €òò;òò:ò:ó2aðH ˆzÒØ$ˆX×$Ñ$Ó&€FØ
×Ñ˜¨C¸ÐÔ>Ø×ÑÓ€DÙ	�D—N‘NÖ#ð	 r   