Ë
    iµjØM  ã                   óÀ  — 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 e
j4                  «        ed¬«      z
  j7                  d«      ZddddœZdZ eej@                  «      D ]k  \  Z!Z"e"jG                  d«      r	  e$e"jK                  dd«      d   «      ZŒ4e"dk(  sŒ:e!dz    e'ej@                  «      k  sŒS	  e$ej@                  e!dz      «      ZŒm edk\  rendZ(d„ Z)d$d„Z*d„ Z+d„ Z,d„ Z-d „ Z.d!„ Z/d"„ Z0e1d#k(  r e0«        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)%u3  
crawl_yingquan_gggs.py - é˜œé˜³å¸‚é¢�æ³‰åŒºäººæ°‘æ”¿åºœ å…¬å‘Šå…¬ç¤º

åˆ—è¡¨: https://www.yingquan.gov.cn/Content/showList/508/page_1.html
CMS: showList ç³»ï¼ˆå®‰å¾½ç«™ç¾¤, dist/js/pagination.jsï¼‰
  åˆ†é¡µ: <pagination currentpage="1" pagesize="20" pagecount="12" total="224">
        â†’ 12 é¡µ / 224 æ�¡ / 20 æ�¡æ¯�é¡µï¼›ç¬¬ N é¡µ = /Content/showList/508/page_N.html
        âš ï¸� page_100+ è¿”å›ž HTTP 200 çš„**ç©ºå£³é¡µ**ï¼ˆä¸�æ˜¯ 404ï¼‰â†’ å¿…é¡»é� ã€Œ0 æ�¡ã€�å�œï¼Œä¸�èƒ½é� çŠ¶æ€�ç �
  åˆ—è¡¨å®¹å™¨: div.m-cglist.m-liststyle1 > ul > li
        <li><span>2026-09-21</span><a href="/Content/show/1343340.html" title="å®Œæ•´æ ‡é¢˜">â€¦</a></li>
        âš ï¸� æ—¥æœŸ <span> åœ¨ <a> **ä¹‹å‰�**ï¼ˆä¸Žä¸¹å¯¨ç›¸å��ï¼‰
        âš ï¸� ä¾§æ �å…¶ä»–æ �ç›®(494/563/511/512/549)ä¹Ÿç”¨å�Œæ ·çš„ /Content/show/ID.html å½¢æ€�
           â†’ ä¸�èƒ½æŒ‰ URL è·¯å¾„è¿‡æ»¤ï¼Œå¿…é¡»**é™�å®šåœ¨ m-cglist å®¹å™¨å†…**è§£æž�
  è¯¦æƒ…: meta ArticleTitle / PubDate / ColumnName / ContentSource
        æ­£æ–‡: div#zoom
        âš ï¸� é™„ä»¶åŒºæ˜¯ #zoom çš„**å…„å¼Ÿ**èŠ‚ç‚¹ div.m-dtdownload
           ä¸”é™„ä»¶ URL æ˜¯ /download?siteId=4&id=739198ï¼ˆ**æ— æ–‡ä»¶æ‰©å±•å��**ï¼‰
           â†’ æŒ‰æ‰©å±•å��æ‰¾å¿…æ¼�ï¼Œé¡»å�•ç‹¬è§£æž�è¯¥å®¹å™¨
        å™ªå£°: div.m-dtcode(äºŒç»´ç �) / div.m-dtsxqh(é¡¶éƒ¨Â·æ‰“å�°Â·å…³é—­Â·é¡µè„šå¯¼èˆª) éƒ½åœ¨ #zoom å¤–
é    N)ÚdatetimeÚ	timedelta)ÚBeautifulSoupÚ
JSONL_PATHÚ úutf-8u"   é¢�æ³‰åŒºäººæ°‘æ”¿åºœ-å…¬å‘Šå…¬ç¤ºu   å®‰å¾½zcrawl_yingquan_gggs.pyu   å…¬å‘Šå…¬ç¤ºzhttps://www.yingquan.gov.cnz<https://www.yingquan.gov.cn/Content/showList/508/page_1.htmlz/Content/showList/508/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?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9)z
User-AgentÚAcceptzAccept-Languageé   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| «      } 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    ú(/root/gov_crawler/crawl_yingquan_gggs.pyÚclean_titler   A   s¦   € ÙØÜ×Ñ˜!Ó€AØ	�	‰	�(˜BÓ×'Ñ'¨°"Ó5×=Ñ=¸hÈÓK×SÑSÐT\Ð^`Óa€AÜ
�‰ÐEÀrÈ1ÓM€AÜ
�‰ˆ~˜r 1Ó%€AÜ
�‰ˆz˜2˜qÓ!€AÜ
�‰ˆv�s˜AÓ€AØ�7‰7‹9Ðó    c                 óØ  — t        t        «      }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)Né   r   F)ÚheadersÚtimeoutÚverifyéÈ   zHTTP %séP   é   z  [fetch fail] éZ   z -> T©Úflush)ÚdictÚHEADERSÚrangeÚrequestsÚurllib3Údisable_warningsÚ
exceptionsÚInsecureRequestWarningÚgetÚstatus_codeÚENCÚencodingÚtextÚ	ExceptionÚstrÚtimeÚsleepÚprint)	Úurlr   ÚhÚlast_errÚattemptr*   r+   ÚrÚes	            r   Úfetchr?   M   sÍ   € ÜŒW‹€AØ€HÜ˜“8ò ˆð		#ß$Ø×$Ñ$ 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Ã	C)ÃC$Ã$C)c                 óP   — t         j                  j                  t        d| z  «      S )u3   ç¬¬ N é¡µ = page_N.htmlï¼ˆç¬¬ 1 é¡µä¹Ÿæ˜¯ page_1ï¼‰z"/Content/showList/508/page_%d.html)ÚurllibÚparseÚurljoinÚBASE_URL)Úpages    r   Úlist_page_urlrF   `   s    € ä�<‰<×Ñ¤Ð*NÐQUÑ*UÓVÐVr   c                 ó¢  — g }t         s|S t        | d«      }|j                  d«      xs |j                  d«      }|€|S |j                  d«      D �]{  }|j                  dd¬«      }|sŒ|j	                  d«      xs d	j                  «       }|j                  d
«      r|j                  «       j                  d«      sŒn|j                  d«      }d	}|r~t        j                  d|j                  dd¬«      «      }	|	rU|	j                  d«      ›d|	j                  d«      j                  d«      ›d|	j                  d«      j                  d«      ›�}|s�Œt        |j	                  d«      xs |j                  dd¬«      «      }
|
rt        |
«      dk  r�ŒF|j!                  t"        j$                  j'                  t(        |«      |
|f«       �Œ~ |S )uS   é™�å®šåœ¨ div.m-cglist å®¹å™¨å†…è§£æž�ï¼Œé�¿å…�ä¾§æ �å…¶ä»–æ �ç›®çš„å�Œå½¢æ€�é“¾æŽ¥úhtml.parserzdiv.m-cglistzdiv.m-liststyle1ÚliÚaT©ÚhrefrL   r   z/Content/show/z.htmlÚspanú(\d{4})-(\d{1,2})-(\d{1,2})r   ©r   r   ú-r#   r   Útitle)r   Ú
select_oneÚselectÚfindr/   r   Ú
startswithÚlowerÚendswithr   ÚsearchÚget_textÚgroupÚzfillr   ÚlenÚappendrA   rB   rC   rD   )Ú	html_textÚitemsÚsoupÚboxrI   rJ   rL   rM   ÚdateÚdmrQ   s              r   Ú
parse_listrd   e   sŠ  € à€EÝØˆÜ˜ MÓ2€DØ
�/‰/˜.Ó
)Ò
P¨T¯_©_Ð=OÓ-P€CØ
€{ØˆØ�j‰j˜Óó JˆØ�G‰G�C˜dˆGÓ#ˆÙØØ—‘�f“Ò# ×*Ñ*Ó,ˆØ�‰Ð/Ô0¸¿
¹
»×8MÑ8MÈgÔ8VØØ�w‰w�v‹ˆØˆÙÜ—‘Ð9¸4¿=¹=ÈÐTX¸=Ó;YÓZˆBÙØ%'§X¡X¨a¥[°"·(±(¸1³+×2CÑ2CÀAÕ2FÈÏÉÐQRË×HYÑHYÐZ[ÔH\Ð]�ÙÙÜ˜AŸE™E '›NÒI¨a¯j©j¸ÀD¨jÓ.IÓJˆÙœ˜E›
 QšÙØ�‰”f—l‘l×*Ñ*¬8°TÓ:¸EÀ4ÐHÖIð%Jð& €Lr   c                 ó  — g }| j                  d«      D ]é  }|j                  dd¬«      D ]Ñ  }|j                  d«      xs dj                  «       }|r%t	        j
                  d|t        j                  «      rŒNt        |j                  dd¬	«      «      xs5 t        j                  j                  |j                  d
