Ë
    ¸¬uj½7  ã                   ó&  — 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Z	ddl
mZ ddlmZ dZdZdZdZd	Zd
ZdZdZ ej,                  ddd«      Z ej0                  «       Zde_        ej6                  e_        d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( eej@                  «      D ]6  \  Z!Z"e"dk(  sŒe!dz    e'ej@                  «      k  sŒ%ej@                  e!dz      ZŒ8 d"d„Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d „ Z/e0d!k(  r e/«        yy# e&$ r Y Œíw xY w# e&$ r Y Œøw xY w)#ub  
crawl_huidong_zrzyj.py - æƒ ä¸œåŽ¿è‡ªç„¶èµ„æº�å±€-ä¸šåŠ¡å·¥ä½œ
https://www.huidong.gov.cn/hzhdzrzyj/gkmlpt/index (å¹¿ä¸œæ ‡å‡† gkmlpt Vue SPA + JSON API)
åˆ—è¡¨: GET https://www.huidong.gov.cn/hzhdzrzyj/gkmlpt/api/all/2831?page={N}&sid=752157
     âš ï¸� page å�‚æ•°æ˜¯ 5 çš„å€�æ•°(æ¯�æ¬¡å�–5é¡µ, 100æ�¡); total=6535 (ä¸�åŠ¨äº§/è§„åˆ’/çŽ¯è¯„å…¬å‘Š)
     åˆ†ç±»2831=ä¸šåŠ¡å·¥ä½œ, å­�ç±»å�«ä¸�åŠ¨äº§ç™»è®°2833/å›½åœŸç©ºé—´è§„åˆ’10955ç­‰
è¯¦æƒ…: API url å­—æ®µ + ".html" å�Žç¼€ (content/{a}/{b}/post_{id}.html)
     meta ArticleTitle (æ—  PubDate meta, æ—¥æœŸç”¨ API date æ—¶é—´æˆ³) + div.article-content æ­£æ–‡
é    N)Úurljoin)ÚBeautifulSoupu%   æƒ ä¸œåŽ¿è‡ªç„¶èµ„æº�å±€-ä¸šåŠ¡å·¥ä½œzcrawl_huidong_zrzyj.pyu   å¹¿ä¸œzThttps://www.huidong.gov.cn/hzhdzrzyj/gkmlpt/api/all/{classify}?page={page}&sid={sid}Ú752157Ú2831z/mnt/data/search.dbÚ iê  é   FzkMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36z$application/json,text/html,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8z1https://www.huidong.gov.cn/hzhdzrzyj/gkmlpt/index)z
User-AgentÚAcceptzAccept-LanguageÚRefereré   z--pages=ú=z--pagesz--jsonlc                 ó´  — t        |«      D ]p  }	 t        j                  j                  | t        ¬«      }t        j                  j                  ||t        ¬«      }|j                  «       j                  dd¬«      c S  y
# t        $ rN}||dz
  k(  r't        d| › d|› �t        j                  ¬	«       Y d }~ y
t        j                  d«       Y d }~ŒÆd }~ww xY w)N)Úheaders)ÚtimeoutÚcontextúutf-8Úreplace)Úerrorsr   u     [WARN] è¯·æ±‚å¤±è´¥ z: )Úfiler   g      @)ÚrangeÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚctxÚreadÚdecodeÚ	ExceptionÚprintÚsysÚstderrÚtimeÚsleep)Úurlr   ÚretriesÚiÚreqÚrespÚes          ú(/root/gov_crawler/crawl_huidong_zrzyj.pyÚhttp_getr+   C   s¹   € Ü�7‹^ò 	ˆð	Ü—.‘.×(Ñ(¨´gÐ(Ó>ˆCÜ—>‘>×)Ñ)¨#°wÌÐ)ÓLˆDØ—9‘9“;×%Ñ% g°iÐ%Ó@Ò@ð		ð øô ò 	Ø�G˜a‘KÒÜÐ.¨s¨e°2°a°SÐ9ÄÇ
Á
ÕKÝÜ�J‰J�s�O‰Oûð		ús   �A+B Â 	CÂ	)CÂ8CÃCc                 ó  — | sy| j                  dd«      j                  dd«      } | j                  dd«      j                  dd«      } t        j                  dd| «      } t        j                  dd| «      } | j                  «       S )u:   strip &middot;&nbsp; å®žä½“å‰�ç¼€ å’Œçœ�ç•¥å�·æˆªæ–­å�Žç¼€r   z&middot;ú&nbsp;u   â€‹u   ï»¿u   ^[\s\xa0Â·\u00b7]+z\s*\.{3,}\s*$)r   ÚreÚsubÚstrip)Útitles    r*   Úclean_titler2   Q   st   € áØØ�M‰M˜* bÓ)×1Ñ1°(¸BÓ?€EØ�M‰M˜( BÓ'×/Ñ/°¸"Ó=€EÜ�F‰FÐ(¨"¨eÓ4€EÜ�F‰FÐ# R¨Ó/€EØ�;‰;‹=Ðó    c                 ó„  — | dz   dz  }t         j                  t        |t        ¬«      }t	        |«      }|sg S 	 t        j                  |«      }g }|j                  dg «      D ]¹  }|j                  dd«      }t        |j                  dd«      «      }|r|sŒ5|j                  d«      s|dz   }|j                  d	«      xs |j                  d
«      xs d}d}	|r/	 t        j                  j                  |«      j                  d«      }	|j                  |||	f«       Œ» |S # t        $ r g cY S w xY w# t        $ r d}	Y Œ6w xY w)u8   ç¬¬ batch_idx æ‰¹(æ¯�æ‰¹=APIä¸€æ¬¡è°ƒç”¨, å�–5é¡µ100æ�¡)r   r   )ÚclassifyÚpageÚsidÚarticlesr$   r   r1   z.htmlÚdateÚfirst_publish_timer   z%Y-%m-%d)ÚAPI_TPLÚformatÚCLASSIFYÚSIDr+   ÚjsonÚloadsr   Úgetr2   ÚendswithÚdatetimeÚfromtimestampÚstrftimeÚappend)
Ú	batch_idxÚ
page_paramr$   ÚtextÚdÚitemsÚar1   Útsr9   s
             r*   Úfetch_batchrN   \   sA  € à˜a‘- 1Ñ$€JÜ
