Ë
    ¸¬ujH  ã                   ót   — d dl Z d dlZd dlZd dlmZ d dlmZ dZddiZdZdZ	d	„ Z
d
„ Zd„ Zedk(  r e«        yy)é    N)ÚBeautifulSoup)Údatetimez!https://www.zge.gov.cn/zmhd1/myzjz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z/root/search.dbé   c                  ó†  — g } t        t        «      D �]€  }|dk(  r
t        › d�}nt        › d|› d�}	 t        j                  |t
        dd¬«      }d|_        |j                  d	k7  rŒTt        |j                  d
«      }|j                  dd¬«      }|sŒ€d}|j                  d«      D ]Ö  }|j                  d«      }|sŒ|j	                  dd«      }	|j                  d¬«      }
|	sŒ>|
sŒA|	j                  d«      rt        |	dd z   }n#|	j                  d«      rd|	z   }nt        dz   |	z   }|j                  «       }t        j                  d|«      }|r|j!                  d«      nd}| j#                  ||
|dœ«       |dz  }ŒØ t%        d|dz   › d|› d�«       �Œƒ | S # t&        $ r}t%        d|dz   › d|› �«       Y d}~�Œ©d}~ww xY w)z$Get all article URLs from list pagesr   z/index.htmlz/index_z.htmlFé   ©ÚheadersÚverifyÚtimeoutúutf-8éÈ   úhtml.parserÚdivÚ	yjzj_list©Úclass_ÚliÚaÚhrefÚ T)Ústripz./é   Nú/zhttps://www.zge.gov.cnz(\d{4}[-/]\d{2}[-/]\d{2}))ÚurlÚtitleÚdatez  [OK] Page ú: z itemsz  [ERR] Page )ÚrangeÚ	MAX_PAGESÚBASE_URLÚrequestsÚgetÚHEADERSÚencodingÚstatus_coder   ÚtextÚfindÚfind_allÚget_textÚ
startswithÚreÚsearchÚgroupÚappendÚprintÚ	Exception)ÚarticlesÚpage_numr   ÚrÚsoupr   Úcountr   r   r   r   Úfull_urlÚli_textÚ
date_matchÚdate_strÚes                   ú/root/gov_crawler/crawl_zge.pyÚ	get_pagesr<      sÔ  € à€HÜœ)Ó$ó .5ˆØ�qŠ=Ü�J˜kÐ*‰Cä�J˜g h Z¨uÐ5ˆCð(	5Ü—‘˜S¬'¸%ÈÔLˆAØ ˆAŒJØ�}‰} Ò#Øä  §¡¨Ó7ˆDØ—)‘)˜E¨+�)Ó6ˆCÙØàˆEØ—l‘l 4Ó(ò #�Ø—G‘G˜C“L�ÚØŸ5™5 ¨Ó,�DØŸJ™J¨T˜JÓ2�EÚ¢ØŸ?™?¨4Ô0Ü'/°$°q°r°(Ñ':™HØ!Ÿ_™_¨SÔ1Ø'?À$Ñ'F™Hä'/°#¡~¸Ñ'<˜Hð #%§+¡+£-˜Ü%'§Y¡YÐ/KÈWÓ%U˜
Ù:D :×#3Ñ#3°AÔ#6È"˜à Ÿ™Ø#+Ø%*Ø$,ñ)ô ð
  ™
™ð/#ô2 �L ¨!¡ ¨B¨u¨g°VÐ<Ö=ðW.5ð` €Oøô ò 	5Ü�M (¨1¡* ¨R°¨sÐ3×4Ò4ûð	5ús6   ²3FÁ&+FÂ)FÂ<&FÃ#FÃ&B-FÆ	G Æ!F;Æ;G c                 ó@  — 	 t        j                  | t        dd¬«      }d|_        |j                  dk7  st        |j                  «      dk  ryt        |j                  d«      }d	}|j                  d
d¬«      }|r0dj                  d„ |j                  D «       «      j                  «       }|sNdD ]I  }|j                  d
|¬«      }|sŒdj                  d„ |j                  D «       «      j                  «       } n |syt        j                  dd|«      j                  «       }t        |«      dk  ryd}|j                  dddi¬«      }|r'|j                  d«      r|d   j                  «       d	d }||fS # t        $ r}	t        d| d	d › d|	› �«       Y d	}	~	yd	}	~	ww xY w)z.Fetch detail page and extract content and dateFr   r   r   r   iè  )NNr   Nr   Ú
TRS_Editorr   r   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N©Ústr©Ú.0Útags     r;   ú	<genexpr>zget_detail.<locals>.<genexpr>X   s   è ø€ Ò?¨3œc #ŸhÑ?ùó   ‚)Ú
trs_editorÚDetail_textc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr@   rA   rC   s     r;   rF   zget_detail.<locals>.<genexpr>_   s   è ø€ Ò%G°3¤c¨#§hÑ%GùrG   ú<[^>]+>é2   ÚmetaÚnameÚPubDate)ÚattrsÚcontenté
   z  [ERR] éP   r   )r!   r"   r#   r$   r%   Úlenr&   r   r'   ÚjoinÚcontentsr   r+   Úsubr0   r/   )