«      d   «      xs d}|j                  t        j                  j!                  ||«      |f«       ŒÓ Œë |S )u    ç«™ç‚¹é™„ä»¶åŒºï¼ˆ#zoom çš„å…„å¼ŸèŠ‚ç‚¹ div.m-dtdownloadï¼‰
    âš ï¸� URL å½¢å¦‚ /download?siteId=4&id=739198 â€”â€” æ— æ–‡ä»¶æ‰©å±•å��ï¼ŒæŒ‰æ‰©å±•å��ä¼šå…¨æ¼�zdiv.m-dtdownloadrJ   TrK   rL   r   ú^(?:javascript:|mailto:|tel:|#)r   rO   ú?r   õ   é™„ä»¶)rS   Úfind_allr/   r   r   ÚmatchÚIr   rY   ÚosÚpathÚbasenameÚsplitr]   rA   rB   rC   )r`   Úpage_urlÚoutÚdivrJ   rL   Únames          r   Úcollect_extra_attachmentsrt   „   sä   € ð €CØ�{‰{Ð-Ó.ò EˆØ—‘˜c¨�Ó-ò 	EˆAØ—E‘E˜&“MÒ' R×.Ñ.Ó0ˆDÙœ2Ÿ8™8Ð$FÈÌbÏdÉdÔSØÜ˜qŸz™z¨#°T˜zÓ:Ó;Òo¼r¿w¹w×?OÑ?OÐPT×PZÑPZÐ[^ÓP_Ð`aÑPbÓ?cÒoÐgoˆDØ�J‰JœŸ™×,Ñ,¨X°tÓ<¸dÐCÕDñ	EðEð €Jr   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
d¬«      D �]›  }|d   }|j                  d«      s;|j                  d«      s*t        j                  d|t         j                  «      sd|v sŒU|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t'        ‰(«      z  }
d|	›d|›d�‰(|
<   |j)                  |
«       �Œž |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$t'        ‰(«      z  }
d%d&j-                  |«      z   d'z   ‰(|
<   |j)                  |
«       �Œ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$t'        ‰(«      z  }
d(|	›d|›d)�‰(|
<   |j)                  |
«       Œç t/        |«      } ˆ'ˆ(ˆfd*„}t        j                  d+|| t         j                  t         j                  z  ¬«      } t        �r<	 t	        | d	«      }|j                  d«      D ]%  }d,D ]  }|j2                  j5                  |d-«       Œ  Œ' |j                  d.«      D ]×  }|j7                  d.«      €^|j7                  d/«      €M|j                  d¬«      s3|j7                  d«      s"|j7                  d
«      s|j+                  «        Œjd!|_        Œr|j                  d¬«      sD|j7                  d/«      s3|j7                  d«      s"|j7                  d
«      s|j+                  «        ŒÈ|j;                  «        ŒÙ t/        |«      } g Š)ˆ)fd0„}t        j                  d1| t         j                  «      rd2nd}d-}|| k7  r@| }t        j                  d3|| t         j                  t         j                  z  ¬«      } || k7  rŒ@t        j                  d'd4| t         j                  ¬«      } t        j                  d5d6| t         j                  ¬«      } t        j                  d7d| t         j                  ¬«      } g }| j                  d8«      D �]¼  }|j                  «       }|sŒt        j                  d9d|«      }t        j                  d:d|«      }|j=                  d;d«      j=                  d<d=«      }t        j                  d>d=|«      }t        j                  d?d|«      }t?        j@                  |«      }|j=                  d@d=«      j=                  dAd=«      }t        j                  dBd|«      }|sŒæt        j                  dC|«      rŒý‰(jC                  «       D ]  \  }}|j=                  ||«      }Œ tE        ‰)«      D ]  \  }}|j=                  dD|z  |«      }Œ t        j                  dE|t         j                  «      s*t        j                  dF|t         j                  «      sdG|z  }|j%                  |j                  «       «       �Œ¿ d8j-                  |«      }‰(jC                  «       D ]  \  }}|j=                  ||«      }Œ tE        ‰)«      D ]  \  }}|j=                  dD|z  |«      }Œ t        j                  dHd|«      }t?        j@                  |«      }t        j                  dId6|«      }t        j                  dJd8|«      }t        j                  d>d=|«      }tG        dK«      D ]P  } t        j                  dLd%|t         j                  ¬«      }t        j                  dMd'|t         j                  ¬«      }ŒR t        j                  dNd|t         j                  ¬«      }tI        «       g }"}!|j                  d8«      D ]W  }t        j                  dOdt        j                  d?d|«      «      }
|
r|
|!v rŒ6|!jK                  |
«       |"j%                  |«       ŒY d8j-                  |"«      j                  «       }g tI        «       }$}#‰'D ].  \  }%}&|%|$v rŒ|$jK                  |%«       |#j%                  |%|&f«       Œ0 |||#fS # t0        $ r Y �Œ€w xY w# t0        $ r Y �Œw xY w)PuR   æ­£æ–‡ HTML æ¸…æ´—ï¼šä¿�ç•™ <p>/<table>ï¼Œé™„ä»¶è½¬ <p><a>ç»�å¯¹URL</a></p> æ®µè�½r   r   z
<!--.*?-->)Úflagsz<meta[^>]*>z<script[^>]*>.*?</script>z<style[^>]*>.*?</style>u   ã€�å­—å�·ï¼š[^ã€‘]*ã€‘rH   rJ   TrK   rL   Úappendixzdata-appendixz&\.(pdf|docx?|xlsx?|zip|rar|wps|et|ofd)z/module/download/ÚoldsrcÚOLDSRCrf   rO   Ú_titlerQ   rg   rh   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="ú</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#   r   u   ^é™„ä»¶[:ï¼š]\s*rg   rh   z__LINK__%d__r{   r|   r}   )rZ   r   rj   rk   rV   rU   r   r   r   r   rl   rm   rn   ro   rA   rB   rC   r]   r\   )	ÚmrL   ÚinnerÚtxtÚabs_urlÚkeyÚattachmentsÚlink_protectrp   s	         €€€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>)ÚstyleÚclassÚlangÚdirÚalignÚvalignÚwidthÚheightÚborderÚcellpaddingÚcellspacingNrr   Útablec                 óf   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  z  S )Nr   ú__TBL__%d__r   )r]   rZ   r\   )r„   Ú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*(?=<)úú	r   z	[ \t]{2,}r   õ   Â z&nbsp;z[\s\u200b\u200c\u200d\ufeff]+uš   ^[ã€�\[ï¼ˆ(]?\s*(?:è¿”å›žé¡¶éƒ¨|å›žåˆ°é¡¶éƒ¨|è¿”å›žåˆ—è¡¨|æ‰“å�°(?:æœ¬é¡µ)?|å…³é—­(?:çª—å�£)?|åˆ†äº«|æ‰«ä¸€æ‰«|ä¸Šä¸€ç¯‡|ä¸‹ä¸€ç¯‡|é¡¶éƒ¨)\s*[ã€‘\]ï¼‰)]?$r™   ú<p[ >]z<(?:table|ul|ol|h[1-6])\bz	<p>%s</p>z __(?:LINK|TBL|IMG|ATTACH)__\d+__z[ \t]+\nz\n{3,}r   z<p\b[^>]*>\s*<p\b[^>]*>z</p\s*>\s*</p\s*>z<p\b[^>]*>\s*</p\s*>r   )&r   r   ÚSrk   r   ri   r/   rX   r   rj   rY   rl   rm   rn   ro   rA   rB   rC   r]   r\   Úreplace_withÚ	decomposeÚjoinr5   r4   ÚattrsÚpoprT   rs   Úunwrapr   r   r   r_   Ú	enumerater)   ÚsetÚadd)*Úcontentrp   Ú_souprJ   rL   Ú_hrefÚ_oldsrcÚ	real_hrefr†   r‡   rˆ   r~   r   r€   ÚimgsÚsrcsr‹   ÚtagÚattrÚdr›   Ú	has_tableÚprevÚpartsÚblockÚbÚplainÚkÚvÚiÚtblrq   Ú_ÚseenÚfinalÚdedupÚseen_uÚur   r‰   rŠ   rš   s*    `                                     @@@r   Úhtml_to_textrÅ   ’   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æð4	Ü! '¨=Ó9ˆEØ—^‘^ C¨d�^Ó3ó (�Ø˜‘y�Ø—E‘E˜*Ô%¨¯©¨Ô)?ÜŸ9™9Ð%NÐPTÔVX×VZÑVZÔ[Ø.°$Ò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Ó*ò �ð —6‘6˜%“=Ð(¨Q¯V©V°G«_Ð-DØŸ:™:¨D˜:Ô1¸!¿&¹&À¼-ÐPQ×PVÑPVÐWZÔP[ØŸ™�à!$˜�ØŸ™¨$˜Ô/¸¿¹¸w¼Ø !§¡ 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ð  rð  tyô  zØØ ×&Ñ&Ó(ò 	 ‰DˆAˆqØ—	‘	˜!˜Q“‰Að	 ä Ó.ò 	2‰FˆAˆsØ—	‘	˜-¨!Ñ+¨SÓ1‰Að	2ô —	‘	˜) Q¬¯©Ô-ÜŸ	™	Ð">ÀÄ2Ç4Á4ÔHØ˜a‘ˆAØ�‰�Q—W‘W“YÖð1 ð4 �+‰+�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ô �1‹Xò DˆÜ�f‰fÐ/°¸Ä2Ç4Á4ÔHˆÜ�f‰fÐ)¨6°3¼b¿d¹dÔC‰ðDô �&‰&Ð(¨"¨c¼¿¹Ô
>€Cä“%˜ˆ%€DØ�Y‰Y�vÓò ˆÜ�f‰f�V˜R¤§¡¨
°B¸Ó!:Ó;ˆÙ�c˜T‘kØØ�‰�ŒØ�‰�Q�ðð �+‰+�eÓ
×
"Ñ
"Ó
$€Càœ›ˆ6€EØò ‰ˆˆ1Ø�‰;ØØ�
‰
�1ŒØ�‰�a˜�VÕð	ð �	˜5Ð Ð øôy ò 	Úð	ûôT ò 	Úð	úsG   Ã-A3o, Å!F+o, Ì:o, Ío, ÍCo, Ð8E o, Ö?D;o< ï,	o9ï8o9ï<	p	ðp	c                 óL  — dx}x}}g }d }t         �r	 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d¬«      «      }|sU|j                  d«      }|rBt        |j                  d¬«      «      }t        j                  dd|«      j                  «       }|}|j                  d«      }|€$|j                  d«      xs |j                  d«      }|�"dj                  d„ |j                  D «       «      }t!        ||«      }|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)Nr   rH   Úmetars   ÚArticleTitle)r¥   r«   ÚPubDaterN   r   rP   r#   r   Úh1r   TrO   rQ   u1   [-â€”|]\s*(?:é˜œé˜³å¸‚)?é¢�æ³‰åŒºäººæ°‘æ”¿åºœ\s*$z#zoomzdiv.m-dttextszdiv.j-fontContentc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)r5   )Ú.0Úcs     r   ú	<genexpr>zparse_detail.<locals>.<genexpr>p  s   è ø€ Ò&C°!¤s¨1§vÑ&Cùs   ‚u'   (\d{4})[-å¹´/](\d{1,2})[-æœˆ/](\d{1,2}))r   rT   r   Úcompilerk   r/   r   rX   rZ   r[   rY   r   r   rR   r¤   Úcontentsrt   r4   )r^   rp   rQ   rb   Úcontent_htmlÚ
extra_attsr`   ÚmtÚmdrc   rÊ   Úttr   Úels                 r   Úparse_detailrØ   S  sA  € Ø"$Ð$€EÐ$ˆD�<Ø€JØ€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“_�ÙÜ'¨¯©°C¸t¨Ó(DÓE�EÙØ—Y‘Y˜wÓ'�ÙÜ# B§K¡K°d KÓ$;Ó<�AÜŸ™ÐSÐUWÐYZÓ[×aÑaÓc�AØ�EØ—‘ Ó)ˆBØˆzØ—_‘_ _Ó5Ò]¸¿¹ÐI\Ó9]�Øˆ~Ø!Ÿw™wÑ&C°r·{±{Ô&CÓC�Ü2°4¸ÓBˆJñ Ü�Y‰YÐAÀ9ÓMˆÙØ!#§¡¨!¥¨b¯h©h°q«k×.?Ñ.?ÀÕ.BÀBÇHÁHÈQÃK×DUÑDUÐVWÔDXÐYˆDØ�$˜ jÐ0Ð0øô ò 	ØŠDð	ús   “HJ ÊJ#Ê"J#c                  óB  — 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 }t        dt        dz   «      D �]±  }t!        |«      }t#        |«      }	|	st        d|z  d¬«        �n†t%        |	«      }
|
st        d|z  d¬«        �nft        d	|t'        |
«      fz  d¬«       |
D �]  \  }}}||v rŒ|j)                  |«       |r|t        k  r|dz  }Œ/t#        |«      }|s|dz  }ŒBt+        ||«      \  }}}}|s|}|s|}t-        ||«      \  }}}t        d
„ |D «       «      }|D ]:  \  }}||v rŒ|j)                  |«       |j/                  ||f«       |d|›d|›d�z  }Œ< 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|j/                  |«       n|j/                  |«       |dz  }t        d|d d |||rdnd|rdt'        |«      z  ndfz  d¬«       tE        jF                  d«       �Œ tB        s|r | |t        ¬«       g }tE        jF                  d«       �Œ´ tB        rltI        tB        d d!¬"«      5 }|D ]+  }|jK                  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 c c}}w # 1 sw Y   ŒgxY w)'Nr   )Úpush_to_searchdbz"=== %s (%s) pages=%d cutoff=%s ===Tr%   r   zPage %d fetch error, stopzPage %d: empty, stopzPage %d: found %d itemsc              3   ó&   K  — | ]	  \  }}|–— Œ y ­wrÌ   © )rÍ   rÄ   r   s      r   rÏ   zmain.<locals>.<genexpr>¥  s   è ø€ Ò+™d˜a œÑ+ùs   ‚z

<p><a href="r|   r‚   r   r   r    z<a[ >]r   z  skip empty/placeholder: %sé(   )rQ   r9   F)Úensure_ascii)Ú	site_nameÚ
source_urlr9   rQ   Úpub_dateÚsummaryr«   ÚcategoryÚtagsÚ
group_namer‰   u     + %s (%s, %då­—%s%s)é$   u   , è¡¨æ ¼u
   , é™„ä»¶%dgš™™™™™É?)Úbatch_labelg333333Ó?Úwr   )r2   rœ   zJSONL written: %s (%d rows)u*   æ–°å¢ž: %d | è·³è¿‡: %d | CUTOFFæˆªæ–­: %dz=== %s done ===)&Úsysrm   Úinsertrl   ÚdirnameÚabspathÚ__file__Úcrawler_librÚ   r8   Ú	SITE_NAMEÚSCRIPT_NAMEÚ_PAGESÚCUTOFFr©   r)   rF   r?   rd   r\   rª   rØ   rÅ   r]   r   r   r   rX   rk   ÚCATEGORYÚ
GROUP_NAMEÚjsonÚdumpsr   r6   r7   ÚopenÚwrite)rÚ   Ú	new_countÚ
skip_countÚcutoff_countÚ	seen_urlsÚ
jsonl_rowsÚbatchrE   r9   r^   r_   r‡   rQ   rb   ÚdhtmlÚdtitleÚddaterÒ   rÓ   r«   rµ   ÚattsÚknownrÄ   ÚnmÚ	plain_lenÚno_parar   Ú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ä�aœ !™Ó$ó @ˆÜ˜DÓ!ˆÜ˜#“Jˆ	ÙÜÐ-°Ñ4¸DÕAÚÜ˜9Ó%ˆÙÜÐ(¨4Ñ/°tÕ<ÚÜÐ'¨4´°U³Ð*<Ñ<ÀDÕIà$)ó 0	Ñ ˆG�U˜DØ˜)Ñ#ØØ�M‰M˜'Ô"Ù˜œvšØ Ñ!�ØÜ˜'“NˆEÙØ˜a‘�
ØÜ6BÀ5È'Ó6RÑ3ˆF�E˜<¨ÙØ�ÙØ�Ü'3°LÀ'Ó'JÑ$ˆG�Y äÑ+ dÔ+Ó+ˆEØ#ò V‘��2Ø˜‘:ØØ—	‘	˜!”Ø—‘˜Q ˜GÔ$ÙÊqÒRTÐUÑU‘ðVô œ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°S°b¨k¸5À)Ù;D©ZÈ"ÙIM¨\¼CÀ»IÒ-EÐSUð.Wñ Wà^bõdô �J‰J�sŽOða0	õb ™eÙ˜U´Õ<ØˆEÜ�
‰
�3ŽðA@õD Ü”*˜c¨GÔ4ð 	D¸Ø!ò D�Ø—‘œŸ
™
 3°UÔ;¸dÑBÕCñD÷	Dô 	Ð+¬z¼3¸z»?Ð.KÑKÐSWÖXáÙ˜U´Õ<ä	Ð
6¸)ÀZÐQ]Ð9^Ñ
^ÐfjÕkÜ	Ð
œiÑ
'¨tÖ4ùó5 >÷"	Dð 	Dús   Ê&P"Í=1PÐPÚ__main__)é   )2Ú__doc__ré   rl   r   r6   rõ   Úhtmlr   Úurllib.parserA   r   r   Úbs4r   ÚImportErrorÚenvironr/   r   r1   rï   rô   rð   ró   rD   ÚLIST_URLÚCOL_PATHÚnowÚstrftimerò   r(   Ú
_MAX_PAGESr¨   Úargvr½   rJ   rU   Úintro   Ú
ValueErrorr\   rñ   r   r?   rF   rd   rt   rÅ   rØ   r
  Ú__name__rÜ   r   r   ú<module>r     s¨  ðñ÷( ?× >× >Ó >ß (ðÝ!ð �Z‰Z�^‰^˜L¨"Ó-€
Ø€à0€	Ø€
Ø&€Ø€Ø(€ØI€Ø#€Ø
ˆ(�,‰,‹.™9¨'Ô2Ñ
2×	<Ñ	<¸ZÓ	H€ðCàOØ'ñ	€ð €
Ù�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€ò	óò&Wò
ò>ò~!òB%1òPX5ðv ˆzÒÙ…Fð øðu ò ØƒMðûð6 ò 	Ùð	ûð
 ò 	Ùð	ús5   ¨D< Â6E
Ã2EÄ<EÅEÅ
EÅEÅEÅE