Ë
    ¸¬ujï  ã                   óÞ   — d 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ddl	Z	dZ
 ee
d«      ZdZ e	j                  d	d
«      ZdZddiZdZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u‘   æ·±åœ³ä¸­çŽ¯å�šå®�çŽ¯å¢ƒæŠ€æœ¯æœ‰é™�å…¬å�¸ - ä¿¡æ�¯å…¬å‘Š çˆ¬è™«
https://www.sz-zhonghuan.com/news/notice.html
DCloud SaaS å¹³å�°ï¼Œå…±5é¡µ67æ�¡
é    N)Údatetime)Úurljoin)ÚBeautifulSoupzhttps://www.sz-zhonghuan.comz/news/notice.htmlu   sz-zhonghuan.com-ä¿¡æ�¯å…¬å‘ŠÚ	SEARCH_DBz/root/search.dbÚeiaz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36é   z
2023-06-16c                  ób   — t        j                  t        «      } t         j                  | _        | S )N)Úsqlite3ÚconnectÚDB_PATHÚRowÚrow_factory)Úconns    ú'/root/gov_crawler/crawl_sz_zhonghuan.pyÚget_connr      s!   € Ü�?‰?œ7Ó#€DÜ—{‘{€DÔØ€Kó    c                 óR   — | syt        j                  dd| j                  «       «      S )NÚ z\s+ú )ÚreÚsubÚstrip)Útexts    r   Ú
clean_textr   !   s!   € ÙØÜ�6‰6�&˜#˜tŸz™z›|Ó,Ð,r   c                 ó    — | j                  d«      }|r;|j                  d¬«      }t        j                  d|«      }|r|j	                  d«      S y)u+   ä»Žè¯¦æƒ…é¡µæ��å�–å®Œæ•´æ—¥æœŸ (yyyy-MM-dd)zp.e_timeFormat-4.s_titleT)r   z(\d{4}-\d{2}-\d{2})é   N)Ú
select_oneÚget_textr   ÚmatchÚgroup)Údetail_soupÚdate_elr   Úms       r   Úextract_full_dater$   '   sN   € à×$Ñ$Ð%?Ó@€GÙØ×Ñ dÐÓ+ˆÜ�H‰HÐ+¨TÓ2ˆÙØ—7‘7˜1“:ÐØr   c                 ó  — 	 t        j                  | t        d¬«      }|j                  «        d|_        t        |j                  d
«      }|j                  d«      }t        |r|j                  «       nd«      }t        |«      }|st        d| › �d¬«       y	|j                  d«      }|rt        |«      nd}d}	|r!|j                  dd¬«      }
t        |
dd «      }	||||	fS # t
        $ r}t        d| › d|› �d¬«       Y d}~y	d}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹é   ©ÚheadersÚtimeoutúutf-8u     [WARN] èŽ·å�–è¯¦æƒ…é¡µå¤±è´¥ ú: T©ÚflushN)NNNNúhtml.parserzp.e_text-2.s_titler   u     [WARN] è¯¦æƒ…é¡µæ— æ—¥æœŸ: z!div.e_richText-3.s_title.clearfixr   )Ú	separatorr   éÈ   )ÚrequestsÚgetÚHEADERSÚraise_for_statusÚencodingÚ	ExceptionÚprintr   r   r   r   r   r$   Ústr)ÚurlÚrespÚeÚsoupÚtitle_elÚtitleÚpub_dateÚ
content_elÚcontentÚsummaryr   s              r   Úextract_detailrC   2   s  € ð&Ü�|‰|˜C¬¸"Ô=ˆØ×ÑÔØˆŒô
 ˜Ÿ™ MÓ2€Dð �‰Ð3Ó4€HÜ©h�x×(Ñ(Ô*¸BÓ?€Eô ! Ó&€HÙÜÐ-¨c¨UÐ3¸4Õ@Ø%ð —‘Ð!DÓE€JÙ!+Œc�*Œo°€Gð €GÙØ×"Ñ"¨S¸Ð"Ó=ˆÜ˜T $ 3˜ZÓ(ˆà�(˜G WÐ,Ð,øô5 ò &ÜÐ/°¨u°B°q°cÐ:À$ÕGÜ%ûð&ús   ‚3C" Ã"	DÃ+DÄDc                 óF  — 	 t        j                  | t        d¬«      }|j                  «        d|_        t        |j                  d	«      }|j                  d
«      }g }|D ]y  }|j                  d«      }|sŒ|j                  dd«      }|sŒ,|j                  d«      st        t        |«      }t        |j                  «       «      }	|j!                  |	|dœ«       Œ{ t        dt#        |«      › d�d¬«       |S # t
        $ r}t        d| › d|› �d¬«       g cY d}~S d}~ww xY w)u*   èŽ·å�–åˆ—è¡¨é¡µï¼Œè¿”å›žæ–‡ç« æ�¡ç›®åˆ—è¡¨r&   r'   r*   u      [ERROR] èŽ·å�–åˆ—è¡¨é¡µå¤±è´¥ r+   Tr,   Nr.   zdiv.cbox-3.p_loopitemzp.e_text-7.s_title aÚhrefr   Úhttp)r>   r9   u     åˆ—è¡¨é¡µè§£æž�åˆ° u    æ�¡)r1   r2   r3   r4   r5   r6   r7   r   r   Úselectr   Ú