r   r3   r4   rQ   r   ÚclsÚ	text_onlyÚpub_daterM   r:   s
             r;   Ú
get_detailr[   J   sŠ  € ð'Ü�L‰L˜¤g°eÀRÔHˆØˆŒ
Ø�=‰=˜CÒ¤3 q§v¡v£;°Ò#5Øä˜QŸV™V ]Ó3ˆð ˆØ�i‰i˜ lˆiÓ3ˆÙØ—g‘gÑ?°#·,±,Ô?Ó?×EÑEÓGˆGñ Ø4ò �Ø—i‘i ¨c�iÓ2�ÚØ Ÿg™gÑ%G¸#¿,¹,Ô%GÓG×MÑMÓO�GÙð	ñ Øä—F‘F˜: r¨7Ó3×9Ñ9Ó;ˆ	Üˆy‹>˜BÒØð ˆØ�y‰y˜¨°	Ð':ˆyÓ;ˆÙ�D—H‘H˜YÔ'Ø˜I‘×,Ñ,Ó.¨s°Ð3ˆHà˜Ð Ð øäò Ü�˜˜S˜b˜˜
 " Q CÐ(Ô)Üûðús2   ‚AE6 ÁA9E6 Ã5E6 Ã>3E6 Ä2AE6 Å6	FÅ?FÆFc                  ó   — t        d«       t        d«       t        dt        j                  «       j                  d«      › �«       t        d«       t        d«       t	        «       } t        dt        | «      › d�«       | sy t        d«       t        j                  t        «      }|j                  «       }|j                  d	«       t        d
„ |j                  «       D «       «      }| D �cg c]  }|d   |vsŒ|‘Œ }}t        dt        |«      › dt        | «      › �«       |st        d«       |j                  «        y t        d«       d}d}t        |d«      D ]ý  \  }}	|	d   d d j                  dd«      }
t        d|› dt        |«      › d|
› d�dd¬«       t!        |	d   «      \  }}|st        d«       |dz  }Œc|xs |	d   }t#        j$                  dd|«      j'                  «       }|d d }	 |j                  d |	d   ||	d   |d!|d"f«       |j(                  dkD  r.|j+                  «        |dz  }t        d#t        |«      › d$�«       nt        d%«       Œÿ |j                  «        t        dd› �«       t        d'|› d(|› d)�«       t        d› «       y c c}w # t,        $ r)}t        d&|› �«       |j/                  «        Y d }~�Œod }~ww xY w)*Nz<============================================================u"   å‡†æ ¼å°”æ—— - æ°‘æ„�å¾�é›† çˆ¬è™«u   å�¯åŠ¨æ—¶é—´: z%Y-%m-%d %H:%M:%Su   
[1/3] æŠ“å�–åˆ—è¡¨é¡µ...u     å…±æ‰¾åˆ° u
    æ�¡è®°å½•u   
