Ë
    ±|jÔ=  ã                   óÄ  — 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ZdZdZdZdZej&                  j)                  d	d
«      Zej&                  j)                  dd«      ZdZdZddddœZdZ eej8                  «      D ]k  \  ZZej?                  d«      r	  e ejC                  dd«      d   «      ZŒ4edk(  sŒ:edz    e#ej8                  «      k  sŒS	  e ej8                  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„ Z,d„ Z-d „ Z.e/d!k(  r ej`                   e.«       «       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_jingxi_tzgg.py - é�–è¥¿å¸‚-é€šçŸ¥å…¬å‘Š (TRS CMS)
http://www.jingxi.gov.cn/xxgk/fdzdgkmr/jcxxgk/zwdt/tzgg/
æ³¨æ„�: ç”¨æˆ·ç»™çš„ /xxgk/jcxxgk/zwdt/tzgg/ æ˜¯ç©ºå£³(0æ�¡), æ­£ç¡®è·¯å¾„å¤šä¸€çº§ fdzdgkmr
åˆ—è¡¨: ul.more-list > li > span(æ—¥æœŸ) + a[href=./tXXX.shtml][title=å®Œæ•´æ ‡é¢˜]
åˆ†é¡µ: index.shtml(ç¬¬1é¡µ) + index_{1..24}.shtml (25é¡µå…±742æ�¡, æ¯�é¡µ29æ�¡)
è¯¦æƒ…: h1(æ ‡é¢˜) + .article-con/.trs_editor_view(æ­£æ–‡HTML) + #article-file/#relative-file(é™„ä»¶)
é    N)ÚBeautifulSoupzhttp://www.jingxi.gov.cnz /xxgk/fdzdgkmr/jcxxgk/zwdt/tzgg/u   é�–è¥¿å¸‚-é€šçŸ¥å…¬å‘Šu   å¹¿è¥¿zcrawl_jingxi_tzgg.pyÚDB_PATHz/root/search.dbÚ
JSONL_PATHÚ úutf-8é   zkMozilla/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| «      } | j                  «       S )Nr   u   â€‹u   â€Œu   â€�u   ï»¿ú\s+ú )Úhtml_libÚunescapeÚreplaceÚreÚsubÚstrip)Úts    ú&/root/gov_crawler/crawl_jingxi_tzgg.pyÚclean_titler   :   so   € ÙØÜ×Ñ˜!Ó€AØ	�	‰	�(˜BÓ×'Ñ'¨°"Ó5×=Ñ=¸hÈÓK×SÑSÐT\Ð^`Óa€AÜ
�‰ˆv�s˜AÓ€AØ�7‰7‹9Ðó    c                 óÒ   — t        |«      D ]J  }	 | j                  |t        |¬«      }|j                  dk(  r|c S 	 t        j                  d|dz  z   «       ŒL y # t        $ r Y Œ)w xY w)N)ÚheadersÚtimeoutéÈ   é   )ÚrangeÚgetÚHEADERSÚstatus_codeÚ	ExceptionÚtimeÚsleep)ÚsessionÚurlÚretriesr   ÚiÚrs         r   Úhttp_getr*   C   ss   € Ü�7‹^ò ˆð	Ø—‘˜C¬¸'�ÓBˆAØ�}‰} Ò#Ø’ð $ô 	�
‰
�1�q˜1‘u‘9Õðð øô ò 	Ùð	ús   �(AÁ	A&Á%A&c                 ó²   — |dk(  rt         t        z   }nt         › t        › d|dz
  › d�}t        | |«      }|€y |j                  j	                  t
        d¬«      S )Nr
   Úindex_z.shtmlr   ©Úerrors)ÚBASE_URLÚLIST_DIRr*   ÚcontentÚdecodeÚENC)r%   Úpager&   r)   s       r   Ú
