Ë
    #ñ£jÉL  ã                   óÎ  — 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
mZ 	 ddlmZ ej                  j!                  dd«      ZdZdZd	Zd
ZdZdZdZdZdZdZ e
j8                  «        ed¬«      z
  j;                  d«      ZddddedœZdZ  e!ejD                  «      D ]k  \  Z#Z$e$jK                  d«      r	  e&e$jO                  dd«      d   «      Z Œ4e$dk(  sŒ:e#dz    e)ejD                  «      k  sŒS	  e&ejD                  e#dz      «      Z Œm e dk\  re ndZ*d„ Z+d'd„Z,d(d „Z-d!„ Z.d"„ Z/d#„ Z0d$„ Z1d%„ Z2e3d&k(  r e2«        yy# e$ r dZY �Œw xY w# e($ r Y Œ´w xY w# e($ r Y Œ¿w xY w))u  
crawl_rugao_zxzspj.py - å¦‚çš‹å¸‚æ•°æ�®å±€/è¡Œæ”¿å®¡æ‰¹å±€ å…¬å‘Šå…¬ç¤º (www.rugao.gov.cn)
https://www.rugao.gov.cn/rgszxzspj/gggs/gggs.html
âš ï¸� ä¸Žå�Œç«™ crawl_rugao.py (=/rgscjz/tzgg/ å¦‚çš‹å¸‚é•¿æ±Ÿé•‡) æ˜¯ã€�ä¸�å�Œæ �ç›®ã€‘ï¼Œå‹¿è¦†ç›–
CMS: truecms (jQuery.jpage) â€” åˆ—è¡¨ç»� dataproxy JSONP åˆ†é¡µ
åˆ—è¡¨ API: GET {base}/truecms/messageController/getMessage.do
  startrecord=(page-1)*10  endrecord=page*10-1  perpage=10
  columnId=5abca8e9-c1ce-4f04-ab61-1b977720e284
  å“�åº” JSON: {"result":"<datastore><totalrecord>1059</totalrecord><recordset><record><![CDATA[
      <li><a href="/rgszxzspj/gggs/content/<uuid>.html" title="å®Œæ•´æ ‡é¢˜" target="_blank">
        <i class="icon-disc"></i><span class="list-text">æ ‡é¢˜â€¦(æˆªæ–­)</span>
        <span class="timedate">2026-09-10</span></a></li>]]></record>..."}
  âš ï¸� åˆ—è¡¨ title å±žæ€§=å®Œæ•´æ ‡é¢˜ï¼ˆspan.list-text è¢«æˆªæ–­ï¼‰ï¼Œä¼˜å…ˆå�– title
è¯¦æƒ…: /rgszxzspj/gggs/content/<uuid>.html
  meta ArticleTitle(å®Œæ•´æ ‡é¢˜) / PubDate(YYYY-M-D HH:MM:SS)
  æ­£æ–‡: div#zoom (pâ‰ˆ14)