[2/3] æ£€æŸ¥æ•°æ�®åº“åŽ»é‡�...zSELECT page_url FROM gov_rawc              3   ó&   K  — | ]	  }|d    –— Œ y­w)r   N© )rD   Úrows     r;   rF   zmain.<locals>.<genexpr>‡   s   è ø€ Ò2˜c�3�q•6Ñ2ùs   ‚r   u
     æ–°å¢ž: r   u     æ²¡æœ‰æ–°è®°å½•u   
[3/3] æŠ“å�–è¯¦æƒ…é¡µ...r   r   r   rL   ú
ú z  [z] z...T)ÚendÚflushu   âœ— æ— æ­£æ–‡r   rK   r   r   z¢INSERT OR IGNORE INTO gov_raw 
                (title, content, page_url, summary, site_name, publish_date, category)
                VALUES (?, ?, ?, ?, ?, ?, ?)u   å‡†æ ¼å°”æ——u   çŽ¯è¯„å…¬ç¤ºu   âœ“ (u   å­—)u   â€¢ å·²å­˜åœ¨u   âœ— DBé”™è¯¯: u   å¯¼å…¥å®Œæˆ�: u    æ�¡ (è·³è¿‡ u    æ�¡))r/   r   ÚnowÚstrftimer<   rT   Úsqlite3ÚconnectÚDB_PATHÚcursorÚexecuteÚsetÚfetchallÚcloseÚ	enumerateÚreplacer[   r+   rW   r   ÚrowcountÚcommitr0   Úrollback)r1   ÚconnÚcÚexistingr   Únew_articlesÚimportedÚskippedÚiÚarticleÚtitle_shortrQ   rZ   r   rY   Úsummaryr:   s                    r;   Úmainr}   u   s³  € Ü	ˆ(„OÜ	Ð
.Ô/Ü	ˆNœ8Ÿ<™<›>×2Ñ2Ð3FÓGÐHÐ
IÔJÜ	ˆ(„Oä	Ð
&Ô'Ü‹{€HÜ	ˆLœ˜X›˜ zÐ
2Ô3áØä	Ð
,Ô-Ü�?‰?œ7Ó#€DØ�‰‹€Aà‡I�IÐ,Ô-ÜÑ2 Q§Z¡Z£\Ô2Ó2€Hà'ÖD˜!¨1¨U©8¸8Ò+C’AÐD€LÐDÜ	ˆJ”s˜<Ó(Ð)¨¬3¨x«=¨/Ð
:Ô;áÜÐ!Ô"Ø�
‰
ŒØä	Ð
&Ô'Ø€HØ€Gä ¨aÓ0ò ‰
ˆˆ7Ø˜gÑ& s¨Ð+×3Ñ3°D¸#Ó>ˆÜ��A�3�aœ˜LÓ)Ð*¨"¨[¨M¸Ð=À3ÈdÕSä& w¨u¡~Ó6Ñˆ�áÜ�/Ô"Ø�q‰LˆGØàÒ*˜7 6™?ˆä—F‘F˜: r¨7Ó3×9Ñ9Ó;ˆ	Ø˜D˜S�/ˆð	Ø�I‰Ið 0ð ˜Ñ! 7¨G°E©N¸GØ  ~ð7ô8ð
 �z‰z˜AŠ~Ø—‘”Ø˜A‘�Ü˜œc )›nÐ-¨TÐ2Õ3ä�oÔ&øð7ð@ 	‡J�J„LÜ	ˆBˆxˆjˆ/ÔÜ	ˆN˜8˜* M°'°¸%Ð
@ÔAÜ	ˆXˆJÕùò_ EøôP ò 	Ü�N 1 #Ð&Ô'Ø�M‰M�OŠOûð	ús%   Ã*JÃ7JÇ0A'JÊ	KÊ$KËKÚ__main__)r!   r+   rf   Úbs4r   r   r    r#   rh   r   r<   r[   r}   Ú__name__r^   ó    r;   ú<module>r‚      s^   ðó Û 	Û Ý Ý à.€àð  Dð€ð €Ø€	ò3òj)òVCðJ ˆzÒÙ…Fð r�   