Ë
    n|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ZdddddœZdZ eej:                  «      D ]k  \  ZZejA                  d«      r	  e!ejE                  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 „ Z-d!„ Z.d"„ Z/e0d#k(  r ejb                   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_jiexiu_hjbh.py - ä»‹ä¼‘å¸‚-çŽ¯ä¿�é¢†åŸŸå…¬å¼€ (PowerCMS)
http://www.jiexiu.gov.cn/zwgk/bmxxgkml/szfgzbm/jxjzssthjjjxfj/fdzdnrgksthjj/hjbhly/gknrjxfj
åˆ—è¡¨: ul.newsList > li > span.date + a[href=.../gknrjxfj/content_N][title=æ ‡é¢˜ï¼šxxx]
åˆ†é¡µ: /zwgk/.../gknrjxfj_N (N=2..36, 36é¡µå…±711æ�¡; æ³¨æ„�ä¸�æ˜¯ index_N.shtml!)
è¯¦æƒ…: #printArea > h2.title(æ ‡é¢˜) + .property(å�‘å¸ƒæ—¶é—´) + .conTxt(æ­£æ–‡HTML, å�«é™„ä»¶)
é    N)ÚBeautifulSoupzhttp://www.jiexiu.gov.cnzC/zwgk/bmxxgkml/szfgzbm/jxjzssthjjjxfj/fdzdnrgksthjj/hjbhly/gknrjxfju   ä»‹ä¼‘å¸‚-çŽ¯ä¿�é¢†åŸŸå…¬å¼€u   å±±è¥¿zcrawl_jiexiu_hjbh.pyÚDB_PATHz/root/search.dbÚ
JSONL_PATHÚ úutf-8é$   g      ø?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.9zhttp://www.jiexiu.gov.cn/)z
User-AgentÚAcceptzAccept-LanguageÚ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| «      } | j                  «       S )Nr   u   â€‹u   â€Œu   â€�u   ï»¿ú\s+ú )Úhtml_libÚunescapeÚreplaceÚreÚsubÚstrip)Úts    ú&/root/gov_crawler/crawl_jiexiu_hjbh.pyÚclean_titler   ;   so   € ÙØÜ×Ñ˜!Ó€AØ	�	‰	�(˜BÓ×'Ñ'¨°"Ó5×=Ñ=¸hÈÓK×SÑSÐT\Ð^`Óa€AÜ
�‰ˆv�s˜AÓ€AØ�7‰7‹9Ðó    c                 ó  — t        |«      D ]c  }	 | j                  |t        |¬«      }|j                  dk(  rt	        j
                  t        «       |c S 	 t	        j
                  d|dz  z   «       Œe y # t        $ r Y Œ)w xY w)N)ÚheadersÚtimeoutéÈ   é   )ÚrangeÚgetÚHEADERSÚstatus_codeÚtimeÚsleepÚREQUEST_INTERVALÚ	Exception)ÚsessionÚurlÚretriesr   ÚiÚrs         r   Úhttp_getr,   D   s€   € Ü�7‹^ò ˆð	Ø—‘˜C¬¸'�ÓBˆAØ�}‰} Ò#Ü—
‘
Ô+Ô,Ø’ð $ô
 	�
‰
�1�q˜1‘u‘9Õðð øô ò 	Ùð	ús   �AA3Á3	A?Á>A?c                 óª   — |dk(  rt         t        z   }nt         › t        › d|› �}t        | |«      }|€y |j                  j	                  t
        d¬«      S )Nr   Ú_r   ©Úerrors)ÚBASE_URLÚLIST_DIRr,   ÚcontentÚdecodeÚENC)r'   Úpager(   r+   s       r   Ú
fetch_listr7   Q   sU   € Øˆq‚yÜœÑ!‰ä�
œ8˜* A d VÐ,ˆÜ�˜#Ó€AØ€yØØ�9‰9×ÑœC¨	ÐÓ2Ð2r   c                 ó„  — g }t         �r6t        | d«      }|j                  d«      D �]  }|j                  dd¬«      }|sŒ|d   }|j                  d«      xs d}|j	                  d	«      d
   j	                  d«      d
   }t        j                  dd|«      }t        |«      }|st        |j                  dd¬«      «      }d}|j                  dd¬«      }|r|j                  d¬«      }|rt        |«      dk  rŒÔt        j                  j                  t        t        z   dz   |«      }	|j                  |	||f«       �Œ |S )uk   ul.infoList > li > span.date + a[href=.../gknrjxfj/content_N] (æ³¨æ„�: æœ¬æ �ç›®ç”¨ infoList, é�ž newsList)úhtml.parserzul.infoList li, ul.newsList liÚaT©Úhrefr<   Útitler   u	   ç‚¹å‡»æ•°r   u   å�‘è¡¨æ—¶é—´u   ^æ ‡é¢˜[ï¼š:]\s*r   ©r   ÚspanÚdate)Úclass_é   ú/)r   ÚselectÚfindr    Úsplitr   r   r   Úget_textÚlenÚurllibÚparseÚurljoinr1   r2   Úappend)