é    N)ÚdatetimeÚ	timedelta)ÚBeautifulSoupÚ
JSONL_PATHÚ úutf-8u%   å¦‚çš‹å¸‚è¡Œæ”¿å®¡æ‰¹å±€-å…¬å‘Šå…¬ç¤ºu   æ±Ÿè‹�zcrawl_rugao_zxzspj.pyu   å…¬å‘Šå…¬ç¤ºzhttps://www.rugao.gov.cnz1https://www.rugao.gov.cn/rgszxzspj/gggs/gggs.htmlz@https://www.rugao.gov.cn/truecms/messageController/getMessage.doz$5abca8e9-c1ce-4f04-ab61-1b977720e284é
   iG  )Údaysz%Y-%m-%dzkMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36z.application/json, text/javascript, */*; q=0.01zzh-CN,zh;q=0.9ÚXMLHttpRequest)z
User-AgentÚAcceptzAccept-LanguagezX-Requested-WithÚRefereré   z--pages=ú=é   z--pagesc                 ó`  — | syt        j                  | «      } | j                  dd«      j                  dd«      j                  dd«      j                  dd«      } t        j                  dd| «      } t        j                  dd| «      } t        j                  dd	| «      } | j                  «       S )
Nr   u   â€‹u   â€Œu   â€�u   ï»¿u3   ^\s*(?:&middot;|Â·|\u00b7)?\s*(?:&nbsp;|\u00a0)?\s*u   ^[â€¢Â·]\s*ú\s+ú )Úhtml_libÚunescapeÚreplaceÚreÚsubÚstrip)Úts    úcrawl_rugao_zxzspj.pyÚclean_titler   C   s”   € ÙØÜ×Ñ˜!Ó€AØ	�	‰	�(˜BÓ×'Ñ'¨°"Ó5×=Ñ=¸hÈÓK×SÑSÐT\Ð^`Óa€AÜ
�‰ÐEÀrÈ1ÓM€AÜ
�‰ˆ~˜r 1Ó%€AÜ
�‰ˆv�s˜AÓ€AØ�7‰7‹9Ðó    c                 óæ  — t        t        «      }|r||d<   d }t        d«      D ]‘  }	 dd l}dd l}|j                  |j                  j                  «       |j                  | ||d¬«      }|j                  dk(  rt        |_        |j                  c S d|j                  z  }t        j                   d	«       Œ“ t#        d
| d d ›d|›�d¬«       y # t        $ r}	t        |	«      d d }Y d }	~	ŒJd }	~	ww xY w)Nr   é   r   F)ÚheadersÚtimeoutÚverifyéÈ   úHTTP %séP   é   ú  [fetch fail] éZ   ú -> T©Úflush)ÚdictÚHEADERSÚrangeÚrequestsÚurllib3Údisable_warningsÚ
exceptionsÚInsecureRequestWarningÚgetÚstatus_codeÚENCÚencodingÚtextÚ	ExceptionÚstrÚtimeÚsleepÚprint)
Úurlr!   ÚacceptÚhÚlast_errÚ_r/   r0   ÚrÚes
             r   ÚfetchrE   N   sÙ   € ÜŒW‹€AÙØˆˆ(‰Ø€HÜ�1‹Xò ˆð		#ß$Ø×$Ñ$ W×%7Ñ%7×%NÑ%NÔOØ—‘˜S¨!°WÀU�ÓKˆAØ�}‰} Ò#Ü �”
Ø—v‘v’Ø  1§=¡=Ñ0ˆHô 	�
‰
�1�ðõ 
 s¨3¨B¢x±Ð
:À$ÕGØøô	 ò 	#Ü˜1“v˜c˜r�{�Hûð	#ús   ¨A'CÂCÃ	C0ÃC+Ã+C0c                 óÄ  — dd l }dd l}|j                  |j                  j                  «       d }t        d«      D ]i  }	 |j                  | |t        |d¬«      }|j                  dk(  rt        |_
        |j                  c S d|j                  z  }t        j                  d«       Œk t!        d	| d d
 ›d|›�d¬«       y # t        $ r}t        |«      d d }Y d }~ŒJd }~ww xY w)Nr   r   F)Úparamsr    r!   r"   r#   r$   r%   r&   r'   r(   r)   Tr*   )r/   r0   r1   r2   r3   r.   r4   r-   r5   r6   r7   r8   r9   r:   r;   r<   r=   )	r>   rG   r!   r/   r0   rA   rB   rC   rD   s	            r   Ú	fetch_urlrH   c   sÇ   € ßØ×Ñ˜W×/Ñ/×FÑFÔGØ€HÜ�1‹Xò 	ˆð	#Ø—‘˜S¨¼È'ÐZ_�Ó`ˆAØ�}‰} Ò#Ü �”
Ø—v‘v’Ø  1§=¡=Ñ0ˆHô 	�
‰
�1�ð	õ 
 s¨3¨B¢x±Ð
:À$ÕGØøô	 ò 	#Ü˜1“v˜c˜r�{�Hûð	#ús   ¿?B>ÂB>Â>	CÃCÃCc           
      ó¦  ‡‡)‡*‡+— | sddg fS t        j                  dd| t         j                  ¬«      } t        j                  dd| t         j                  ¬«      } t        j                  dd| t         j                  t         j                  z  ¬«      } t        j                  dd| t         j                  t         j                  z  ¬«      } g Š)i Š*t        j                  dd| «      } t        r¢	 t	        | d	«      }|j                  d
g«      D ]  }|j                  «        Œ |j                  d¬«      D ]N  }|j                  d«      xs dj                  dd«      j                  «       }d|v sd|v sŒ?|j                  «        ŒP t        |«      } t        �r�	 t	        | d	«      }|j                  dd¬«      D �]Ÿ  }|d   }|j                  d«      s?|j                  d«      s.t        j                  d|t         j                  «      s	d|v sd|v sŒY|xs dj                  «       }|j                  d«      xs |j                  d«      xs dj                  «       }	|r(t        j                  d|t         j                  «      s|}
n|	xs |}
|j                  d¬«      xs[ |j                  d«      xsH |j                  d«      xs5 t         j"                  j%                  |
j'                  d«      d   «      xs d }t(        j*                  j-                  ‰|
«      }‰)j/                  ||f«       d!t1        ‰*«      z  }d"|›d#|›d$�‰*|<   |j3                  |«       �Œ¢ |j                  d%«      D ]`  }|j                  d&«      xs |j                  d«      xs d}t        j                  d'|t         j                  «      sŒQ|j                  «        Œb |j                  d(«      D �]@  }|j                  d%«      }|sŒ|j                  d¬«      rŒ+g }|D ]Ò  }|j                  d&«      xs |j                  d«      xs d}|sŒ.t(        j*                  j-                  ‰|«      }|j                  d)«      xs |j                  d«      xs dj                  «       xs5 t         j"                  j%                  |j'                  d«      d   «      xs d*}|j/                  d"|›d#|›d$�«       ŒÔ |s�Œd+t1        ‰*«      z  }d,d-j5                  |«      z   d.z   ‰*|<   |j3                  |«       �ŒC |j                  d%«      D ]å  }|j                  d&«      xs |j                  d«      xs d}|sŒ.t(        j*                  j-                  ‰|«      }|j                  d)«      xs |j                  d«      xs dj                  «       xs5 t         j"                  j%                  |j'                  d«      d   «      xs d*}d+t1        ‰*«      z  }d/|›d#|›d0�‰*|<   |j3                  |«       Œç t        |«      } ˆ)ˆ*ˆfd1„}t        j                  d2|| t         j                  t         j                  z  ¬«      } t        rÍ	 t	        | d	«      }|j                  d«      D ]%  }d3D ]  }|j6                  j9                  |d4«       Œ  Œ' |j                  d5«      D ]h  }|j                  d¬«      sD|j;                  d6«      s3|j;                  d%«      s"|j;                  d«      s|j                  «        ŒY|j=                  «        Œj t        |«      } g Š+ˆ+fd7„}t        j                  d8| t         j                  «      rd9nd}d4}|| k7  r@| }t        j                  d:|| t         j                  t         j                  z  ¬«      } || k7  rŒ@t        j                  d.d;| t         j                  ¬«      } t        j                  d<d=| t         j                  ¬«      } t        j                  d>d| t         j                  ¬«      } g }| j'                  d?«      D �]¼  }|j                  «       }|sŒt        j                  d@d|«      }t        j                  dAd|«      }|j                  dBd«      j                  dCd«      }t        j                  dDd|«      }t        j                  dEd|«      }t?        j@                  |«      }|j                  dFd«      j                  dGd«      }t        j                  dHd|«      }|sŒæt        j                  dI|«      rŒý‰*jC                  «       D ]  \  }}|j                  ||«      }Œ tE        ‰+«      D ]  \  } }!|j                  dJ| z  |!«      }Œ t        j                  dK|t         j                  «      s*t        j                  dL|t         j                  «      rdM|z  }|j/                  |j                  «       «       �Œ¿ d?j5                  |«      }"‰*jC                  «       D ]  \  }}|"j                  ||«      }"Œ tE        ‰+«      D ]  \  } }!|"j                  dJ| z  |!«      }"Œ t        j                  dNd|"«      }"t?        j@                  |"«      }"t        j                  dOd=|"«      }"t        j                  dPd?|"«      }"t        j                  dDd|"«      }"tG        «       g }$}#|"j'                  d?«      D ]W  }t        j                  dQdt        j                  dEd|«      «      }|r||#v rŒ6|#jI                  |«       |$j/                  |«       ŒY d?j5                  |$«      j                  «       }"g tG        «       }&}%‰)D ].  \  }'}(|'|&v rŒ|&jI                  |'«       |%j/                  |'|(f«       Œ0 |"||%fS # t        $ r Y �
Œ"w xY w# t        $ r Y �Œ›w xY w# t        $ r Y �Œ™w xY w)RuR   æ­£æ–‡ HTML æ¸…æ´—ï¼šä¿�ç•™ <p>/<table>ï¼Œé™„ä»¶è½¬ <p><a>ç»�å¯¹URL</a></p> æ®µè�½r   r   z
<!--.*?-->)Úflagsz<meta[^>]*>z<script[^>]*>.*?</script>z<style[^>]*>.*?</style>u   ã€�å­—å�·ï¼š[^ã€‘]*ã€‘úhtml.parserÚiframeT)ÚstylerM   r   zdisplay:nonezvisibility:hiddenÚa)ÚhrefrO   Úappendixzdata-appendixz&\.(pdf|docx?|xlsx?|zip|rar|wps|et|ofd)z/document/downloadz/module/download/ÚoldsrcÚOLDSRCz^(?:javascript:|mailto:|tel:|#)©r   Ú_titleÚtitleú?õ   é™„ä»¶z__ATTACH__%d__ú	<a href="ú" target="_blank">ú</a>ÚimgÚsrcz(icons?/|fileTypeImages/icon_)ÚpÚaltu   å›¾ç‰‡z__IMG__%d__z<p>z<br/>z</p>z<p><a href="z</a></p>c                 óÀ  •— | j                  d«      }t        j                  d|t        j                  «      r2|j	                  «       j                  d«      rdS | j                  d«      S | j                  d«      }t        j                  dd|«      }t        j                  |«      j                  «       }t        j                  dd|«      j                  «       }|s5t        j                  j                  |j                  d	«      d   «      xs d
}t        j                  j!                  ‰|«      }‰j#                  ||f«       dt%        ‰«      z  }d|›d|›d�‰|<   |S )Nr   z&^(?:javascript:|mailto:|tel:|s?ftp:|#)zjavascript:r   r   r&   ú<[^>]+>u   ^é™„ä»¶[:ï¼š]\s*rV   rW   z__LINK__%d__rX   rY   rZ   )Úgroupr   ÚmatchÚIÚlowerÚ
startswithr   r   r   r   ÚosÚpathÚbasenameÚsplitÚurllibÚparseÚurljoinÚappendÚlen)	ÚmrO   ÚinnerÚtxtÚabs_urlÚkeyÚattachmentsÚlink_protectÚpage_urls	         €€€r   Ú
_link_replz html_to_text.<locals>._link_replÉ   s  ø€ Ø�w‰w�q‹zˆÜ�8‰8Ð=¸tÄRÇTÁTÔJØŸ™›×0Ñ0°Ô?�2ÐOÀQÇWÁWÈQÃZÐOØ—‘˜“
ˆÜ�f‰f�Z  UÓ+ˆÜ×Ñ Ó$×*Ñ*Ó,ˆÜ�f‰fÐ(¨"¨cÓ2×8Ñ8Ó:ˆÙÜ—'‘'×"Ñ" 4§:¡:¨c£?°1Ñ#5Ó6ÒB¸(ˆCÜ—,‘,×&Ñ& x°Ó6ˆØ×Ñ˜G S˜>Ô*Øœs <Ó0Ñ0‰ÚELÊcÐRˆ�SÑØˆ
r   z&<a\s[^>]*href="([^"]+)"[^>]*>(.*?)</a>)rM   ÚclassÚlangÚdirÚalignÚvalignÚwidthÚheightÚborderÚcellpaddingÚcellspacingNÚdivÚtablec                 óf   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  z  S )Nr   ú__TBL__%d__r   )rm   ra   rn   )ro   Útable_protects    €r   Ú	_tbl_replzhtml_to_text.<locals>._tbl_replî   s.   ø€ Ø×Ñ˜QŸW™W Q›ZÔ(Ø¤ MÓ 2°QÑ 6Ñ7Ð7r   z<table[^>]*>r   z<table(?:(?!<table).)*?</table>z</p>

z	<br\s*/?>ú
z8</?(?:span|font|o:p|st1?:[a-z]+|strong|em|b|i|u)\b[^>]*>z