�.‰.¤(°Äˆ.Ó
E€CÜ�C‹=€DÙØˆ	ðÜ�J‰J�tÓˆð €EØ�U‰U�:˜rÓ"ò )ˆØ�e‰e�E˜2ÓˆÜ˜AŸE™E '¨2Ó.Ó/ˆÙ™%Øà�|‰|˜GÔ$Ø˜‘-ˆCØ�U‰U�6‹]Ò>˜aŸe™eÐ$8Ó9Ò>¸QˆØˆÙðÜ×(Ñ(×6Ñ6°rÓ:×CÑCÀJÓO�ð 	�‰�c˜5 $Ð'Õ(ð)ð  €Løô' ò ØŠ	ðûô  ò Ø’ðús#   ¹D  Ã.D1Ä D.Ä-D.Ä1D?Ä>D?c                 ó0  — d}t        j                  d| «      }|rt        |j                  d«      «      }|s|}t	        | d«      }|j                  dd¬«      }|s|ddfS dj                  d„ |j                  D «       «      }g }|j                  d	d
¬«      D ]Æ  }	|	d   }
|	j                  d
¬«      }t        j                  d|
«      s6d|
j                  «       v s$d|
j                  «       v s|j                  d«      sŒft        ||
«      }|j                  d«      s|j                  d«      rd|z   n|}|r|n|j                  d«      d   }|j                  |	||f«       ŒÈ |D �]  \  }	}}|j                  d	|d¬«      }||_        |	j"                  €Œ0|	j"                  }d }t%        |j                  «      D ]  \  }}||	u sŒ|} n |�™t'        |j                  d | «      D ]0  }|j(                  �Œ|j+                  «       rŒ!|j-                  «        Œ2 t'        |j                  |dz   d  «      D ]0  }|j(                  �Œ|j+                  «       rŒ!|j-                  «        Œ2 |	j/                  |«       �Œ |ddj                  d„ |j                  D «       «      fS )Nr   z/<meta\s+name="ArticleTitle"\s+content="([^"]+)"r   úhtml.parserÚdivzarticle-content)Úclass_c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N©Ústr©Ú.0Úcs     r*   ú	<genexpr>z!extract_detail.<locals>.<genexpr>‡   s   è ø€ Ò7 aœ3˜qŸ6Ñ7ùó   ‚rL   T©Úhrefr]   ©r0   ú6(?i)\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|et|ofd)(\?|$)ÚdownloadÚattachõ   é™„ä»¶)zhttp://zhttps://z//zhttp:ú/éÿÿÿÿÚ_blank)r]   Útargetc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrT   rU   rW   s     r*   rZ   z!extract_detail.<locals>.<genexpr>¦   s   è ø€ Ò:¨œc !ŸfÑ:ùr[   )r.   Úsearchr2   Úgroupr   ÚfindÚjoinÚcontentsÚfind_allÚget_textÚlowerÚ
startswithr   ÚsplitrF   Únew_tagÚstringÚparentÚ	enumerateÚlistÚnamer0   ÚextractÚreplace_with)ÚhtmlÚpage_urlÚ
list_titler1   ÚmtÚsoupÚcmÚcontent_htmlÚattachmentsrL   r]   ÚtxtÚabs_urlrw   Únew_aÚpÚidx_aÚciÚchilds                      r*   Úextract_detailr‰   {   st  € Ø€EÜ	�‰ÐEÀtÓ	L€BÙ	Ü˜BŸH™H Q›KÓ(ˆÙØˆä˜˜}Ó-€DØ	�‰�5Ð!2ˆÓ	3€BÙØ�b˜"ˆ}ÐØ—7‘7Ñ7¨2¯;©;Ô7Ó7€Là€KØ�[‰[˜ 4ˆ[Ó(ò 	3ˆØ�‰yˆØ�j‰j˜tˆjÓ$ˆÜ�I‰IÐOÐQUÔVØ §¡£Ñ-°¸T¿Z¹Z»\Ñ1IÈSÏ^É^Ð\dÕMeÜ˜h¨Ó-ˆGØ×%Ñ%Ð&=Ô>Ø/6×/AÑ/AÀ$Ô/G˜' GÒ+ÈW�Ù‘3 7§=¡=°Ó#5°bÑ#9ˆDØ×Ñ  4¨Ð1Õ2ð	3ð (ó "Ñˆˆ4�Ø—‘˜S w°x�Ó@ˆØˆŒØ�8‰8ÑØ—‘ˆAØˆEÜ& q§z¡zÓ2ò ‘	��EØ˜A’:Ø�EÙðð Ð Ü! !§*¡*¨V¨eÐ"4Ó5ò (�EØ—z‘zÑ)°%·+±+µ-ØŸ™�ð(ô " !§*¡*¨U°Q©Y¨ZÐ"8Ó9ò (�EØ—z‘zÑ)°%·+±+µ-ØŸ™�ð(ð �N‰N˜5Ö!ð#"ð$ �"�b—g‘gÑ:¨b¯k©kÔ:Ó:Ð:Ð:r3   c           
      óR  ‡‡— | 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        j                  d	d| «      } t	        | d
