Ë
    ¸¬uj‘  ã                   ó^  — d Z ddlZddlZddlZddlm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   «        ej                  dd«      ZdZd	Zd
ZdddddœZd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u:   å»¶å®‰å¸‚è¡Œæ”¿å®¡æ‰¹æœ�åŠ¡å±€-çŽ¯è¯„å…¬ç¤º(å�—ç�†) çˆ¬è™«é    N)ÚBeautifulSoupé   z[AutoPg] max_pages=Ú	SEARCH_DBz/root/search.dbu3   å»¶å®‰å¸‚è¡Œæ”¿å®¡æ‰¹æœ�åŠ¡å±€-çŽ¯è¯„å…¬ç¤º(å�—ç�†)zhttps://spj.yanan.gov.cné   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.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.8zhttps://spj.yanan.gov.cn/)z
User-AgentÚAcceptzAccept-LanguageÚRefererc                 óª   — 	 t        j                  | t        d¬«      }d|_        |j                  S # t
        $ r}t        d|› �«       Y d}~yd}~ww xY w)u   å¸¦æµ�è§ˆå™¨å¤´èŽ·å�–é¡µé�¢é   )ÚheadersÚtimeoutzutf-8u     â�Œ è¯·æ±‚å¤±è´¥: N)ÚrequestsÚgetÚHEADERSÚencodingÚtextÚ	ExceptionÚprint)ÚurlÚrÚes      ú#/root/gov_crawler/crawl_yanan_sl.pyÚfetchr      sL   € ðÜ�L‰L˜¤g°rÔ:ˆØˆŒ
Ø�v‰vˆøÜò ÜÐ$ Q CÐ(Ô)Üûðús   ‚.1 ±	AºAÁAc                 óú  — g }t        | d«      }|j                  dd¬«      }|s|S |j                  d«      }|s|S |j                  dd¬«      D ]ª  }|j                  d	«      }|sŒ|j                  d
d«      }|j                  dd«      xs |j	                  d¬«      }|r|sŒT|j                  d«      r	t        |z   n|}	|j                  d«      }
|
r|
j	                  d¬«      nd}|j                  ||	|f«       Œ¬ |S )u6   è§£æž�åˆ—è¡¨é¡µï¼Œè¿”å›ž [(title, url, date_str), ...]úhtml.parserÚdivzm-lst36)Úclass_ÚulÚliF)Ú	recursiveÚaÚhrefÚ ÚtitleT)Ústripú/Úspan)r   ÚfindÚfind_allr   Úget_textÚ
startswithÚBASE_URLÚappend)ÚhtmlÚitemsÚsoupÚlst_divr   r   r    r!   r#   Ú
detail_urlÚ	date_spanÚdate_strs               r   Úparse_list_pager4   '   s   € à€EÜ˜˜}Ó-€Dà�i‰i˜ iˆiÓ0€GÙØˆØ	�‰�dÓ	€BÙØˆØ�k‰k˜$¨%ˆkÓ0ò 4ˆØ�G‰G�C‹LˆÙØØ�u‰u�V˜RÓ ˆØ—‘�g˜rÓ"Ò< a§j¡j°t jÓ&<ˆÙ™5Øà(,¯©¸Ô(<”X ’_À$ˆ
ð —G‘G˜F“Oˆ	Ù5>�9×%Ñ%¨DÐ%Ô1ÀBˆà�‰�e˜Z¨Ð2Õ3ð4ð  €Ló    c                 ót  — t        | d«      }d}|j                  dddi¬«      }|r|j                  d«      r|d   }d}|j                  dddi¬«      }|r=|j                  d«      r,t        j                  d	|d   «      }|r|j                  d
«      }d}|j                  ddd¬«      }|rt        |«      }|||fS )u7   è§£æž�è¯¦æƒ…é¡µï¼Œè¿”å›ž (title, content, publish_date)r   r"   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentÚPubDatez(\d{4}-\d{2}-\d{2})r   r   zm-txt-articleÚarticle)r   Úid)r   r'   r   ÚreÚsearchÚgroupÚstr)	r-   r/   r#   r7   Úpublish_dateÚ	meta_dateÚmr;   Úcontent_divs	            r   Úparse_detailrG   E   sÊ   € ä˜˜}Ó-€Dð €EØ�9‰9�V F¨NÐ#;ˆ9Ó<€DÙ�—‘˜Ô#Ø�Y‘ˆð €LØ—	‘	˜&¨°Ð(;�	Ó<€IÙ�Y—]‘] 9Ô-Ü�I‰IÐ,¨i¸	Ñ.BÓCˆÙØŸ7™7 1›:ˆLð €GØ—)‘)˜E¨/¸i�)ÓH€KÙÜ�kÓ"ˆà�'˜<Ð'Ð'r5   c                  óÜ  — d } 	 dd l }|j                  t        «      } | j                  «       }|j	                  d«       d}d}t        dt        t        t        xs t        «      dz   «      D �]U  }t        › d|› d�}t        |«      }|sŒt        |«      }|st        d|› dt        › d�«       ŒBt        d|› dt        › d	t        |«      › d
�«       t        |d«      D ]ã  \  }	\  }
}}|j	                  d|f«       |j                  «       r|dz  }Œ3t        |«      }|s"t        d|	› dt        |«      › d|
d d › d�«       Œbt!        |«      \  }}}|s|}	 |j	                  d|
||t"        |f«       | j%                  «        |dz  }|rt        |«      nd}|dk  rdnd}t        d|	› dt        |«      › d|
d d › d|› d|› �
«       Œå �ŒX t        d|› d|› �«       |j	                  dt"        f«       |j                  «       d   }t        d|› d�«       | r| j)                  «        y y # t&        $ r(}t        d|	› dt        |«      › d|› �«       Y d }~�Œsd }~ww xY w# | r| j)                  «        w w xY w)Nr   zðCREATE TABLE IF NOT EXISTS gov_raw (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            title TEXT,
            content TEXT,
            source_url TEXT UNIQUE,
            site_name TEXT,
            publish_date TEXT
        )r   z/gkgs/sthj/hpgs/sl/z.htmlu   ç¬¬r%   u   é¡µ: æ— æ•°æ�®u   é¡µ: u   æ�¡z+SELECT id FROM gov_raw WHERE source_url = ?z  [u   ] â�Œ è¯¦æƒ…å¤±è´¥: r
   z...zjINSERT OR IGNORE INTO gov_raw (title, content, source_url, site_name, publish_date) VALUES (?, ?, ?, ?, ?)éÈ   u    âš ï¸� å†…å®¹è¿‡çŸ­r"   u   ] âœ… é#   z... (ú)u   ] â�Œ å…¥åº“å¤±è´¥: u   
