Ë
    ¸¬ujl3  ã                   ó†  — 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Zddl	m
Z
 ddlZdZdZdZej                  j!                  dd«      Zd	d
iZdZ eej*                  «      D ]=  \  ZZedk(  sŒedz    eej*                  «      k  sŒ% eej*                  edz      «      Z n d„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze dk(  r e«        yy)u  æ³°å…´å¸‚è‡ªç„¶èµ„æº�å’Œè§„åˆ’å±€ â€” å»ºè®¾é¡¹ç›®æ‰¹å‰�å…¬ç¤º

TRS CMS
åˆ—è¡¨: https://zrzy.jiangsu.gov.cn/tztx/gtzx/tzgg_10466/tzgg_10469/
åˆ†é¡µ: index_1.htm, index_2.htm ... (15æ�¡/é¡µ, å…±26é¡µ)
è¯¦æƒ…: /202607/t20260715_2050484.htm
æ­£æ–‡: div#fontzoom > div.TRS_Editor
é    N)ÚBeautifulSoupz;https://zrzy.jiangsu.gov.cn/tztx/gtzx/tzgg_10466/tzgg_10469u"   æ³°å…´å¸‚-å»ºè®¾é¡¹ç›®æ‰¹å‰�å…¬ç¤ºu!   æ³°å…´å¸‚è‡ªç„¶èµ„æº�å’Œè§„åˆ’å±€Ú	SEARCH_DBz/root/search.dbz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36z--pagesé   c                 ó<  — t         j                  j                  | t        ¬«      }	 t         j                  j	                  |d¬«      j                  «       j                  dd¬«      S # t        $ r+}t        d| ›d|›�t        j                  ¬	«       Y d }~y
d }~ww xY w)N)Úheadersé   ©Útimeoutzutf-8Úreplace)Úerrorsz[WARN] fetch failed: z - ©ÚfileÚ )ÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚreadÚdecodeÚ	ExceptionÚprintÚsysÚstderr)ÚurlÚreqÚes      ú'/root/gov_crawler/crawl_taixing_ghgs.pyÚfetchr      sz   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CðÜ�~‰~×%Ñ% c°2Ð%Ó6×;Ñ;Ó=×DÑDÀWÐU^ÐDÓ_Ð_øÜò Ý²±QÐ7¼c¿j¹jÕIÜûðús   §?A' Á'	BÁ0!BÂBc                 ó`  — g }t        | d«      }|j                  dd¬«      D �]ˆ  }|d   j                  «       }|j                  d«      rd|v sd|v rŒ1t	        j
                  d	|«      st	        j
                  d
|«      sŒ^|j                  d¬«      }|rt        |«      dk  rŒ�t	        j                  dd|«      j                  «       }d}|j                  d«      }|rW|j                  d«      }|rD|j                  d«      }	|	D ].  }
|
j                  d¬«      }t	        j                  d|«      sŒ,|} n |j                  d«      rd|z   }n>|j                  d«      s+t        j                  d«      dz   |j                  d«      z   }n|}|j                  |j                  «       ||f«       �Œ‹ |S )u2   è§£æž�åˆ—è¡¨é¡µï¼Œè¿”å›ž (title, date, url) åˆ—è¡¨úhtml.parserÚaT©Úhrefr$   z.htmÚindexÚ
javascriptz/20\d{4}/t20z20\d{6}©Ústripé   u   ^[Â·\s]+r   ÚtdÚtrz\d{4}-\d{2}-\d{2}ú/úhttps://zrzy.jiangsu.gov.cnÚhttpú./)r   Úfind_allr(   ÚendswithÚreÚsearchÚget_textÚlenÚsubÚfind_parentÚmatchÚ
startswithÚBASE_URLÚrstripÚlstripÚappend)ÚhtmlÚitemsÚsoupr"   r$   ÚtitleÚdate_strÚ	parent_tdr+   Úall_tdsr*   ÚtxtÚfull_urls                r   Úextract_list_itemsrG   (   s“  € à€EÜ˜˜}Ó-€Dð
 �]‰]˜3 Tˆ]Ó*ó %:ˆØ�‰y�‰Ó ˆà�}‰}˜VÔ$¨°4©¸<È4Ñ;OØä�y‰y˜¨$Ô/¼¿	¹	À*ÈdÔ8SØà—
‘
 �
Ó&ˆÙœ˜E›
 QšØô —‘�{ B¨Ó.×4Ñ4Ó6ˆð ˆØ—M‘M $Ó'ˆ	ÙØ×&Ñ& tÓ,ˆBÙØŸ+™+ dÓ+�Ø!ò �BØŸ+™+¨D˜+Ó1�CÜ—x‘xÐ 4°cÕ:Ø#&˜Ùð	ð �?‰?˜3ÔØ4°tÑ;‰HØ—‘ Ô(Ü—‘ sÓ+¨cÑ1°D·K±KÀÓ4EÑE‰HàˆHà�‰�e—k‘k“m X¨xÐ8Ö9ðK%:ðN €Ló    c                 ó–   — t        j                  d| «      }	 t        j                  d| «      }|rt        |j                  d«      «      S y )NzcreatePageHTML\((\d+)r   )r2   r3   ÚintÚgroup)r>   Úms     r   Úget_pagination_countrM   Z   s?   € ä
�	‰	Ð*¨DÓ1€AØ%Ü
�	‰	Ð*¨DÓ1€AÙÜ�1—7‘7˜1“:‹ÐØrH   c                 óê  — t        | d«      }d}|j                  dt        j                  d«      ¬«      }|r|j	                  d¬«      }|s%|j                  d«      }|r|j	                  d¬«      }|sJ|j                  d	«      }|r7|j	                  d¬«      }t        j
                  d