«      }|j                  dd¬«      D ]t  }|d   }|j                  d¬«      }t        j                  d|«      sd|j                  «       v sŒC|}dt        ‰«      › d�}d|› d|xs d› d�‰|<   |j                  |«       Œv |j                  d«      D ]æ  }	|	j                  d«      }
|
sŒ|	j                  d¬«      rŒ*g }|
D ]y  }|j                  d«      xs |j                  d«      xs d}|sŒ.t        ||«      }|j                  d|› d|j                  d«      d   j                  d«      d   xs d› d�«       Œ{ |sŒ­d t        ‰«      › d�}d!d"j                  |«      z   d#z   ‰|<   |	j                  |«       Œè t!        |«      } ˆfd$„}t        j                  d%|| t         j                  t         j                  z  ¬«      } g Šˆfd&„}t        j                  d'| t         j                  «      rd(nd}t        j                  d)|| t         j                  t         j                  z  ¬«      } t        j                  d#d*| t         j                  ¬«      } t        j                  d+d,| t         j                  ¬«      } t        j                  d-d| t         j                  ¬«      } g }| j                  d.«      D �]B  }|j#                  «       }|sŒt        j                  d/d|«      }t        j                  d0d|«      }|j%                  d1d«      j%                  d2d3«      }t        j                  d4d3|«      }t        j                  d5d|«      }|j%                  d6d3«      j%                  d7d3«      }t        j                  d8d|«      }|sŒÑ‰j'                  «       D ]  \  }}|j%                  ||«      }Œ t)        ‰«      D ]  \  }}|j%                  d9|› d�|«      }Œ |j                  |j#                  «       «       �ŒE d.j                  |«      }‰j'                  «       D ]  \  }}|j%                  ||«      }Œ t)        ‰«      D ]  \  }}|j%                  d9|› d�|«      }Œ t        j                  d:d|«      }t        j                  d;d|«      }t        j                  d<d|«      }t        j                  d=d|«      }t        j                  d>d,|«      }t        j                  d?d.|«      }t        j                  d4d3|«      }t+        «       }g }|j                  d.«      D ]X  }	t        j                  d@dt        j                  d5d|	«      «      }|sŒ2||v rŒ7|j-                  |«       |j                  |	«       ŒZ d.j                  |«      j#                  «       }|||fS )ANr   r   z
<!--.*?-->)Úflagsz<meta[^>]*>z<script[^>]*>.*?</script>z<style[^>]*>.*?</style>u   ã€�å­—å�·ï¼š[^ã€‘]*ã€‘u'   å�‘å¸ƒ(?:æ—¶é—´|æ—¥æœŸ)[:ï¼š][^<]{0,30}rP   rL   Tr\   r]   r^   r_   r`   Ú
__ATTACH__Ú__ú	<a href="ú" target="_blank">rb   ú</a>r…   ÚimgÚsrcÚoldsrcrc   rd   ú?u   å›¾ç‰‡Ú__IMG__z<p>z<br/>z</p>c                 óü   •— | j                  d«      }|j                  d«      ry| j                  d«      }t        j                  dd|«      }|j	                  «       }|sd}dt        ‰«      › d�}d	|› d
|› d�‰|<   |S )Nr   zjavascript:r   é   ú<[^>]+>rb   Ú__LINK__r�   rŽ   r�   r�   )ri   rp   r.   r/   r0   Úlen)Úmr]   Úinnerr‚   ÚkeyÚlink_protects        €r*   Ú
_link_replz html_to_text.<locals>._link_replÑ   s„   ø€ Ø�w‰w�q‹zˆØ�?‰?˜=Ô)ØØ—‘˜“
ˆÜ�f‰f�Z  UÓ+ˆØ�i‰i‹kˆÙØˆCØœ˜\Ó*Ð+¨2Ð.ˆØ'¨ vÐ-?À¸uÀDÐIˆ�SÑØˆ
r3   z&<a\s[^>]*href="([^"]+)"[^>]*>(.*?)</a>c                 óh   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  › d�S )Nr   Ú__TBL__r   r�   )rF   ri   rš   )r›   Útable_protects    €r*   Ú	_tbl_replzhtml_to_text.<locals>._tbl_replà   s3   ø€ Ø×Ñ˜QŸW™W Q›ZÔ(Øœ˜]Ó+¨AÑ-Ð.¨bÐ1Ð1r3   z<table[^>]*>r   z<table[^>]*>.*?</table>z</p>

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