âœ… çˆ¬å�–å®Œæˆ�ï¼�æ–°å¢ž: u   , è·³è¿‡(å·²å­˜åœ¨): z0SELECT COUNT(*) FROM gov_raw WHERE site_name = ?u     å…± u    æ�¡)Úsqlite3Úconnectr   ÚcursorÚexecuteÚrangeÚminÚ	MAX_PAGESÚ_MAX_PGr+   r   r4   r   ÚlenÚ	enumerateÚfetchonerG   Ú	SITE_NAMEÚcommitr   Úclose)ÚconnrL   ÚcÚ	total_newÚtotal_skippedÚpageÚpage_urlr-   r.   Úir#   r1   Údate_from_listÚdetail_htmlÚ_r;   rC   Úcontent_lenÚstatusr   Útotals                        r   Úcrawlrg   `   sª  € Ø€DðBÛØ�‰œyÓ)ˆØ�K‰K‹MˆØ	�	‰	ð ô 	ð ˆ	Øˆä˜!œS¤¬GÒ,@´yÓAÀ!ÑCÓDó )	IˆDÜ"˜Ð#6°t°f¸EÐBˆHÜ˜“?ˆDÙØä# DÓ)ˆEÙÜ˜˜D˜6 ¤9 +¨^Ð<Ô=Øä�C˜�v˜Qœy˜k¨¬s°5«z¨l¸#Ð>Ô?ä:CÀEÈ1Ó:Mò IÑ6�Ñ6�E˜: ~à—	‘	ÐGÈ*ÈÔWØ—:‘:”<Ø! QÑ&�MØô $ JÓ/�Ù"Ü˜C ˜s !¤C¨£J <Ð/CÀEÈ#È2ÀJÀ<ÈsÐSÔTØä+7¸Ó+DÑ(��7˜LÙ#Ø#1�LðIØ—I‘Ið EØ ¨´YÀÐMôð —K‘K”MØ ‘N�IÙ29¤# g¤,¸q�KØ7BÀSÒ7HÑ3Èb�FÜ˜C ˜s !¤C¨£J <¨v°e¸C¸R°j°\ÀÀ|ÀnÐTUÐV\ÐU]Ð^Õ_ò5Ið)	IôV 	Ð-¨i¨[Ð8MÈmÈ_Ð]Ô^Ø	�	‰	ÐDÄyÀlÔSØ—
‘
“˜Q‘ˆÜ��u�g˜TÐ"Ô#ñ Ø�J‰J�Lð øô !ò IÜ˜C ˜s !¤C¨£J <Ð/CÀAÀ3ÐG×HÒHûðIûñ Ø�J‰J�Lð ús8   „EI ÅA.H"Æ?AI È"	IÈ+IÉI ÉIÉI ÉI+Ú__main__)Ú__doc__r   r?   ÚosÚbs4r   ÚsysÚ_SYSrT   ÚargvÚisdigitÚintrS   r   rB   Úgetenvr   rW   r+   rR   r   r   r4   rG   rg   Ú__name__© r5   r   ú<module>rt      sÊ   ðá @Û Û 	Û 	Ý ó Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/àˆB�I‰I�kÐ#4Ó5€	ØA€	Ø%€Ø€	ð DØZØ0Ø*ñ	€òòò<(ò6DðN ˆzÒÙ	…Gð r5   