fetch_listr5   O   s[   € Øˆq‚yÜœÑ!‰ä�
œ8˜* F¨4°!©8¨*°FÐ;ˆÜ�˜#Ó€AØ€yØØ�9‰9×ÑœC¨	ÐÓ2Ð2r   c                 óÞ  — g }t         rät        | d«      }|j                  d«      D ]Ä  }|j                  dd¬«      }|sŒ|d   }|j                  d«      xs |j	                  d¬«      }t        |«      }d	}|j                  d
«      }|r|j	                  d¬«      }|rt        |«      dk  rŒ†t        j                  j                  t        t        z   |«      }	|j                  |	||f«       ŒÆ |S )uK   ul.more-list > li > span(æ—¥æœŸ) + a[href=./tXXX.shtml][title=å®Œæ•´æ ‡é¢˜]úhtml.parserzul.more-list liÚaT©Úhrefr:   Útitle©r   r   Úspané   )r   ÚselectÚfindr   Úget_textr   ÚlenÚurllibÚparseÚurljoinr/   r0   Úappend)
Ú	html_textÚitemsÚsoupÚlir8   r:   r;   ÚdateÚspÚabs_urls
             r   Ú
parse_listrN   Z   sá   € à€EÝÜ˜Y¨Ó6ˆØ—+‘+Ð/Ó0ò 	1ˆBØ—‘˜ $�Ó'ˆAÙØØ�V‘9ˆDØ—E‘E˜'“NÒ< a§j¡j°t jÓ&<ˆEÜ Ó&ˆEØˆDØ—‘˜“ˆBÙØ—{‘{¨�{Ó.�ÙœC ›J¨šNØÜ—l‘l×*Ñ*¬8´hÑ+>ÀÓEˆGØ�L‰L˜' 5¨$Ð/Õ0ð	1ð €Lr   c                 ó’  — d}d}d}g }t         �r)t        | d«      }|j                  d«      }|rt        |j                  dd¬«      «      }|j	                  d«      }|r7t        j                  d|j                  «       «      }	|	r|	j                  d	«      }|s„|j                  d
dt        j                  dt
        j                  «      i¬«      }
|
rK|
j                  d«      r:t        j                  d|
d   j                  «       «      }	|	r|	j                  d	«      }|j	                  d«      }|r]g }|j                  D ];  }t        |t        «      rŒt!        |dd«      €Œ"|j#                  t        |«      «       Œ= dj%                  |«      }dD ]Ì  }|j                  |¬«      }|sŒ|j'                  dd¬«      D ]Ÿ  }|d   }t        |j                  dd¬«      «      xs1 t(        j*                  j-                  |j/                  d«      d   «      }t0        j2                  j5                  ||«      }||D �cg c]  }|d   ‘Œ	 c}vsŒ�|j#                  ||f«       Œ¡ ŒÎ |rÛ|j'                  dd¬«      D ]Å  }|d   }t        j                  d|t
        j                  «      sŒ.t        |j                  dd¬«      «      xs1 t(        j*                  j-                  |j/                  d«      d   «      }t0        j2                  j5                  ||«      }||D �cg c]  }|d   ‘Œ	 c}vsŒ³|j#                  ||f«       ŒÇ ||||fS c c}w c c}w )uO   h1 å®Œæ•´æ ‡é¢˜ + .article-con æ­£æ–‡HTML + #article-file/#relative-file é™„ä»¶r   r7   Úh1r   Tr<   z.article-inf-leftz(\d{4}-\d{2}-\d{2})r
   ÚmetaÚnamezPubDate|publishdate|pubdate)Úattrsr1   z.article-conN)zarticle-filezrelative-fileÚdownloadfileÚrelfile)Úidr8   r9   r:   ú?r   ú#\.(pdf|docx?|xlsx?|zip|rar|wps|ofd))r   r@   r   rA   Ú