Ú	html_textÚitemsÚsoupÚlir:   r<   r=   r@   ÚspÚabs_urls
             r   Ú
parse_listrS   [   s0  € à€EÞÜ˜Y¨Ó6ˆØ—+‘+Ð>Ó?ó 	1ˆBØ—‘˜ $�Ó'ˆAÙØØ�V‘9ˆDà—E‘E˜'“NÒ( bˆEØ—K‘K Ó,¨QÑ/×5Ñ5°nÓEÀaÑHˆEÜ—F‘FÐ.°°EÓ:ˆEÜ Ó&ˆEÙÜ# A§J¡J¨s¸$ JÓ$?Ó@�ØˆDØ—‘˜¨�Ó/ˆBÙØ—{‘{¨�{Ó.�ÙœC ›J¨šNØÜ—l‘l×*Ñ*¬8´hÑ+>ÀÑ+DÀdÓKˆGØ�L‰L˜' 5¨$Ð/Ö0ð'	1ð( €Lr   c                 ó  — d}d}d}g }t         �rçt        | d«      }|j                  d«      xs |j                  d«      }|rt        |j                  dd¬«      «      }|j                  d«      }|r7t	        j
                  d	|j                  «       «      }	|	r|	j                  d
«      }|j                  d«      }
|
r]g }|
j                  D ];  }t        |t        «      rŒt        |dd«      €Œ"|j                  t        |«      «       Œ= dj                  |«      }|j                  dd¬«      D ]É  }|d   }d|v s&t	        j
                  d|t        j                  «      sŒ2t        |j                  dd¬«      «      xs1 t        j                   j#                  |j%                  d«      d   «      }t&        j(                  j+                  ||«      }||D �cg c]  }|d   ‘Œ	 c}vsŒ·|j                  ||f«       ŒË ||||fS c c}w )uC   h2.title å®Œæ•´æ ‡é¢˜ + .property å�‘å¸ƒæ—¶é—´ + .conTxt æ­£æ–‡HTMLr   r9   zh2.titlez.titler   Tr>   z	.propertyu(   å�‘å¸ƒæ—¶é—´[ï¼š:]\s*(\d{4}-\d{2}-\d{2})r   z.conTxtÚnameNr:   r;   r<   ú/upload/ú#\.(pdf|docx?|xlsx?|zip|rar|wps|ofd)ú?r   )r   Ú