z(?<=>)\s*[\r\n\t]+\s*z\s*[\r\n\t]+\s*(?=<)úú	z	[ \t]{2,}r`   õ   Â z&nbsp;z[\s\u200b\u200c\u200d\ufeff]+u“   ^[ã€�\[ï¼ˆ(]?\s*(?:è¿”å›žé¡¶éƒ¨|å›žåˆ°é¡¶éƒ¨|è¿”å›žåˆ—è¡¨|æ‰“å�°(?:æœ¬é¡µ)?|å…³é—­(?:çª—å�£)?|åˆ†äº«|æ‰«ä¸€æ‰«|ä¸Šä¸€ç¯‡|ä¸‹ä¸€ç¯‡)\s*[ã€‘\]ï¼‰)]?$r…   ú<p[ >]ú<a[ >]z	<p>%s</p>z __(?:LINK|TBL|IMG|ATTACH)__\d+__z[ \t]+\nz\n{3,}r   )%r   r   ÚSrc   r   Úfind_allÚ	decomposer4   r   rd   r:   r9   Úsearchr   rb   Úget_textrf   rg   rh   ri   rj   rk   rl   rm   rn   Úreplace_withÚjoinÚattrsÚpopÚfindÚunwrapr   r   ÚitemsÚ	enumerateÚsetÚadd),Úcontentrv   Ú_sÚelÚstÚ_souprN   rO   Ú_hrefÚ_oldsrcÚ	real_hrefrq   rr   rs   r[   r\   r]   ÚimgsÚsrcsrw   ÚtagÚattrÚdr‡   Ú	has_tableÚprevÚpartsÚblockÚbÚplainÚkÚvÚiÚtblÚoutÚseenÚfinalÚdedupÚseen_uÚur   rt   ru   r†   s,    `                                       @@@r   Úhtml_to_textrº   u   s?
  û€ áØ�1�bˆyÐÜ�f‰f�] B¨´r·t±tÔ<€GÜ�f‰f�^ R¨¼¿¹Ô=€GÜ�f‰fÐ1°2°wÄbÇdÁdÌRÏTÉTÁkÔR€GÜ�f‰fÐ/°°WÄBÇDÁDÌ2Ï4É4ÁKÔP€Gà€KØ€Lä�f‰fÐ.°°GÓ<€Gåð
	Ü˜w¨Ó6ˆBØ—k‘k 8 *Ó-ò �Ø—‘•ðà—k‘k¨�kÓ-ò #�Ø—f‘f˜W“oÒ+¨×4Ñ4°S¸"Ó=×CÑCÓE�Ø! RÑ'Ð+>À"Ò+DØ—L‘L•Nð#ô ˜"“gˆGö ð6	Ü! '¨=Ó9ˆEØ—^‘^ C¨d�^Ó3ó (�Ø˜‘y�Ø—E‘E˜*Ô%¨¯©¨Ô)?ÜŸ9™9Ð%NÐPTÔVX×VZÑVZÔ[Ø/°4Ñ7Ø.°$Ò6à!šZ R×.Ñ.Ó0�EØ Ÿu™u X›ÒG°!·%±%¸³/ÒGÀR×NÑNÓP�GÙ¤R§X¡XÐ.PÐRWÔY[×Y]ÑY]Ô%^Ø$)™	à$+Ò$4¨u˜	ØŸ:™:¨D˜:Ó1ò T°Q·U±U¸8³_ò TÈÏÉÈgËò TÜ Ÿg™g×.Ñ.¨y¯©¸sÓ/CÀAÑ/FÓGòTØKSð ä$Ÿl™l×2Ñ2°8¸YÓG�GØ×&Ñ&¨° ~Ô6Ø*¬S°Ó->Ñ>‘CÚQXÒZ]Ð(^�L Ñ%Ø—N‘N 3Ö'ð'(ð( —~‘~ eÓ,ò $�Ø—w‘w˜u“~Ò@¨¯©°Ó):Ò@¸b�Ü—9‘9Ð>ÀÄRÇTÁTÕJØ—M‘M•Oð$ð —^‘^ CÓ(ó ,�Ø—z‘z %Ó(�Ú §