d|«      j                  «       }|sd}d}|j                  dd¬«      }	|	r;|	j	                  d¬«      }
t        j                  d|
«      }|r|j                  d«      }g }|j                  dd¬«      }|s5|j                  dt        j                  dt        j                  «      ¬«      }d}|r|j                  dd¬«      }|s|r|}n|j                  dd¬«      }|�rL|j                  g d¢d¬«      D �]3  }|j                  d«      r|j                  d«      |k7  r	 |j                  dk(  rÍ|j                  dd«      }|j                  dd«      }|r¥|j                  d«      rd|z   }nv|j                  d«      r|d|j                  d«       dz   |dd z   }nG|j                  d«      s4d|d|j                  d«       v r|d|j                  d«       dz   |z   }n|}n|}|j!                  d|›d |›d!�«       �Œ|j                  d"k(  r˜g }|j                  d#«      D ]^  }|j                  dd$g«      D �cg c]  }|j	                  d¬«      ‘Œ }}t#        |«      sŒ?|j!                  d%j%                  |«      «       Œ` |r |j!                  d&j%                  |«      «       �Œ­|j	                  d¬«      }
|
s�ŒÃt'        |
«      dkD  s�ŒÓ|
j                  d'«      s|
j                  d(«      r�Œ÷t        j(                  d)|
«      r�Œd*|
v rd+|
v r�Œd,|
v rd-|
v r�Œ#|j!                  |
«       �Œ6 d.j%                  |«      }g }|�r|j                  d/d¬0«      D ]ÿ  }|d1   j+                  «       }t        j                  d2|«      sŒ-|j	                  d¬«      xs" t,        j.                  j1                  |d1   «      }d}|j                  d«      r	d|d1   z   }nh|j                  d«      r|d|j                  d«       dz   |dd z   }n9|j                  d«      s#d|v r|d|j                  d«       n|}|dz   |z   }n|d1   }|j!                  d-|›d |›d!�«       �Œ |j                  t        j                  d3«      ¬4«      }|�rB|j                  d«      xs |j                  d«      }|�r|j                  d/d¬0«      D �]  }|d1   j+                  «       }t        j                  d2|«      sŒ.|j	                  d¬«      xs" t,        j.                  j1                  |d1   «      }|j                  d«      r	d|d1   z   }nh|j                  d«      r|d|j                  d«       dz   |dd z   }n9|j                  d«      s#d|v r|d|j                  d«       n|}|dz   |z   }n|d1   }d-|›d |›d!�} | |vsŒô|j!                  | «       �Œ t3        «       }!g }"|D ])  }#|#|!vsŒ|!j5                  |#«       |"j!                  |#«       Œ+ |"r,d5d&j%                  |"«      z   }$|s|$j7                  «       }n||$z  }|||d6j%                  |"«      fS c c}w )7u   è§£æž�è¯¦æƒ…é¡µr!   r   r*   zfont-size:\s*23)ÚstyleTr'   Úh1rA   z[_\-].*$Úred_h)Úclass_z(\d{4}-\d{2}-\d{2})r   ÚdivÚfontzoom)Úidzfontzoom|zoom|contentNÚ
TRS_Editor)ÚprS   ÚtableÚimg)Ú	recursiverY   ÚsrcÚaltr,   r-   r/   é   r.   z![z](ú)rX   r+   Úthz | ú
u	   é™„ä»¶ï¼šu   é™„ä»¶u*   ^[\[ï¼ˆ(]?\s*(å¤§|ä¸­|å°�)\s*[\]ï¼‰)]?\s*$u   æ‰“å�°u   å…³é—­u   å­—å�·ú[z

r"   r#   r$   z+\.(pdf|doc|docx|xls|xlsx|zip|rar|ppt|pptx)$u   é™„ä»¶[ï¼š:])Ústringu   

---
**é™„ä»¶ï¼š**
ú|)r   Úfindr2   Úcompiler4   r6   r(   r3   rK   ÚIr0   r7   ÚnameÚgetr9   Úrfindr=   ÚanyÚjoinr5   r8   ÚlowerÚosÚpathÚbasenameÚsetÚaddr<   )%r>   r   r@   rA   Útitle_tdrP   Ú	title_tagÚrawÚ	date_textÚdate_tdrE   rL   Úcontent_partsrT   ÚeditorÚelr[   r\   Úfull_srcÚrowsr+   r*   ÚcellsÚcontentÚattachmentsr"   ÚhÚfnameÚfull_url_pathÚbaseÚfooter_attachÚparentÚattach_textÚseen_attÚunique_attachmentsÚattÚattach_sections%                                        r   Úparse_detailrŠ   d   sš  € ä˜˜}Ó-€Dð €Eà�y‰y˜¤R§Z¡ZÐ0BÓ%CˆyÓD€HÙØ×!Ñ!¨Ð!Ó-ˆÙØ�Y‰Y�t‹_ˆÙØ—K‘K d�KÓ+ˆEÙØ—I‘I˜gÓ&ˆ	ÙØ×$Ñ$¨4Ð$Ó0ˆCÜ—F‘F˜;¨¨CÓ0×6Ñ6Ó8ˆEÙØˆð €IØ�i‰i˜ WˆiÓ-€GÙØ×Ñ TÐÓ*ˆÜ�I‰IÐ,¨cÓ2ˆÙØŸ™ ›
ˆIð €Mð �y‰y˜ :ˆyÓ.€HÙØ—9‘9˜U¤r§z¡zÐ2JÌBÏDÉDÓ'Q�9ÓRˆà€FÙØ—‘˜u¨\�Ó:ˆÙÙØ‰Fà—Y‘Y˜u¨\�YÓ:ˆFâØ—/‘/Ò">È$�/ÓOó /	*ˆBà�~‰~˜eÔ$¨¯©¸Ó)>À&Ò)Hàà�w‰w˜%ÒØ—f‘f˜U BÓ'�Ø—f‘f˜U BÓ'�ÙØ—~‘~ cÔ*Ø#@À3Ñ#F™ØŸ™¨Ô-Ø#& ¨¯	©	°#«Ð#7¸#Ñ#=ÀÀAÀBÀÑ#G™Ø Ÿ^™^¨FÔ3Ø # o s§y¡y°£~Ð"6Ñ6Ø'*¨?¨C¯I©I°c«NÐ';¸cÑ'AÀCÑ'G™Hà'*™Hà#&˜Ø!×(Ò(ººXÐ)FÔGÙà�w‰w˜'Ò!Ø�ØŸ+™+ dÓ+ò 7�BØ?A¿{¹{ÈDÐRVÈ<Ó?XÖY¸˜RŸ[™[¨t˜[Õ4ÐY�EÐYÜ˜5•zØŸ™ E§J¡J¨uÓ$5Õ6ð7ñ Ø!×(Ñ(¨¯©°4«Ô9Ùð —+‘+ D�+Ó)ˆCÛ”s˜3“x !”|à—>‘> +Ô.°#·.±.ÀÔ2JáÜ—8‘8ÐIÈ3ÔOÙØ˜s‘? x°3¡ÙØ˜s‘? s¨c¡zÙØ×$Ñ$ SÖ)ð_/	*ðb �k‰k˜-Ó(€Gð €KâØ—‘ ¨4�Ó0ò 	HˆAØ�&‘	—‘Ó!ˆAÜ�y‰yÐGÈÕKØŸ
™
¨˜
Ó.ÒM´"·'±'×2BÑ2BÀ1ÀVÁ9Ó2M�à "�Ø—<‘< Ô$Ø$AÀAÀfÁIÑ$M‘MØ—\‘\ $Ô'Ø$'¨¨¯©°3«Ð$8¸3Ñ$>ÀÀ1À2ÀÑ$F‘MØŸ™ fÔ-Ø36¸#±:˜3˜ §	¡	¨#£Ñ/À3�DØ$(¨3¡J°¡N‘Mà$% f¡I�MØ×"Ò"²ºÐ#FÖGð	Hð$ —I‘I¤R§Z¡Z°Ó%@�IÓA€MÚØ×*Ñ*¨4Ó0ÒT°M×4MÑ4MÈeÓ4TˆÚØ—_‘_ S¨t�_Ó4ó 8�Ø�f‘I—O‘OÓ%�Ü—9‘9ÐKÈQÕOØŸJ™J¨T˜JÓ2ÒQ´b·g±g×6FÑ6FÀqÈÁyÓ6Q�EØ—|‘| CÔ(Ø(EÈÈ&É	Ñ(Q™ØŸ™ dÔ+Ø(+¨O¨S¯Y©Y°s«^Ð(<¸sÑ(BÀQÀqÀrÀUÑ(J™ØŸ\™\¨&Ô1Ø7:¸c±z˜s ? C§I¡I¨c£NÑ3Às˜Ø(,¨s©
°Q©™à()¨&©	˜øÚ05²}Ð"E�KØ"¨+Ò5Ø#×*Ñ*¨;Ö7ð8ô$ ‹u€HØÐØò +ˆØ�hÒØ�L‰L˜ÔØ×%Ñ% cÕ*ð+ñ
 Ø3°d·i±iÐ@RÓ6SÑSˆÙØ$×+Ñ+Ó-‰Gà�~Ñ%ˆGà�)˜W c§h¡hÐ/AÓ&BÐBÐBùòe Zs   Ë'[0c                 ó’  — 	 t        j                  t        d¬«      }|j                  «       }|j	                  «       r|j	                  «       d d nd}d}|r3	 ddlm}	 t        |	j                  |d d d«      j                  «       «      }|j                  d| j	                  «       ||j	                  «       |j	                  «       |j	                  «       t        |||f	«       |j                  }