select_oner   ÚsearchÚgroupÚcompileÚIr   Úmatchr   ÚcontentsÚ
isinstanceÚstrÚgetattrrF   ÚjoinÚfind_allÚosÚpathÚbasenameÚsplitrC   rD   rE   )rG   Úpage_urlr;   rK   Úcontent_htmlÚattachmentsrI   rP   ÚinfÚdmÚmdÚconÚpartsÚcÚfidÚfdr8   r:   ÚtxtrM   Úxs                        r   Úparse_detailrv   q   sò  € à€EØ€DØ€LØ€KÞÜ˜Y¨Ó6ˆØ�Y‰Y�t‹_ˆÙÜ §¡¨C°t Ó <Ó=ˆEà�o‰oÐ1Ó2ˆÙÜ—‘Ð1°3·<±<³>ÓBˆBÙØ—x‘x “{�ÙØ—‘˜6¨&´"·*±*Ð=[Ô]_×]aÑ]aÓ2bÐ)c�ÓdˆBÙ�b—f‘f˜YÔ'Ü—X‘XÐ4°b¸±m×6IÑ6IÓ6KÓL�ÙØŸ8™8 A›;�Dà�o‰o˜nÓ-ˆÙØˆEØ—\‘\ò %�Ü˜a¤Ô%ØÜ˜1˜f dÓ+Ð3ØØ—‘œS ›VÕ$ð%ð Ÿ7™7 5›>ˆLàOò 	;ˆCØ—‘˜c�Ó"ˆBÚØŸ™ S¨t˜Ó4ò ;�AØ˜V™9�DÜ% a§j¡j°¸D jÓ&AÓBÒjÄbÇgÁg×FVÑFVÐW[×WaÑWaÐbeÓWfÐghÑWiÓFj�CÜ$Ÿl™l×2Ñ2°8¸TÓB�GØ°[Ö&A° q¨£tÒ&AÒAØ#×*Ñ*¨G°S¨>Õ:ñ;ð	;ñ Ø—\‘\ #¨D�\Ó1ò ;�Ø˜‘y�Ü—9‘9ÐCÀTÌ2Ï4É4ÕPÜ% a§j¡j°¸D jÓ&AÓBÒjÄbÇgÁg×FVÑFVÐW[×WaÑWaÐbeÓWfÐghÑWiÓFj�CÜ$Ÿl™l×2Ñ2°8¸TÓB�GØ°[Ö&A° q¨£tÒ&AÒAØ#×*Ñ*¨G°S¨>Õ:ð;ð �$˜ kÐ1Ð1ùò 'Bùò 'Bs   È4L?
ÌM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        �r	 t	        | d«      }|j                  d	d
¬«      D ]á  }t        j                  d|j                  dd«      t         j                  «      sŒ9|d   }|j                  d
¬«      xs1 t        j                  j                  |j                  d«      d   «      }t        j                  j                  ||«      }|j!                  ||f«       dt#        |«      › d�}	d|› d|› d�||	<   |j%                  |	«       Œã |j                  d«      D ]ò  }
|
j                  d«      }|sŒ|
j                  d
¬«      rŒ*g }|D ]…  }|j                  d«      xs d}|sŒt        j                  j                  ||«      }|j!                  d|› dt        j                  j                  |j                  d«      d   «      xs d› d�«       Œ‡ |sŒ¹dt#        |«      › d�}	ddj'                  |«      z   dz   ||	<   |
j%                  |	«       Œô t)        |«      } g Šˆfd„}t        j                  d || t         j                  t         j                  z  ¬«      } t        j                  d!| t         j                  «      rd"nd}t        rQ	 t	        | d«      }|j                  d
«      D ]%  }d#D ]  }|j,                  j/                  |d$«       Œ  Œ' t)        |«      } t        j                  dd%| t         j                  ¬«      } t        j                  d&d'| t         j                  ¬«      } t        j                  d(d| t         j                  ¬«      } g }| j                  d)«      D ]ï  }|j1                  «       }|sŒt        j                  d*d|«      }t3        j4                  |«      }|j7                  d+d,«      j7                  d-d,«      }t        j                  d.d|«      }|sŒ~|j9                  «       D ]  \  }}|j7                  ||«      }Œ t;        ‰«      D ]  \  }}|j7                  d/|› d�|«      }Œ |j!                  |j1                  «       «       Œñ d)j'                  |«      }|j9                  «       D ]  \  }}|j7                  ||«      }Œ t;        ‰«      D ]  \  }}|j7                  d/|› d�|«      }Œ t        j                  d0d|«      }t        j                  d1d|«      }t        j                  d2d|«      }t        j                  d3d|«      }t3        j4                  |«      }t        j                  d4d'|«      }t        j                  d5d)|«      }t        j                  d6d,|«      }t=        «       }g }|j                  d)«      D ]X  }
t        j                  d7dt        j                  d*d|
«      «      }	|	sŒ2|	|v rŒ7|j?                  |	«       |j!                  |
«       ŒZ d)j'                  |«      j1                  «       }|||fS # t*        $ r Y �Œûw xY w# t*        $ r Y �ŒLw xY w)8uA   æ¸…ç�†æ­£æ–‡, ä¿�ç•™è¡¨æ ¼ HTML, é™„ä»¶é“¾æŽ¥è½¬ç»�å¯¹ URL æ®µè�½r   r   z
<!--.*?-->)Úflagsz<meta[^>]*>z<script[^>]*>.*?</script>z<style[^>]*>.*?</style>r7   r8   Tr9   rX   r:   r<   rW   Ú
__ATTACH__Ú__ú<p><a href="ú" target="_blank">ú</a></p>ÚpÚimgÚsrcz	<a href="u   å›¾ç‰‡z</a>Ú__IMG__z<p>z<br/>z</p>c                 óh   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  › d�S )Nr   Ú__TBL__r
   rz   )rF   r[   rB   )ÚmÚtable_protects    €r   Ú	_tbl_replzhtml_to_text.<locals>._tbl_replÓ   s3   ø€ Ø×Ñ˜QŸW™W Q›ZÔ(Øœ˜]Ó+¨AÑ-Ð.¨bÐ1Ð1r   z<table[^>]*>.*?</table>z<table[^>]*>r
   )ÚstyleÚclassÚlangÚdirÚalignÚvalignÚwidthÚheightÚborderÚcellpaddingÚcellspacingNz</p>

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