¡
° 
Õ 6Ø�DØ#ò \˜Ø!Ÿg™g e›nÒG°·±¸Ó0AÒGÀR˜Ù"Ø$Ü"(§,¡,×"6Ñ"6°xÀÓ"E˜Ø"Ÿw™w u›~ÒG°·±¸Ó1AÒGÀR×NÑNÓPò OÜ!Ÿw™w×/Ñ/°·	±	¸#³¸qÑ0AÓBòOØFNð àŸšÊWÒVYÐ$ZÕ[ð\ó Ø+¬c°,Ó.?Ñ?˜Ø,1°G·L±LÀÓ4FÑ,FÈÑ,O˜ SÑ)ØŸ™ sÖ+ð,ð  —~‘~ eÓ,ò 	&�Ø—g‘g˜e“nÒ?¨¯©°Ó(9Ò?¸R�ÙØÜ Ÿ,™,×.Ñ.¨x¸Ó=�Ø—w‘w˜u“~Ò?¨¯©°Ó)9Ò?¸R×FÑFÓHò GÜ—w‘w×'Ñ'¨¯	©	°#«°qÑ(9Ó:òGØ>Fð à#¤c¨,Ó&7Ñ7‘ÚT[Ò]`Ð$a�˜SÑ!Ø× Ñ  Õ%ð	&ô ˜%“jˆGöô �f‰fÐ>À
Ø¤B§D¡D¬2¯4©4¡Kô1€Gõ ð	Ü! '¨=Ó9ˆEØ—~‘~ dÓ+ò .�ðOò .�Dà—I‘I—M‘M $¨Õ-ñ.ð.ð —^‘^ EÓ*ò �Ø—z‘z¨�zÔ-°a·f±f¸W´oØ !§¡ u¤°a·f±f¸S´kØ—K‘K•Mà—H‘H•Jðô ˜%“jˆGð €Mô8ô —Y‘Y˜°¼¿¹Ô>‘ÀA€IØ€DØ
�'Š/ØˆÜ—&‘&Ð;¸YØ ¬¯©¬r¯t©t©ô5ˆð �'‹/ô
 �f‰f�W˜j¨'¼¿¹Ô>€GÜ�f‰f�\ 4¨¼¿¹Ô=€GÜ�f‰fÐPÐRTØ¤B§D¡Dô*€Gð €EØ—‘˜vÓ&ó  ˆØ�K‰K‹MˆÙØÜ�F‰FÐ+¨R°Ó3ˆÜ�F‰FÐ*¨B°Ó2ˆØ�I‰I�d˜BÓ×'Ñ'¨¨cÓ2ˆÜ�F‰F�<  aÓ(ˆÜ—‘�z 2 qÓ)ˆÜ×!Ñ! %Ó(ˆØ—‘˜f cÓ*×2Ñ2°8¸SÓAˆÜ—‘Ð7¸¸UÓCˆÙØä�8‰8ð  kð  mrô  sØØ ×&Ñ&Ó(ò 	 ‰DˆAˆqØ—	‘	˜!˜Q“‰Að	 ä Ó.ò 	2‰FˆAˆsØ—	‘	˜-¨!Ñ+¨SÓ1‰Að	2ä�y‰y˜ A¤r§t¡tÔ,´·±¸9ÀaÌÏÉÔ1NØ˜a‘ˆAØ�‰�Q—W‘W“YÖð/ ð2 �+‰+�eÓ