startswithr   ÚBASE_URLr   r   ÚappendÚlen)
Úpage_urlr:   r;   r<   ÚitemsÚresultsÚitemÚlink_elrE   r>   s
             r   Úfetch_list_pagerQ   U   s  € ðÜ�|‰|˜H¬g¸rÔBˆØ×ÑÔØˆŒô
 ˜Ÿ™ MÓ2€DØ�K‰KÐ/Ó0€Eà€GØò ˆØ—/‘/Ð"8Ó9ˆÙØØ�{‰{˜6 2Ó&ˆÙØØ�‰˜vÔ&Üœ8 TÓ*ˆDä˜7×+Ñ+Ó-Ó.ˆà�‰ØØñ
õ 	ðô" 
Ð!¤# g£, ¨tÐ
4¸DÕAØ€Nøô5 ò ÜÐ0°°
¸"¸Q¸CÐ@ÈÕMØ�	ûðús   ‚3C8 Ã8	D ÄDÄD ÄD c                  ó¤  — t        dt        › d�d¬«       t        dt        › �d¬«       t        «       } | j	                  «       }t        j                  t        d«      j                  «       }d}d}d}t        dt        dz   «      D �]_  }|dk(  rt        }nt        t        d	|› d
�«      }t        d|› dt        › d|› d�d¬«       t        |«      }|st        dd¬«        �n|D ]ÿ  }	|	d   }
|j                  d|
f«       |j!                  «       r|dz  }Œ1t#        |
«      \  }}}}|st        d|	d   d d › d�d¬«       |dz  }Œ`t        j                  |d«      j                  «       }||k  r|dz  }Œ�|s|	d   }t%        |j'                  dd«      «      }	 |j                  d|
||t        ||t(        |f«       | j+                  «        |dz  }t        d|d d › d|› �d¬«       �Œ �Œb | j1                  «        t        d|› d|› d |› d!�d¬«       y # t,        $ r6}t        d|d d › d|› �d¬«       | j/                  «        |dz  }Y d }~�Œgd }~ww xY w)"Nz=== u    çˆ¬è™« ===Tr,   u   æ•°æ�®åº“: z%Y-%m-%dr   r   z/news/notice-z.htmlu	   
--- ç¬¬ ú/u    é¡µ: z ---u     æ— å†…å®¹ï¼Œå�œæ­¢åˆ†é¡µr9   z)SELECT id FROM gov_raw WHERE page_url = ?u     [SKIP] æ— æ—¥æœŸ: r>   é(   z...ú-r   z�INSERT OR IGNORE INTO gov_raw (page_url, title, content, site_name, publish_date, summary, category, date_rank) VALUES (?, ?, ?, ?, ?, ?, ?, ?)z  [OK] z... | u     [ERROR] å…¥åº“å¤±è´¥: r&   z... - u   
=== å®Œæˆ�: æ–°å¢ž u	   , è·³è¿‡ u	   , é”™è¯¯ z ===)r7   Ú	SITE_NAMEr   r   Úcursorr   ÚstrptimeÚCUTOFF_DATEÚdateÚrangeÚ	MAX_PAGESÚLIST_URLr   rI   rQ   ÚexecuteÚfetchonerC   ÚintÚreplaceÚCATEGORYÚcommitr6   ÚrollbackÚclose)r   ÚcurÚ	cutoff_dtÚ	total_newÚ
total_skipÚtotal_errorÚpagerL   ÚarticlesÚartr9   r>   r?   rA   rB   Úpub_dtÚ	date_rankr;   s                     r   Úmainrp   x   s}  € Ü	ˆD”�˜;Ð
'¨tÕ4Ü	ˆKœ�yÐ
!¨Õ.ä‹:€DØ
�+‰+‹-€Cä×!Ñ!¤+¨zÓ:×?Ñ?ÓA€Ià€IØ€JØ€Kä�aœ Q™Ó'ó 3!ˆØ�1Š9Ü‰Häœx¨=¸¸¸eÐ)DÓEˆHä�
˜4˜& ¤) ¨F°8°*¸DÐAÈÕNÜ" 8Ó,ˆáÜÐ.°dÕ;Úàò &	!ˆCØ�e‘*ˆCð �K‰KÐCÀcÀVÔLØ�|‰|Œ~Ø˜a‘�
Øä0>¸sÓ0CÑ-ˆE�8˜W gáÜÐ,¨S°©\¸#¸2Ð->Ð,?¸sÐCÈ4ÕPØ˜qÑ �Øä×&Ñ& x°Ó<×AÑAÓCˆFØ˜	Ò!Ø˜a‘�
ØáØ˜G™�ô ˜H×,Ñ,¨S°"Ó5Ó6ˆIð!Ø—‘ð fØ˜% ¬)°X¸wÌÐR[Ð\ôð —‘”Ø˜Q‘�	Ü˜  c r 
˜|¨6°(°Ð<ÀD×IòE&	!ð3!ðj 	‡J�J„LÜ	Ð! ) ¨I°j°\ÀÈ;È-ÐW[Ð
\ÐdhÖiøô ò !ÜÐ0°°s¸°°¸FÀ1À#ÐFÈdÕSØ—‘”Ø˜qÑ –ûð!ús   ÆAHÈ	IÈ+I
É
IÚ__main__)Ú__doc__r   r   Úurllib.parser   r1   Úbs4r   r
   ÚosrI   r]   rV   Úgetenvr   rb   r3   r\   rY   r   r   r$   rC   rQ   rp   Ú__name__© r   r   ú<module>ry      s£   ðñó
 
Ý Ý  Û Ý Û Û 	à)€Ù�8Ð0Ó1€Ø+€	Ø
ˆ"�)‰)�KÐ!2Ó
3€Ø€àð  Dð€ð €	Ø€òò-òò -òF òFCjðL ˆzÒÙ…Fð r   