z(?<=>)\s*[\r\n\t]+\s*z\s*[\r\n\t]+\s*(?=<)úú	ú z	[ \t]{2,}r˜   õ   Â r-   z[\s\u200b\u200c\u200d\ufeff]+r¡   z__LINK__\d+__z__TBL__\d+__z__IMG__\d+__z__ATTACH__\d+__z[ \t]+\nz\n{3,}ú\s+)r.   r/   ÚSÚIr   rm   rn   rh   ro   rš   ry   rA   r   rF   rq   rk   rV   r0   r   rK   ru   ÚsetÚadd)Úcontentr{   r�   r~   rL   r]   r‚   rƒ   r�   r…   ÚimgsÚsrcsr‘   r’   rŸ   r£   Ú	has_tableÚpartsÚblockÚbÚplainÚkÚvr&   ÚtblÚoutÚseenÚfinalrž   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Ü�f‰fÐ?ÀÀWÓM€Gä˜ -Ó0€Dà�]‰]˜3 Tˆ]Ó*ò  ˆØ�‰yˆØ�j‰j˜tˆjÓ$ˆÜ�9‰9ÐNÐPTÔUÐYcÐgk×gqÑgqÓgsÒYsØˆGØœs <Ó0Ð1°Ð4ˆCØ"+¨G¨9Ð4FÀsÂÈhÐFWÐW[Ð \ˆL˜ÑØ�N‰N˜3Õð ð �]‰]˜3Óò $ˆØ�z‰z˜%Ó ˆÚ˜Ÿ
™
¨˜
Õ.ØˆDØò {�Ø—g‘g˜e“nÒ?¨¯©°Ó(9Ò?¸R�ÚÜ% h°Ó4�GØ—K‘K )¨G¨9Ð4FÀsÇyÁyÐQTÃ~ÐVXÑGY×G_ÑG_Ð`cÓGdÐefÑGgÒGsÐksÐFtÐtxÐ yÕzð	{ò
 Ø¤ LÓ 1Ð2°"Ð5�Ø$)¨G¯L©L¸Ó,>Ñ$>ÀÑ$G�˜SÑ!Ø—‘˜sÕ#ð$ô �$‹i€Gôô �f‰fÐ>À
ÈGÔ[]×[_Ñ[_Ôbd×bfÑbfÑ[fÔg€Gà€Mô2ô —Y‘Y˜°¼¿¹Ô>‘ÀA€IÜ�f‰fÐ/°¸GÌ2Ï4É4ÔRT×RVÑRVÉ;ÔW€Gä�f‰f�W˜j¨'¼¿¹Ô>€GÜ�f‰f�\ 4¨¼¿¹Ô=€GÜ�f‰fÐLÈbÐRYÔac×aeÑaeÔf€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ˆÙØØ ×&Ñ&Ó(ò 	 ‰DˆAˆqØ—	‘	˜!˜Q“‰Að	 ä Ó.ò 	0‰FˆAˆsØ—	‘	˜G A 3 b˜/¨3Ó/‰Að	0à�‰�Q—W‘W“YÖð# ð& �+‰+�eÓ
€CØ×"Ñ"Ó$ò  ‰ˆˆ1Ø�k‰k˜!˜QÓ‰ð ä˜MÓ*ò 0‰ˆˆ3Ø�k‰k˜G A 3 b˜/¨3Ó/‰ð0ô �&‰&Ð! 2 sÓ
+€CÜ
�&‰&� " cÓ
*€CÜ
�&‰&� " cÓ
*€CÜ
�&‰&Ð# R¨Ó
-€Cä
�&‰&�˜d CÓ
(€CÜ
�&‰&�˜F CÓ
(€CÜ
�&‰&�˜s CÓ
(€Cä‹5€DØ€EØ�Y‰Y�vÓò ˆÜ�f‰f�V˜R¤§¡¨
°B¸Ó!:Ó;ˆÙØØ�$‰;ØØ�‰�ŒØ�‰�Q�ðð �+‰+�eÓ
×
"Ñ
"Ó
$€Cà�	˜;Ð&Ð&r3   c                 ót  — | j                  d|t        f«      }|j                  «       ry	 d}	 ddlm}  ||«      }| j                  d|||||t        t        t        ||f
«      }|j                  dkD  rdt        j                  dd|«      }	t        j                  d	d
|	«      j                  «       d d }	| j                  d|j                  |t        |	f«       yy# t
        $ r Y Œ§w xY w# t        j                  $ r=}
dt        |
«      v r*t!        j"                  d«       t%        | |||||«      cY d }
~
S ‚ d }
~
ww xY w)Nz7SELECT id FROM gov_raw WHERE page_url=? AND site_name=?FÚotherr   )Úclassify_industryz¨INSERT OR IGNORE INTO gov_raw (page_url, source_url, title, content, publish_date, site_name, group_name, script_name, has_table, industry) VALUES (?,?,?,?,?,?,?,?,?,?)r˜   r   r©   r§   éÈ   zTINSERT OR IGNORE INTO gov_search (rowid, title, site_name, summary) VALUES (?,?,?,?)TÚlockedé   )ÚexecuteÚ	SITE_NAMEÚfetchoneÚcrawler_libr¿   r   Ú
GROUP_NAMEÚSCRIPT_NAMEÚrowcountr.   r/   r0   Ú	lastrowidÚsqlite3ÚOperationalErrorrV   r"   r#   Ústore_record)Úconnr$   r1   r®   r9   r±   ÚcurÚindustryr¿   Úsummaryr)   s              r*   rÍ   rÍ     s6  € Ø
�,‰,ÐPÐSVÔXaÐRbÓ
c€CØ
‡|�|„~ØðØˆð	Ý5Ù(¨Ó/ˆHð �l‰lð+ð �#�u˜g t¬Y¼
ÄKÐQZÐ\dÐeó	
ˆð �<‰<˜!ÒÜ—f‘f˜Z¨¨WÓ5ˆGÜ—f‘f˜V S¨'Ó2×8Ñ8Ó:¸4¸CÐ@ˆGØ�L‰LØfØ—‘ ¤y°'Ð:ôð Øøô! ò 	Ùð	ûô" ×#Ñ#ò Ø”s˜1“vÑÜ�J‰J�qŒMÜ  c¨5°'¸4ÀÓKÕKØûð	úsF   «C' ®C ¼BC' Ã	C$Ã!C' Ã#C$Ã$C' Ã'D7Ã:1D2Ä+D7Ä1D2Ä2D7c                  ó²  — d } t         s=t        j                  t        d¬«      } | j	                  d«       | j	                  d«       d}d}t        «       }g }t        t        «      D �]‰  }t        |«      }t        d|dz   › dt        |«      › d	�d
¬«       |st        dd
¬«        �nL|D �]C  \  }}}	||v rŒ|j                  |«       |	r)	 t        j                  j                  |	«      t        k  rŒH	 t#        |«      }
|
s|dz  }Œ\t%        |
||«      \  }}}t'        ||«      \  }}}t        t)        j*                  dd|«      j-                  «       «      }|dk  rt        d|d d › �d
¬«       |dz  }ŒÉt         r,|j/                  ||||	|t0        t2        t4        dœ«       |dz  }Œût7        | ||||	|«      }|r|dz  }t        d|d d › d|	› d�d
¬«       n|dz  }t9        j:                  d«       �ŒF �ŒŒ t         rmt=        t         dd¬«      5 }|D ]+  }|j?                  tA        jB                  |d¬«      dz   «       Œ- 	 d d d «       t        dt         › dt        |«      › d�d
¬«       | � | jE                  «        | jG                  «        t        d|› �d
¬«       t        d |› �d
¬«       t        d!t0        › d"�d
¬«       y # t         $ r Y �ŒØw xY w# 1 sw Y   Œ’xY w)#Né<   )r   zPRAGMA busy_timeout=60000zPRAGMA journal_mode=WALr   zBatch r   z: got z itemsT)ÚflushzEmpty batch, stopr˜   r   é
   z  skip empty: é(   )r{   r1   r®   Úpublish_dater±   Ú	site_nameÚ
group_nameÚscript_namez  + z (ú)gš™™™™™É?Úwr   )ÚencodingF)Úensure_asciir¤   zJSONL written: z rows)u   æ–°å¢ž: u   è·³è¿‡: z=== z	 done ===)$Ú
JSONL_PATHrË   ÚconnectÚDB_PATHrÃ   r¬   r   Ú_PAGESrN   r   rš   r­   rC   r9   ÚfromisoformatÚMIN_DATEr   r+   r‰   r¼   r.   r/   r0   rF   rÄ   rÇ   rÈ   rÍ   r"   r#   ÚopenÚwriter?   ÚdumpsÚcommitÚclose)rÎ   Ú	new_countÚ
skip_countÚ	seen_urlsÚ
jsonl_rowsÚbatchrK   rƒ   r1   r9   rz   ÚdtitleÚ_r€   r®   r±   ÚattsÚ	plain_lenÚokÚfÚrows                        r*   Úmainrö   =  sã  € Ø€DÝÜ�‰œw°Ô3ˆØ�‰Ð0Ô1Ø�‰Ð.Ô/à€IØ€JÜ“€IØ€Jä”v“ó +ˆÜ˜EÓ"ˆÜ��u˜Q‘w�i˜v¤c¨%£j \°Ð8ÀÕEÙÜÐ%¨TÕ2ÚØ$)ó %	Ñ ˆG�U˜DØ˜)Ñ#ØØ�M‰M˜'Ô"áðÜ—}‘}×2Ñ2°4Ó8¼8ÒCØ ð Dô ˜GÓ$ˆDÙØ˜a‘�
ØÜ&4°T¸7ÀEÓ&JÑ#ˆF�A�|Ü'3°LÀ'Ó'JÑ$ˆG�Y ÜœBŸF™F :¨r°7Ó;×AÑAÓCÓDˆIØ˜2Š~Ü˜ v¨c¨r { mÐ4¸DÕAØ˜a‘�
ØÝØ×!Ñ!Ø '°&ÀWØ$(°yÜ!*¼*Ü#.ñ	#ô ð ˜Q‘�	ØÜ˜d G¨V°W¸dÀIÓNˆBÙØ˜Q‘�	Ü˜˜V C R˜[˜M¨¨D¨6°Ð3¸4Ö@à˜a‘�
Ü�J‰J�sŽOòK%	ð+õZ Ü”*˜c¨GÔ4ð 	D¸Ø!ò D�Ø—‘œŸ
™
 3°UÔ;¸dÑBÕCñD÷	Dô 	�¤
˜|¨2¬c°*«oÐ->¸fÐEÈTÕRàÐØ�‰ŒØ�
‰
ŒÜ	ˆH�Y�KÐ
 ¨Õ-Ü	ˆH�Z�LÐ
!¨Õ.Ü	ˆD”�˜9Ð
%¨TÖ2øôS !ò Úðú÷>	Dð 	Dús   Ã	&J=È
1KÊ=	K
Ë	K
ËKÚ__main__)rÖ   r   )1Ú__doc__r    r.   r"   r?   ÚsslrË   rC   Úurllib.requestr   Úurllib.parser   Úbs4r   rÄ   rÈ   rÇ   r;   r>   r=   rá   rß   r9   rä   Úcreate_default_contextr   Úcheck_hostnameÚ	CERT_NONEÚverify_moder   Ú
_MAX_PAGESru   Úargvr&   rL   rp   Úintrq   Ú
ValueErrorrš   râ   r+   r2   rN   r‰   r¼   rÍ   rö   Ú__name__© r3   r*   ú<module>r     sâ  ðñó Û 	Û Û Û 
Û Û Û Ý  Ý à3€	Ø&€Ø€
Ø
`€Ø€Ø€Ø
€Ø€
ð ˆ8�=‰=˜˜q !Ó$€à €c× Ñ Ó"€Ø€Ô Ø—-‘-€„ð @Ø4Ø0ØBñ	€ð €
Ù�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€ñ �c—h‘hÓò %�D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ø—X‘X˜a !™e‘_‰
ð%ó
òòò>+;ò\p'òfòBD3ðN ˆzÒÙ…Fð øða
 ò 	Ùð	ûð
 ò 	Ùð	ús$   Â/E=Ã+FÅ=FÆFÆFÆF