€CØ×"Ñ"Ó$ò  ‰ˆˆ1Ø�k‰k˜!˜QÓ‰ð ä˜MÓ*ò 2‰ˆˆ3Ø�k‰k˜-¨!Ñ+¨SÓ1‰ð2ô �&‰&Ð4°b¸#Ó
>€CÜ
×
Ñ
˜CÓ
 €CÜ
�&‰&�˜d CÓ
(€CÜ
�&‰&�˜F CÓ
(€CÜ
�&‰&�˜s CÓ
(€Cä“%˜ˆ%€DØ�Y‰Y�vÓò ˆÜ�f‰f�V˜R¤§¡¨
°B¸Ó!:Ó;ˆÙ�c˜T‘kØØ�‰�ŒØ�‰�Q�ðð �+‰+�eÓ
×
"Ñ
"Ó
$€Càœ›ˆ6€EØò ‰ˆˆ1Ø�‰;ØØ�
‰
�1ŒØ�‰�a˜�VÕð	ð �	˜5Ð Ð øôO ò 	Úð	ûôr ò 	Úð	ûôF ò 	Úð	ús`   Ã,Bn# Å0n# ÆA7n3 ÈF+n3 Î9:n3 Ï4n3 ÐCn3 Ó$E n3 Ù*Co î#	n0î/n0î3	o î?o ï	oïoc                 ó  — t        | dz
  t        z  dz   «      t        | t        z  «      t        t        «      t        dœ}t        t        |¬«      }|sy	 t        j                  |«      }|j                  dd«      xs dS # t        $ rv t        j                  d|t        j                  «      }|rJ	 t        j                  |j                  d«      «      j                  dd«      xs dcY S # t        $ r Y nw xY w|cY S w xY w)Nr   )ÚstartrecordÚ	endrecordÚperpageÚcolumnId)rG   r   Úresultz\{.*\}r   )r:   Ú	PAGE_SIZEÚ	COLUMN_IDrH   ÚAPI_URLÚjsonÚloadsr4   r9   r   r‘   rŽ   ra   )ÚpagerG   rq   Újsro   s        r   Ú
fetch_listrÈ   7  sá   € ô ˜D 1™H¬	Ñ1°AÑ5Ó6Ü˜¤	Ñ)Ó*Ü”y“>Üñ	€Fô ”G FÔ
+€CÙØðÜ�Z‰Z˜‹_ˆØ�v‰v�h Ó#Ò) rÐ)øÜò ä�I‰I�i ¤b§d¡dÓ+ˆÙðÜ—z‘z !§'¡'¨!£*Ó-×1Ñ1°(¸BÓ?ÒEÀ2ÒEøÜò ÙðúàŠ
ðús6   Á*A? Á?0C>Â07C*Ã'C>Ã*	C6Ã3C>Ã5C6Ã6C>Ã=C>c                 ól  — g }d}t        j                  d| «      }|rt        |j                  d«      «      }t        j                  d| t         j
                  «      }|D �]Ð  }t        j                  d|«      }d}|rQt        j                  d|j                  d«      «      \  }}	}
|›d|	j                  d«      ›d|
j                  d«      ›�}t        j                  d	|t         j
                  t         j                  z  «      D �](  }t        j                  |j                  d«      «      j                  «       }|j                  d«      }t        j                  d
|«      }|rt        |j                  d«      «      nd}|s/t        t        j                  dd|j                  d«      «      «      }|rt        |«      dk  rŒ½d|vrŒÂ|j!                  d«      r
t"        |z   }n8|j!                  d«      s't$        j&                  j)                  t"        dz   |«      }|j+                  |||f«       �Œ+ �ŒÓ ||fS )Nr   z <totalrecord>(\d+)</totalrecord>r   z<!\[CDATA\[(.*?)\]\]>z;<span class="timedate">\s*(\d{4}-\d{1,2}-\d{1,2})\s*</span>r   ú-r&   z$<a[^>]*href="([^"]+)"[^>]*>(.*?)</a>ztitle="([^"]*)"r`   z	/content/ú/Úhttp)r   r‘   Úintra   ÚfindallrŽ   ri   ÚzfillÚfinditerrc   r   r   r   r   r   rn   re   ÚBASE_URLrj   rk   rl   rm   )Úapi_textr™   Útotalro   ÚrecordsÚfragÚdmr©   ÚyÚmoÚddÚlmrO   r§   Útmrq   s                   r   Ú
parse_listrÜ   Q  sÂ  € Ø€EØ€EÜ
�	‰	Ð5°xÓ@€AÙÜ�A—G‘G˜A“J“ˆÜ�j‰jÐ1°8¼R¿T¹TÓB€GØó )ˆÜ�Y‰YÐUÐW[Ó\ˆØˆÙÜŸ™  r§x¡x°£{Ó3‰IˆAˆr�2Ú §¡¨!¥¨b¯h©h°q¬kÐ:ˆAÜ—+‘+ÐEÀtÌRÏTÉTÔTV×TXÑTXÉ[ÓYó 	)ˆBÜ×$Ñ$ R§X¡X¨a£[Ó1×7Ñ7Ó9ˆDØ—(‘(˜1“+ˆCÜ—‘Ð-¨sÓ3ˆBÙ.0”+˜bŸh™h q›kÔ*°bˆCÙÜ!¤"§&¡&¨°R¸¿¹À!»Ó"EÓF�Ùœ#˜c›( Qš,ØØ $Ñ&ØØ�‰˜sÔ#Ü $‘‘Ø—_‘_ VÔ,Ü—|‘|×+Ñ+¬H°s©N¸DÓA�Ø�L‰L˜$  Q˜Ö(ò	)ð)ð, �%ˆ<Ðr   c                 óF  — dx}x}}d }t         �rO	 t        | d«      }|j                  ddt        j                  dt        j                  «      i¬«      }|r|j                  d«      rt        |d   «      }|j                  ddt        j                  dt        j                  «      i¬«      }|r�|j                  d«      rpt        j                  d	|d   «      }|rU|j                  d
«      ›d|j                  d«      j                  d«      ›d|j                  d«      j                  d«      ›�}|s.|j                  d«      }	|	rt        |	j                  d¬«      «      }|st        j                  d| t        j                  t        j                  z  «      }
|
rGt        j                  dt        |
j                  d
«      «      «      D �cg c]  }|sŒ|‘Œ	 }}|r|d   nd}|r6|j                  d¬«      }|r"dj                  d„ |j                  D «       «      }|smt        j                  d| «      }|rU|j                  d
«      ›d|j                  d«      j                  d«      ›d|j                  d«      j                  d«      ›�}|||fS # t        $ r d }Y �Œ;w xY wc c}w )Nr   rK   ÚmetaÚnameÚArticleTitle)r•   r�   ÚPubDatez(\d{4})-(\d{1,2})-(\d{1,2})r   rÊ   r&   r   Úh1TrS   z<title>(.*?)</title>r   éÿÿÿÿÚzoom)Úidc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w)N)r:   )Ú.0Úcs     r   ú	<genexpr>zparse_detail.<locals>.<genexpr>Ž  s   è ø€ Ò"?¨a¤3 q§6Ñ"?ùs   ‚u'   (\d{4})[-å¹´/](\d{1,2})[-æœˆ/](\d{1,2}))r   r—   r   Úcompilerc   r4   r   r‘   ra   rÏ   r’   r9   rŽ   ri   r”   Úcontents)Ú	html_textrv   rU   ÚdateÚcontent_htmlÚsoupÚmtÚmdrÖ   râ   ro   r]   r¬   rŸ   s                 r   Úparse_detailrò   q  s%  € Ø"$Ð$€EÐ$ˆD�<Ø€DÞð	Ü  ¨MÓ:ˆDØ—‘˜6¨&´"·*±*¸_ÌbÏdÉdÓ2SÐ)T�ÓUˆBÙ�b—f‘f˜YÔ'Ü# B y¡MÓ2�Ø—‘˜6¨&´"·*±*¸ZÌÏÉÓ2NÐ)O�ÓPˆBÙ�b—f‘f˜YÔ'Ü—Y‘YÐ=¸rÀ)¹}ÓM�ÙØ)+¯©°!­°b·h±h¸q³k×6GÑ6GÈÕ6JÈBÏHÉHÐUVËK×L]ÑL]Ð^_ÔL`Ða�DÙØ—Y‘Y˜t“_�ÙÜ'¨¯©¸$¨Ó(?Ó@�Eñ Ü�I‰IÐ-¨y¼"¿$¹$ÄÇÁ¹+ÓFˆÙÜ "§¡¨´¸Q¿W¹WÀQ»ZÓ1HÓ IÖO˜1ÊQ’QÐOˆEÐOÙ!&�E˜"’I¨BˆEáØ�Y‰Y˜&ˆYÓ!ˆÙØŸ7™7Ñ"?°2·;±;Ô"?Ó?ˆLáÜ�Y‰YÐAÀ9ÓMˆÙØ!#§¡¨!¥¨b¯h©h°q«k×.?Ñ.?ÀÕ.BÀBÇHÁHÈQÃK×DUÑDUÐVWÔDXÐYˆDØ�$˜Ð$Ð$øô# ò 	Ø‹Dð	üò
 Ps   ‘EJ Ç	JÇJÊJÊJc                  óª  — t         j                  j                  dt        j                  j	                  t        j                  j                  t        «      «      «       ddlm}  t        dt        t        t        t        fz  d¬«       dx}x}}t        «       }g }g }d}t        dt        dz   «      D �]9  }	 t!        |«      }	t%        |	«      \  }}|r|s|}|st        d|z  d¬«        �nt        d	|t'        |«      |fz  d¬«       |D �]²  \  }}}||v rŒ|j)                  |«       |r|t        k  r|dz  }Œ/t+        |«      }|s|dz  }ŒBt-        ||«      \  }}}|s|}|s|}t/        ||«      \  }}}t'        t1        j2                  d