ú<[^>]+>õ   Â r   z&nbsp;z[\s\u200b\u200c\u200d\ufeff]+rƒ   z__LINK__\d+__z__TBL__\d+__z__IMG__\d+__z__ATTACH__\d+__z[ \t]+\nz\n{3,}z	[ \t]{2,}r   ) r   r   ÚSr]   r   rd   rZ   r   rA   re   rf   rg   rh   rC   rD   rE   rF   rB   Úreplace_withrc   ra   r"   rS   Úpopr   r   r   r   rH   Ú	enumerateÚsetÚadd)r1   ri   rk   Úlink_protectÚ_soupr8   r:   rt   rM   Úkeyr~   ÚimgsÚsrcsr   r€   r†   Ú	has_tableÚtagÚattrrp   ÚblockÚbÚplainÚkÚvr(   ÚtblÚoutÚseenÚfinalr…   s                                 @r   Úhtml_to_textr­   ©   s6  ø€ áØ�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æð	Ü! '¨=Ó9ˆEØ—^‘^ C¨d�^Ó3ò (�Ü—9‘9ÐCÀQÇUÁUÈ6ÐSUÓEVÔXZ×X\ÑX\Õ]Ø˜V™9�DØŸ*™*¨4˜*Ó0ÒX´B·G±G×4DÑ4DÀTÇZÁZÐPSÃ_ÐUVÑEWÓ4X�CÜ$Ÿl™l×2Ñ2°8¸TÓB�GØ×&Ñ&¨° ~Ô6Ø&¤s¨<Ó'8Ð&9¸Ð<�CØ*6°w°iÐ?QÐRUÐQVÐV^Ð(_�L Ñ%Ø—N‘N 3Õ'ð(ð —^‘^ CÓ(ò ,�Ø—z‘z %Ó(�Ú §
¡
° 
Õ 6Ø�DØ#ò F˜Ø!Ÿg™g e›nÒ2°˜ÚÜ&,§l¡l×&:Ñ&:¸8ÀSÓ&I˜GØ ŸK™K¨)°G°9Ð<NÌrÏwÉw×O_ÑO_Ð`c×`iÑ`iÐjmÓ`nÐopÑ`qÓOrÒO~Ðv~ÐNð  @Dð  )Eõ  Fð	Fò
 Ø '¬¨LÓ(9Ð':¸"Ð=˜Ø,1°G·L±LÀÓ4FÑ,FÈÑ,O˜ SÑ)ØŸ™ sÕ+ð,ô ˜%“jˆGð €Mô2ô �f‰fÐ/°¸GÌ2Ï4É4ÔRT×RVÑRVÉ;ÔW€GÜ—Y‘Y˜°¼¿¹Ô>‘ÀA€Iåð	Ü! '¨=Ó9ˆEØ—~‘~ dÓ+ò .�ð Lò .�DØ—I‘I—M‘M $¨Õ-ñ.ð.ô ˜%“jˆGô �f‰f�W˜j¨'¼¿¹Ô>€GÜ�f‰f�\ 4¨¼¿¹Ô=€GÜ�f‰fÐ@À"ÀgÔUW×UYÑUYÔZ€Gà€EØ—‘˜vÓ&ò  ˆØ�K‰K‹MˆÙØÜ—‘�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ä