select_oner   rG   r   ÚsearchÚgroupÚcontentsÚ
isinstanceÚstrÚgetattrrL   ÚjoinÚfind_allÚIÚosÚpathÚbasenamerF   rI   rJ   rK   )rM   Úpage_urlr=   r@   Úcontent_htmlÚattachmentsrO   Úh2ÚpropÚdmÚconÚpartsÚcr:   r<   ÚtxtrR   Úxs                     r   Úparse_detailrq   w   sÒ  € à€EØ€DØ€LØ€KÞÜ˜Y¨Ó6ˆà�_‰_˜ZÓ(ÒE¨D¯O©O¸HÓ,EˆÙÜ §¡¨C°t Ó <Ó=ˆEà�‰˜{Ó+ˆÙÜ—‘ÐFÈÏÉËÓXˆBÙØ—x‘x “{�à�o‰o˜iÓ(ˆÙØˆEØ—\‘\ò %�Ü˜a¤Ô%ØÜ˜1˜f dÓ+Ð3ØØ—‘œS ›VÕ$ð%ð Ÿ7™7 5›>ˆLà—‘˜s¨�Ó.ò 	7ˆAØ�V‘9ˆDØ˜TÑ!¤R§Y¡YÐ/UÐW[Ô]_×]aÑ]aÕ%bÜ! !§*¡*¨S¸ *Ó"=Ó>ÒfÄ"Ç'Á'×BRÑBRÐSW×S]ÑS]Ð^aÓSbÐcdÑSeÓBf�Ü Ÿ,™,×.Ñ.¨x¸Ó>�Ø°Ö"=¨A 1 Q£4Ò"=Ò=Ø×&Ñ&¨° ~Õ6ð	7ð �$˜ kÐ1Ð1ùò #>s   ÇG=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 ]õ  }d|j                  dd«      v s6t        j                  d|j                  dd«      t         j                  «      sŒM|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                  d/d|«      }t        j                  d0d|«      }t        j                  d1d|«      }t        j                  d2d|«      }t3        j4                  |«      }t        j                  d3d&|«      }t        j                  d4d(|«      }t        j                  d5d+|«      }t=        «       }g }|j                  d(«      D ]X  }
t        j                  d6d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)7uA   æ¸…ç�†æ­£æ–‡, ä¿�ç•™è¡¨æ ¼ HTML, é™„ä»¶é“¾æŽ¥è½¬ç»�å¯¹ URL æ®µè�½r   r   z
<!--.*?-->)Úflagsz<meta[^>]*>z<script[^>]*>.*?</script>z<style[^>]*>.*?</style>r9   r:   Tr;   rV   r<   rW   r>   rX   Ú
__ATTACH__Ú__z	<a href="ú" target="_blank">z</a>ÚpÚimgÚsrcu   å›¾ç‰‡Ú__IMG__z<p>z<br/>z</p>c                 óh   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  › d�S )Nr   Ú__TBL__r   ru   )rL   r[   rH   )Ú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   ÚSrb   r   ra   r    rZ   rG   rc   rd   re   rF   rI   rJ   rK   rL   rH   Úreplace_withr`   r^   r&   ÚattrsÚpopr   r   r   r   rN   Ú	enumerateÚsetÚadd)r3   rf   rh   Úlink_protectÚ_soupr:   r<   ro   rR   Úkeyrw   ÚimgsÚsrcsrx   ry   r   Ú	has_tableÚtagÚattrrm   ÚblockÚbÚplainÚkÚvr*   ÚtblÚoutÚseenÚfinalr~   s                                 @r   Úhtml_to_textr§   Ÿ   sM  ø€ áØ�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ò (�Ø §¡ v¨rÓ!2Ñ2´b·i±iÐ@fÐhi×hmÑhmÐntÐvxÓhyÔ{}×{Ñ{õ  7AØ˜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Ø*3°G°9Ð<NÈsÈeÐSWÐ(X�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[* È[* È%[* ÉA/[* Ê4A[* Í*A[: Û*	[7Û6[7Û:	\Ü\c                 óÚ   — |s| S t        «       }| j                  «       r| gng }|D ]3  \  }}||v rŒ|j                  |«       |j                  d|› d|› d�«       Œ5 dj	                  |«      S )uS   é™„ä»¶åŒºè½¬ <p><a>ç»�å¯¹URL</a></p> æ®µè�½, ä¸�ä¿�ç•™ ul/li åŒ…è£…, æŒ‰ URL åŽ»é‡�z<p><a href="rv   z</a></p>rŒ   )r”   r   r•   rL   r`   )r3   rh   r¥   rm   rR   ro   s         r   Úappend_attachmentsr©     sz   € áØˆÜ‹5€DØ Ÿ™œˆW‰I¨b€EØ#ò N‰ˆ�Ø�d‰?ØØ�‰�ÔØ�‰�| 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ÚOperationalErrorr^   r#   r$   Ústore_record)r®   r(   r=   r3   r@   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: é   )rf   r=   r3   Ú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±   ÚprintrH   r   Ú_PAGESr7   r&   rS   r,   r3   r4   r5   rq   r§   r©   r   r   r   rL   r¬   r¹   rº   r¿   r•   r#   r$   ÚopenÚwriteÚjsonÚdumpsÚcommitÚclose)rÑ   Úsr®   ÚexistingÚ	new_countÚ
skip_countÚ
jsonl_rowsr6   rM   rÂ   rN   rR   r=   r@   r+   ÚdhtmlÚdtitleÚddaterg   Úattsr3   r›   Úatts_inÚall_attsÚ	plain_lenÚokÚfr°   s                               r   Úmainrë   E  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Ç   )2Ú__doc__Úsysrc   r   r#   Úhtmlr   Úurllib.parserI   r½   rÙ   Úbs4r   ÚImportErrorr1   r2   r¬   r¹   rº   Úenvironr    r   r   r5   ÚTOTAL_PAGESr%   r!   Ú
_MAX_PAGESr“   Úargvr*   r:   Ú
startswithÚintrF   Ú
ValueErrorrH   rÖ   r   r,   r7   rS   rq   r§   r©   r±   r¿   rë   Ú__name__Úexit© r   r   ú<module>rý      s½  ðñó Û 	Û 	Û Û Û Û Û ðÝ!ð
 &€ØP€Ø*€	Ø€
Ø$€Ø
�*‰*�.‰.˜Ð$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òò8%2òPk'ò\òòòDY7ðx ˆzÒØ€C‡H�H‰T‹VÕð øðY ò ØƒMðûð6 ò 	Ùð	ûð
 ò 	Ùð	ús5   ¤E Â%EÃ!EÅEÅEÅEÅEÅE"Å!E"