|j                  «        |j                  «        |
S #  Y Œ‰xY w# t        $ r(}t        d	|z  t         j"                  ¬
«       Y d }~yd }~ww xY w)Né
   r	   éÈ   r   r   )Údatetimez%Y-%m-%dzÃINSERT OR IGNORE INTO gov_raw
                     (title, publish_date, content, page_url, source_url, site_name, summary, date_rank, attachments)
                     VALUES (?,?,?,?,?,?,?,?,?)u   [ERROR] å†™å…¥å¤±è´¥: %sr   )Úsqlite3ÚconnectÚDBÚcursorr(   rŽ   rJ   ÚstrptimeÚ	timestampÚexecuteÚ	SITE_NAMEÚrowcountÚcommitÚcloser   r   r   r   )rA   rB   r}   Úpage_urlr~   ÚconnÚcÚsummaryÚ	date_rankrŽ   r"   r   s               r   Ú
store_itemrŸ     s  € ðÜ�‰œr¨2Ô.ˆØ�K‰K‹MˆØ,3¯M©M¬O�7—=‘=“? 4 CÑ(ÀˆØˆ	ÙðÝ-Ü × 1Ñ 1°(¸3¸B°-ÀÓ L× VÑ VÓ XÓY�	ð 	
�	‰	ð 3ð —;‘;“= (¨G¯M©M«O¸X¿^¹^Ó=MÈxÏ~É~ÓO_Ü˜g y°+ð?ô	@ð
 �J‰JˆØ�‰ŒØ�
‰
ŒØˆøðÙûô ò ÜÐ(¨1Ñ,´3·:±:Õ>Üûðús1   ‚AD Á2D Â	BD ÄDÄD Ä	EÄEÅEc                  óÚ  — t        dt        z  t        j                  ¬«       t	        t
        dz   «      } | st        dt        j                  ¬«       y t        | «      }|rt        d|z  t        j                  ¬«       nt        dt        j                  ¬«       d}|}t        r-t        |k  r$t        }t        d|z  t        j                  ¬«       d	}d	}d	}t        d|dz   «      D �]Ð  }|dk(  r
t
        dz   }nt
        d