×
Ñ
˜CÓ
 €CÜ
�&‰&�˜d CÓ
(€CÜ
�&‰&�˜F CÓ
(€CÜ
�&‰&�˜s CÓ
(€Cä‹5€DØ€EØ�Y‰Y�vÓò ˆÜ�f‰f�V˜R¤§¡¨
°B¸Ó!:Ó;ˆÙØØ�$‰;ØØ�‰�ŒØ�‰�Q�ðð �+‰+�eÓ
×
"Ñ
"Ó
$€Cà�	˜;Ð&Ð&øôK ò 	Úð	ûô" ò 	Úð	úsG   ÃA[ Ä+C[ Ç>[ È[ È0A/[ Ê A[ ÍA[& Û	[#Û"[#Û&	[3Û2[3c                 óš   — |s| S | j                  «       r| gng }|D ]  \  }}|j                  d|› d|› d�«       Œ dj                  |«      S )uC   é™„ä»¶åŒºè½¬ <p><a>ç»�å¯¹URL</a></p> æ®µè�½, ä¸�ä¿�ç•™ ul/li åŒ…è£…r{   r|   r}   r“   )r   rF   rc   )r1   rk   rp   rM   rt   s        r   Úappend_attachmentsr¯     s[   € áØˆØ Ÿ™œˆW‰I¨b€EØ#ò N‰ˆ�Ø�‰�| G 9Ð,>¸s¸eÀ8ÐLÕMðNà�;‰;�uÓÐr   c                 ó°   — 	 | j                  dt        f«      }|j                  «       D �ch c]  }|d   ’Œ	 c}S c c}w # t        $ r t	        «       cY S w xY w)Nz.SELECT page_url FROM gov_raw WHERE site_name=?r   )ÚexecuteÚ	SITE_NAMEÚfetchallr"   rš   )ÚconnÚcurÚrows      r   Úload_existing_urlsr·   !  sN   € ðØ�l‰lÐKÌiÈ\ÓZˆØ"%§,¡,£.Ö1˜3��A“Ò1Ð1ùÒ1øÜò Ü‹uŠðús   ‚)? «:·? º? ¿AÁAc                 óž  — | j                  d|t        f«      }|j                  «       ry	 d}	 ddlm}  ||«      }| j                  d|||||t        t        t        ||f
«      }|j                  dkD  ryt        j                  dd|«      }	t        j                  |	«      }	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   r   zTINSERT OR IGNORE INTO gov_search (rowid, title, site_name, summary) VALUES (?,?,?,?)TÚlockedé   )r±   r²   ÚfetchoneÚcrawler_librº   r"   Ú
GROUP_NAMEÚSCRIPT_NAMEÚrowcountr   r   r   r   r   Ú	lastrowidÚsqlite3ÚOperationalErrorra   r#   r$   Ústore_record)r´   r&   r;   r1   rK   r¡   rµ   Úindustryrº   ÚsummaryÚes              r   rÅ   rÅ   )  sF  € Ø
�,‰,ÐPÐSVÔXaÐRbÓ
c€CØ
‡|�|„~ØðØˆð	Ý5Ù(¨Ó/ˆHð �l‰lð+ð �#�u˜g t¬Y¼
ÄKÐQZÐ\dÐeó	
ˆð �<‰<˜!ÒÜ—f‘f˜Z¨¨WÓ5ˆGÜ×'Ñ'¨Ó0ˆ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< Ã-	C9Ã6C< Ã8C9Ã9C< Ã<EÄ1EÅ EÅEÅEc                  ó¾  — dd l } | j                  «       }|j                  j                  t        «       d }t
        sbt        j                  t        d¬«      }|j                  d«       |j                  d«       t        |«      }t        dt        |«      › d�d¬	«       d}d}g }t        d