d|«      j5                  «       «      }t1        j6                  d|t0        j8                  «       xr+ t1        j6                  d|t0        j8                  «       xr | }|dk  s|rt        d|d d z  d¬«       |dz  }�Œt        ||||d|t:        dt<        |r-t?        j@                  |D ��cg c]
  \  }}||dœ‘Œ c}}d¬«      nddœ}tB        r|jE                  |«       n|jE                  |«       |dz  }t        d|d d |||rdndfz  d¬«       tG        jH                  d«       �Œµ tB        s|r | |t        ¬«       g }tG        jH                  d«       �Œ< tB        rltK        tB        dd¬«      5 }|D ]+  }|jM                  t?        j@                  |d¬«      dz   «       Œ- 	 d d d «       t        dtB        t'        |«      fz  d¬«       n|r | |t        ¬«       t        d ||||fz  d¬«       t        d!t        z  d¬«       y # t"        $ r}
t        d||
fz  d¬«       Y d }
~
 ŒÌd }
~
ww xY wc c}}w # 1 sw Y   Œ‘xY w)"Nr   )Úpush_to_searchdbz"=== %s (%s) pages=%d cutoff=%s ===Tr*   r   zPage %d fetch error: %szPage %d: empty, stopz"Page %d: found %d items (total=%d)r`   r   rŒ   r�   r   z  skip empty/placeholder: %sé(   )rU   r>   F)Úensure_ascii)Ú	site_nameÚ
source_urlr>   rU   Úpub_dateÚsummaryr�   ÚcategoryÚtagsÚ
group_namert   u     + %s (%s, %då­—%s)é&   u   , è¡¨æ ¼gš™™™™™É?)Úbatch_labelg333333Ó?Úwr   )r7   rˆ   zJSONL written: %s (%d rows)u=   æ–°å¢ž: %d | è·³è¿‡: %d | CUTOFFæˆªæ–­: %d | åˆ—è¡¨æ€»æ•°: %dz=== %s done ===)'Úsysrg   Úinsertrf   ÚdirnameÚabspathÚ__file__Úcrawler_librô   r=   Ú	SITE_NAMEÚSCRIPT_NAMEÚ_PAGESÚCUTOFFr›   r.   rÈ   r9   rÜ   rn   rœ   rH   rò   rº   r   r   r   r‘   rc   ÚCATEGORYÚ
GROUP_NAMErÄ   Údumpsr   rm   r;   r<   ÚopenÚwrite)rô   Ú	new_countÚ
skip_countÚcutoff_countÚ	seen_urlsÚ
jsonl_rowsÚbatchÚ
list_totalrÆ   rÒ   rD   r™   rÓ   rr   rU   rí   ÚdhtmlÚdtitleÚddaterî   r�   rª   ÚattsÚ	plain_lenÚno_parar¹   r   ÚitemÚfÚrows                                 r   Úmainr   —  s¿  € Ü‡H�H‡O�O�A”r—w‘w—‘¤r§w¡w§¡´xÓ'@ÓAÔBÝ,ä	Ð
.´)¼[Ì&ÔRXÐ1YÑ
YØõð -.Ð-€IÐ-�
˜\Ü“€IØ€JØ€EØ€Jä�aœ !™Ó$ó 9ˆð	Ü! $Ó'ˆHô " (Ó+‰ˆˆuÙ™ØˆJÙÜÐ(¨4Ñ/°tÕ<ÚÜÐ2°d¼CÀ»JÈÐ5NÑNÐVZÕ[à$)ó '	Ñ ˆG�U˜DØ˜)Ñ#ØØ�M‰M˜'Ô"Ù˜œvšØ Ñ!�ØÜ˜gÓ&ˆEÙØ˜a‘�
ØÜ*6°u¸gÓ*FÑ'ˆF�E˜<ÙØ�ÙØ�Ü'3°LÀ'Ó'JÑ$ˆG�Y ÜœBŸF™F :¨r°7Ó;×AÑAÓCÓDˆIÜŸ9™9 Y°¼¿¹Ó>Ð>ò UÜ!Ÿy™y¨°G¼R¿T¹TÓBÐBòUØKTÀ}ð à˜1Š}¡ÜÐ4°v¸c¸r°{ÑBÈ$ÕOØ˜a‘�
Ùä&°gÀgØ¨U¸rØ"´À"Ü(áVZô  $Ÿz™zØ8<×=±°°1˜q¨Ó+Ó=ÈEõ SØ`bñˆDõ Ø×!Ñ! $Õ'à—‘˜TÔ"Ø˜‰NˆIÜÐ(¨F°3°B¨K¸À	Ù9B©:Èð,Lñ LØSWõYä�J‰J�sŽOðO'	õP ™eÙ˜U´Õ<ØˆEÜ�
‰
�3Žðs9õv Ü”*˜c¨GÔ4ð 	D¸Ø!ò D�Ø—‘œŸ
™
 3°UÔ;¸dÑBÕCñD÷	Dô 	Ð+¬z¼3¸z»?Ð.KÑKÐSWÖXáÙ˜U´Õ<ä	Ð
IØ�j ,°
Ð
;ñ<ØCGõIä	Ð
œiÑ
'¨tÖ4øôG ò 	ÜÐ+¨t°Q¨iÑ7¸tÕDÝûð	üóR >÷ 	Dð 	Dús*   Â7NÉO"Ì1O	Î	O Î#N;Î;O Ï	OÚ__main__)é   N)Nr"  )4Ú__doc__r  rf   r   r;   rÄ   Úhtmlr   Úurllib.parserj   r   r   Úbs4r   ÚImportErrorÚenvironr4   r   r6   r  r  r  r  rÑ   ÚLIST_URLrÃ   rÂ   rÁ   ÚnowÚstrftimer
  r-   Ú
_MAX_PAGESrš   Úargvr²   rN   re   rÍ   ri   Ú
ValueErrorrn   r	  r   rE   rH   rº   rÈ   rÜ   rò   r   Ú__name__© r   r   ú<module>r1     s¹  ðñ÷" ?× >× >Ó >ß (ðÝ!ð �Z‰Z�^‰^˜L¨"Ó-€
Ø€à3€	Ø€
Ø%€Ø€Ø%€Ø>€Ø
L€Ø2€	Ø€	à
ˆ(�,‰,‹.™9¨'Ô2Ñ
2×	<Ñ	<¸ZÓ	H€ðCà>Ø'Ø(Øñ€ð €
Ù�c—h‘hÓò 
�D€A€qØ‡|�|�JÔð	Ù˜QŸW™W S¨!›_¨QÑ/Ó0‰Jð 
ˆi‹˜A ™E¡C¨¯©£MÓ1ð	Ù˜SŸX™X a¨!¡e™_Ó-‰Jð
ð " Q’‰¨A€òóó*ò$!òDò4ò@#%òLS5ðl ˆzÒÙ…Fð øði ò ØƒMðûð@ ò 	Ùð	ûð
 ò 	Ùð	ús5   ¨E Â<EÃ8EÅEÅEÅEÅEÅE$Å#E$