|z  z   }t        d|||fz  t        j                  ¬«       |dk(  r| }n,t	        |«      }|st        d|z  t        j                  ¬«       Œtt        |«      }	t        d|t        |	«      fz  t        j                  ¬«       |	D �]  \  }
}}t	        |«      }|s$t        d|z  t        j                  ¬«       |dz  }Œ9t        ||«      \  }}}}|xs |
}|xs |}|rg|ret        |||||«      }|r*|dz  }t        d|›d|d d ›�t        j                  ¬«       ne|dz  }t        d|›d|d d ›�t        j                  ¬«       n;|dz  }t        d|›dt        |«      ›dt        |«      ›�t        j                  ¬«       t        j                  d«       �Œ t        j                  d«       �ŒÓ t        d|||fz  t        j                  ¬«       t        d|||fz  «       y )Nz
[START] %sr   r,   u   [FATAL] é¦–é¡µèŽ·å�–å¤±è´¥u   [INFO] å…± %d é¡µu,   [WARN] æœªèƒ½è§£æž�æ€»é¡µæ•°ï¼Œä»…çˆ¬ç¬¬1é¡µr   u   [INFO] é™�åˆ¶ä¸ºå‰� %d é¡µr   z/index_%d.htmz[PAGE] %d/%d: %su   [ERR] ç¬¬%dé¡µèŽ·å�–å¤±è´¥u   [INFO] ç¬¬%dé¡µ %d æ�¡u!     [ERR] è¯¦æƒ…é¡µèŽ·å�–å¤±è´¥: %sz  [OK] ú é2   z  [DUP] u     [ERR] è§£æž�å¤±è´¥: z: title=z
, content=g333333Ó?g      à?u)   [DONE] æ–°å¢ž: %d, è·³è¿‡: %d, å¤±è´¥: %dzOK: new=%d skip=%d err=%d)r   r–   r   r   r   r:   rM   Ú_MAX_PGÚrangerG   r5   rŠ   rŸ   ÚboolÚtimeÚsleep)Ú
first_htmlÚtotal_pagesÚmax_pgÚ	total_newÚ
total_skipÚ	total_errÚpgrš   r>   r?   rA   rB   Ú
detail_urlÚdetail_htmlÚd_titleÚd_dateÚ	d_contentr~   Úfinal_titleÚ
final_dateÚsts                        r   Úmainr·     s¤  € Ü	ˆ,œÑ
"¬¯©Õ4ô ”x #‘~Ó&€JÙÜÐ*´·±Õ<Øä& zÓ2€KÙÜÐ! KÑ/´c·j±jÖAäÐ<Ä3Ç:Á:ÕNØˆà€FÝ”7˜VÒ#ÜˆÜÐ*¨VÑ3¼#¿*¹*ÕEà€IØ€JØ€Iä�A�v ‘zÓ"ó /ˆØ�Š7Ü #‘~‰Hä /°BÑ"6Ñ6ˆHäÐ  B¨°Ð#9Ñ9ÄÇ
Á
ÕKà�Š7Ø‰Dä˜“?ˆDÙÜÐ2°RÑ7¼c¿j¹jÕIØä" 4Ó(ˆÜÐ&¨"¬c°%«jÐ)9Ñ9ÄÇ
Á
ÕKà+0ó 	Ñ'ˆE�8˜Zä 
Ó+ˆKÙÜÐ9¸JÑFÌSÏZÉZÕXØ˜Q‘�	Øä6BÀ;ÐPZÓ6[Ñ3ˆG�V˜Y¨à!Ò* UˆKØÒ+ 8ˆJá™yÜ ¨Z¸ÀJÐP[Ó\�ÙØ ‘N�IÝªJ¸ÀCÀRÑ8HÐIÔPS×PZÑPZÖ[à !‘O�JÝªZ¸ÀSÀbÑ9IÐJÔQT×Q[ÑQ[Ö\à˜Q‘�	ÝÚ!¤4¨¥=´$°y´/ðCÜILÏÉõUô �J‰J�sŽOð5	ô8 	�
‰
�3Žð_/ôb 
Ð
5¸ÀJÐPYÐ8ZÑ
ZÔad×akÑakÕlÜ	Ð
%¨°JÀ	Ð(JÑ
JÕKrH   Ú__main__)!Ú__doc__r2   r   rm   Újsonr¦   Úurllib.requestr   Úurllib.errorÚbs4r   r�   r:   r–   ÚSITE_DISPLAYÚenvironrh   r‘   r   r£   Ú	enumerateÚargvÚir"   r5   rJ   r   rG   rM   rŠ   rŸ   r·   Ú__name__© rH   r   ú<module>rÅ      sá   ðñ÷ × Ó ß #Ý Û àH€Ø0€	Ø2€Ø‡Z�Z‡^�^�KÐ!2Ó3€àð  Dð€ð €Ù�c—h‘hÓò �D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ù�c—h‘h˜q 1™u‘oÓ&ˆÙðòò/òdò^CòBò4KLð\ ˆzÒÙ…Fð rH   