t        d
z   «      D �]	  }	 t        ||«      }|€t        d|› d�d¬	«        �næ	 t#        |«      }
t        d|› dt        |
«      › d�d¬	«       |
st        dd¬	«        �n«|
D �]�  \  }}}t
        s
|v r|d
z  }Œ	 t%        ||«      }|€t        d|› �d¬	«       |d
z  }Œ=|j&                  j)                  t*        d¬«      }t-        ||«      \  }}}}|s|}|s|}t/        ||«      \  }}}|r||z   n|}t1        ||«      }t        t3        j4                  dd|«      j7                  «       «      }|dk  r|st        d|d d › �d¬	«       |d
z  }Œêt
        rD|j9                  |||||t:        t<        t>        dœ«       t        d|d d › d|› d�d¬	«       |d
z  }�Œ4tA        ||||||«      }|r.|d
z  }jC                  |«       t        d |d d › d|› d�d¬	«       n|d
z  }tE        jF                  d!«       �Œ� tE        jF                  d"«       �Œ t
        rmtI        t
        d#d$¬%«      5 }|D ]+  }|jK                  tM        jN                  |d&¬'«      d(z   «       Œ- 	 d d d «       t        d)t
        › dt        |«      › d*�d¬	«       |� |jQ                  «        |jS                  «        t        d+|› d,|› �d¬	«       |dkD  s|dkD  rdS d
S # t         $ r}	t        d|› d|	› �d¬	«       Y d }	~	 ŒØd }	~	ww xY w# t         $ r#}	t        d|› d|	› �d¬	«       |d
z  }Y d }	~	�Œ°d }	~	ww xY w# 1 sw Y   ŒÆxY w)-Nr   é<   )r   zPRAGMA busy_timeout=60000zPRAGMA journal_mode=WALu
   å·²å…¥åº“ u    æ�¡, ç”¨äºŽåˆ—è¡¨çº§é¢„æŸ¥é‡�T)Úflushr
   zPage z fetch error (all retries)z fetch error: z: found z itemszEmpty page, stop paginationz  detail error (all retries): r   r-   z  detail error z: r”   r   é
   z  skip empty: é   )ri   r;   r1   Úpublish_dater¡   Ú	site_nameÚ
group_nameÚscript_namez
  JSONL + é(   z (ú)z  + g333333Ó?g      à?Úwr   )ÚencodingF)Úensure_asciir’   zJSONL written: z rows)z
DONE: new=z skip=)*ÚrequestsÚSessionr   Úupdater    r   rÃ   Úconnectr   r±   r·   ÚprintrB   r   Ú_PAGESr5   r"   rN   r*   r1   r2   r3   rv   r­   r¯   r   r   r   rF   r²   r¿   rÀ   rÅ   r›   r#   r$   ÚopenÚwriteÚjsonÚdumpsÚcommitÚclose)r×   Úsr´   ÚexistingÚ	new_countÚ
skip_countÚ
jsonl_rowsr4   rG   rÈ   rH   rM   r;   rK   r)   ÚdhtmlÚdtitleÚddaterj   Úattsr1   r¡   Úatts_inÚall_attsÚ	plain_lenÚokÚfr¶   s                               r   Úmainrñ   K  s  € ÛØ×ÑÓ€AØ‡I�I×Ñ”WÔØ€DÝÜ�‰œw°Ô3ˆØ�‰Ð0Ô1Ø�‰Ð.Ô/Ü% dÓ+ˆÜ�
œ3˜x›=˜/Ð)GÐHÐPTÕUà€IØ€JØ€Jä�aœ !™Ó$ó <ˆð	Ü" 1 dÓ+ˆIØÐ Ü˜˜d˜VÐ#=Ð>ÀdÕKÚð !ô ˜9Ó%ˆÜ��d�V˜8¤C¨£J <¨vÐ6¸dÕCÙÜÐ/°tÕ<ÚØ$)ó -	Ñ ˆG�U˜DÝ '¨XÑ"5Ø˜a‘�
Øð
Ü˜Q Ó(�Ø�9ÜÐ:¸7¸)ÐDÈDÕQØ !‘O�JØØŸ	™	×(Ñ(¬°YÐ(Ó?�ô
 1=¸UÀGÓ0LÑ-ˆF�E˜<¨ÙØ�ÙØ�Ü*6°|ÀWÓ*MÑ'ˆG�Y Ù)0�t˜g’~°dˆHÜ(¨°(Ó;ˆGÜœBŸF™F :¨r°7Ó;×AÑAÓCÓDˆIØ˜2Š~¡lÜ˜ v¨c¨r { mÐ4¸DÕAØ˜a‘�
ØÝØ×!Ñ!Ø '°&ÀWØ$)¸	Ü!*¼*Ü#.ñ	#ô ô ˜
 6¨#¨2 ; -¨r°%°¸Ð:À$ÕGØ˜Q‘�	ÙÜ˜d G¨V°W¸eÀYÓOˆBÙØ˜Q‘�	Ø—‘˜WÔ%Ü˜˜V C R˜[˜M¨¨E¨7°!Ð4¸DÖAà˜a‘�
Ü�J‰J�sŽOð[-	ô\ 	�
‰
�3Žðy<õ| Ü”*˜c¨GÔ4ð 	D¸Ø!ò D�Ø—‘œŸ
™
 3°UÔ;¸dÑBÕCñD÷	Dô 	�¤
˜|¨2¬c°*«oÐ->¸fÐEÈTÕRàÐØ�‰ŒØ�
‰
Œä	ˆJ�y�k ¨
 |Ð
4¸DÕAØ˜A’ ¨a¢ˆ1Ð6°QÐ6øôG ò 	Ü�E˜$˜˜~¨a¨SÐ1¸Õ>Ýûð	ûô& ò Ü˜¨ y°°1°#Ð6¸dÕCØ˜a‘�
Ýûðú÷L	Dð 	DúsB   Â<M:Ä4#N$Å!N$Ë1OÍ:	N!ÎNÎN!Î$	OÎ-OÏOÏOÚ__main__)r¼   rÍ   )1Ú__doc__Úsysre   r   r#   Úhtmlr   Úurllib.parserC   rÃ   rß   Úbs4r   ÚImportErrorr/   r0   r²   r¿   rÀ   Úenvironr   r   r   r3   ÚTOTAL_PAGESr    Ú
_MAX_PAGESr™   Úargvr(   r8   Ú
startswithÚintrh   Ú
ValueErrorrB   rÜ   r   r*   r5   rN   rv   r­   r¯   r·   rÅ   rñ   Ú__name__Úexit© r   r   ú<module>r     s´  ðñó Û 	Û 	Û Û Û Û Û ðÝ!ð
 &€Ø-€Ø$€	Ø€
Ø$€Ø
�*‰*�.‰.˜Ð$5Ó
6€Ø�Z‰Z�^‰^˜L¨"Ó-€
Ø€Ø€ð @Ø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€òó	ò3òò.52òpk'ò\òòòDY7ðx ˆzÒØ€C‡H�H‰T‹VÕð øðc ò ØƒMðûð2 ò 	Ùð	ûð
 ò 	Ùð	ús5   ¤D> Â"EÃEÄ>E	ÅE	ÅEÅEÅEÅE