Ë
    ¸¬ujÉ4  ã                   ó.  — 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 ddl	m
Z
 dZedz   Zedz   ZdZd	Zd
ZdddœZej$                  j&                  j)                  «        d„ Zd„ Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ Z	 	 dd„Zd„ Zedk(  r e«        yy)u�  
crawl_qss_tzgg.py - æ½œå±±å¸‚äººæ°‘æ”¿åºœ-ç»�æµŽæŠ€æœ¯å¼€å�‘åŒº-é€šçŸ¥å…¬å‘Š
================================================================
ç«™ç‚¹: https://www.qss.gov.cn/xzq/jjkfq/xwzx/tzgg/index.html
CMS:  é¾™è®¯ Lonsun ç«™ç¾¤
åˆ—è¡¨: ul.doc_list > li.odd/even > a[href][title] + span.right.date
       ç¬¬1é¡µ index.html (no JSL), ç¬¬2+é¡µ API /content/column/2000019341?pageIndex=N (JSL WAF)
è¯¦æƒ…: div.j-fontContent.newscontnet > p, h1.newstitle æ ‡é¢˜, meta PubDate æ—¥æœŸ

ç”¨æ³•:
  python3 crawl_qss_tzgg.py              # é»˜è®¤5é¡µ
  python3 crawl_qss_tzgg.py --pages 5    # æŒ‡å®šé¡µæ•°
  python3 crawl_qss_tzgg.py --dry-run    # ä»…é¢„è§ˆ
é    N)Údatetime)ÚBeautifulSoupzhttps://www.qss.gov.cnz/xzq/jjkfq/xwzx/tzgg/index.htmlz'/content/column/2000019341?pageIndex={}z/usr/bin/chromium-browserz/tmp/chrome_qssé   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8)z
User-AgentÚAcceptc                 óp   — t        j                  «       j                  d«      }t        d|› d| › �d¬«       y )Nz%H:%M:%Sú[ú] T)Úflush)r   ÚnowÚstrftimeÚprint)ÚmsgÚtss     ú#/root/gov_crawler/crawl_qss_tzgg.pyÚlogr   %   s.   € Ü	�‰‹×	 Ñ	  Ó	,€BÜ	ˆAˆbˆT��C�5ˆ/ Ö&ó    c                 óŽ   — | sy| j                  dd«      j                  dd«      j                  dd«      } | j                  d«      S )	NÚ z&middot;õ   Â·z&nbsp;ú z&amp;ú&u   Â·. 	
)ÚreplaceÚstrip)Útitles    r   Úclean_titler   *   sB   € ÙØØ�M‰M˜* dÓ+×3Ñ3°H¸cÓB×JÑJÈ7ÐTWÓX€EØ�;‰;�|Ó$Ð$r   c                 óÒ   — 	 t        j                  | t        |d¬«      }|j                  dk(  rd|_        |j
                  S y # t        $ r}t        d| › d|› �«       Y d }~y d }~ww xY w)NF)ÚheadersÚtimeoutÚverifyéÈ   úutf-8u   è¯·æ±‚å¤±è´¥ ú: )ÚrequestsÚgetÚHEADERSÚstatus_codeÚencodingÚtextÚ	Exceptionr   )Úurlr   ÚrÚes       r   Ú
fetch_pager-   1   sb   € ðÜ�L‰L˜¤g°wÀuÔMˆØ�=‰=˜CÒØ ˆAŒJØ—6‘6ˆMØøÜò Üˆm˜C˜5  1 #Ð&Ô'Üûðús   ‚>A Á	A&ÁA!Á!A&c                 ó  — t         j                  | «      }t        dddddt        › �d|g}	 t	        j
                  |dd¬	«      }|j                  j                  d
d¬«      }d|v r|S y # t        $ r}t        d| › d|› �«       Y d }~y d }~ww xY w)Nz
--headlessz--no-sandboxz--disable-gpuz--virtual-time-budget=10000z--user-data-dir=z
--dump-domTé   )Úcapture_outputr   r!   r   )ÚerrorsÚdoc_listu   Chromiumå¤±è´¥ page r"   )
ÚAPI_URLÚformatÚ
CHROME_CMDÚCHROME_DATA_DIRÚ
subprocessÚrunÚstdoutÚdecoder)   r   )Ú
page_indexr*   ÚcmdÚresultÚhtmlr,   s         r   Úfetch_list_via_chromer?   =   sœ   € Ü
�.‰.˜Ó
$€Cä�L .°/Ø%Ø
œ?Ð+Ð,Ø�cð	€CðÜ—‘ °DÀ"ÔEˆØ�}‰}×#Ñ# G°IÐ#Ó>ˆØ˜ÑØˆKØøÜò ÜÐ" : ,¨b°°Ð4Ô5Üûðús   ¬:A( Á(	BÁ1BÂBc                 óÜ  — g }t        | d«      }|j                  dt        j                  d«      ¬«      }|st	        d«       |S |j                  dd¬«      D �]  }|j                  d	«      }|j                  d
t        j                  d«      ¬«      }|sŒ>|sŒA|j                  dd«      j                  «       }|j                  dd«      j                  «       xs |j                  d¬«      }|j                  d¬«      }	|sŒª|sŒ­|j                  d«      r
t        |z   }n,|j                  d«      st        dz   |j                  d«      z   }|j                  t        |«      ||	dœ«       �Œ |S )Núhtml.parserÚulr2   ©Úclass_u     âš  æœªæ‰¾åˆ°doc_listÚliT)Ú	recursiveÚaÚspanÚdateÚhrefr   r   ©r   ú/Úhttp)r   r*   rI   )r   ÚfindÚreÚcompiler   Úfind_allr$   r   Úget_textÚ
startswithÚBASE_URLÚlstripÚappendr   )
r>   ÚitemsÚsouprB   rE   rG   Ú	date_spanrJ   r   Ú	date_texts
             r   Úextract_list_itemsr[   P   s<  € Ø€EÜ˜˜}Ó-€DØ	�‰�4¤§
¡
¨;Ó 7ˆÓ	8€BÙÜÐ%Ô&ØˆØ�k‰k˜$¨$ˆkÓ/ó \ˆØ�G‰G�C‹LˆØ—G‘G˜F¬2¯:©:°gÓ+>�GÓ?ˆ	Ú’Ø—5‘5˜ Ó$×*Ñ*Ó,ˆDØ—E‘E˜' 2Ó&×,Ñ,Ó.ÒH°!·*±*À4°*Ó2HˆEØ!×*Ñ*°Ð*Ó6ˆIÚšØ—?‘? 3Ô'Ü# d™?‘DØŸ™¨Ô0Ü# c™>¨D¯K©K¸Ó,<Ñ<�DØ—‘¤{°5Ó'9À$ÐPYÑZÖ[ð\ð €Lr   c           	      ó¾  — g }t        d«       t        t        d¬«      }|r5t        |«      }t        dt	        |«      › d�«       |j                  |«       nt        d«       t        dt        dz   «      D ]Ž  }| d	kD  rt	        |«      | k\  r nyt        d
|› d�«       t        |«      }|st        d|› d�«        nLt        |«      }|st        d|› d�«        n.t        d|› dt	        |«      › d�«       |j                  |«       Œ� t        «       }g }|D ]/  }	|	d   |vsŒ|j                  |	d   «       |j                  |	«       Œ1 t        dt	        |«      › d�«       |S )Nu   èŽ·å�–ç¬¬1é¡µ (index.html)...é   ©r   u     ç¬¬1é¡µ: õ    æ�¡u     âš  ç¬¬1é¡µèŽ·å�–å¤±è´¥é   é   r   u	   èŽ·å�–ç¬¬u   é¡µ (Chromium)...u	     âš  ç¬¬u   é¡µå¤±è´¥ï¼Œå�œæ­¢u     ç¬¬u   é¡µ: 0æ�¡ï¼Œå�œæ­¢u   é¡µ: r*   u   åŽ»é‡�å�Žå…± )r   r-   Ú
COLUMN_URLr[   ÚlenÚextendÚrangeÚDEFAULT_PAGESr?   ÚsetÚaddrV   )
ÚlimitÚ	all_itemsÚhtml1Úitems1Úpage_idxÚhtml_nÚitems_nÚseenÚuniqueÚitems
             r   Ú
fetch_listrs   g   si  € Ø€Iô Ð'Ô(Ü”z¨2Ô.€EÙÜ# EÓ*ˆÜˆkœ#˜f›+˜ dÐ+Ô,Ø×Ñ˜Õ äÐ'Ô(ô ˜!œ]¨QÑ.Ó/ò "ˆØ�1Š9œ˜Y›¨5Ò0ÙÜˆi˜�zÐ!2Ð3Ô4Ü& xÓ0ˆÙÜ�)˜H˜:Ð%7Ð8Ô9ÙÜ$ VÓ,ˆÙÜ�%˜�zÐ!3Ð4Ô5ÙÜˆe�H�:˜U¤3 w£< .°Ð5Ô6Ø×Ñ˜Õ!ð"ô  ‹5€DØ€FØò  ˆØ�‰;˜dÒ"Ø�H‰H�T˜%‘[Ô!Ø�M‰M˜$Õð ô
 ˆ-œ˜F›�} DÐ)Ô*Ø€Mr   c                 óR  — t        | d¬«      }|syt        |d«      }d}|j                  dd¬«      }|r|j                  d	¬
«      }|s;|j                  dddi¬«      }|r$|j	                  d«      r|d   j                  «       }t        |«      }d}|j                  dddi¬«      }|r$|j	                  d«      r|d   j                  «       }|sX|j                  dt        j                  d«      ¬«      }|r0|j                  d	¬
«      j                  dd«      j                  «       }t        j                  dt        |«      «      }	|	rU|	j                  d«      › d|	j                  d«      j                  d«      › d|	j                  d«      j                  d«      › �}|j                  dd„ ¬«      }
|
s&|j                  dt        j                  d«      ¬«      }
|
s&|j                  dt        j                  d«      ¬«      }
|
s|j                  ddd¬ «      }
|
rt        |
«      nd}|||fS )!u.   èŽ·å�–è¯¦æƒ…é¡µï¼šæ ‡é¢˜ã€�æ—¥æœŸã€�æ­£æ–‡HTMLé   r^   )r   r   r   rA   r   Úh1Ú	newstitlerC   TrK   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentÚPubDaterH   u   å�‘å¸ƒæ—¥æœŸ)Ústringu   å�‘å¸ƒæ—¥æœŸï¼šz!(\d{4})[-/](\d{1,2})[-/](\d{1,2})ra   ú-r`   é   Údivc                 ó   — | xr
 d| v xr d| v S )Nzj-fontContentÚnewscontnet© )Úcs    r   ú<lambda>zfetch_detail.<locals>.<lambda>²   s   € °AÒ4e¸/ÈQÐ:NÒ4eÐS`ÐdeÐSe€ r   rƒ   Ú
TRS_EditorÚcon_mainÚcolor_printsssss)rD   Úid)r-   r   rN   rR   r$   r   r   rO   rP   r   ÚsearchÚstrÚgroupÚzfill)r*   r>   rX   r   rv   Úmeta_trZ   Úmeta_dÚspÚdmÚcontent_divÚcontent_htmls               r   Úfetch_detailr•   �   sú  € ä�c 2Ô&€DÙØä˜˜}Ó-€Dð €EØ	�‰�4 ˆÓ	,€BÙ	Ø—‘ $�Ó'ˆÙØ—‘˜6¨&°.Ð)A�ÓBˆÙ�f—j‘j Ô+Ø˜9Ñ%×+Ñ+Ó-ˆEÜ˜Ó€Eð €IØ�Y‰Y�v f¨iÐ%8ˆYÓ9€FÙ�&—*‘*˜YÔ'Ø˜9Ñ%×+Ñ+Ó-ˆ	ÙØ�Y‰Y�v¤b§j¡j°Ó&AˆYÓBˆÙØŸ™¨$˜Ó/×7Ñ7Ð8IÈ2ÓN×TÑTÓVˆIä	�‰Ð7¼¸Y»Ó	H€BÙ	Ø—x‘x “{�m 1 R§X¡X¨a£[×%6Ñ%6°qÓ%9Ð$:¸!¸B¿H¹HÀQ»K×<MÑ<MÈaÓ<PÐ;QÐRˆ	ð —)‘)˜EÑ*e�)Óf€KÙØ—i‘i ¬b¯j©j¸Ó.H�iÓIˆÙØ—i‘i ¬b¯j©j¸Ó.G�iÓHˆÙØ—i‘i ¨jÐ=O�iÓPˆá'2”3�{Ô#¸€Là�)˜\Ð)Ð)r   c                 ó~  ‡‡— | syt        | d«      }|j                  ddg«      D ]  }|j                  «        Œ |j                  d«      D ]  }|j                  d«       Œ |j                  dg«      D ]  }|j                  «        Œ d}|rŽd	}t	        |j                  d
dg«      «      D ]j  }|j
                  D �cg c]*  }|j                  €t        |«      j                  «       sŒ)|‘Œ, }}|sŒEt        d„ |D «       «      sŒX|j                  «        d} n |rŒŽˆfd„Š ‰|«      }t        |«      dk  �rg }|j                  d«      D ]Ì  }	|	j                  dd«      j                  «       }
|
sŒ&|
j                  d«      rŒ8|
j                  d«      r
t        |
z   }
n,|
j                  d«      st        dz   |
j                  d«      z   }
|	j                  dd«      j                  «       }|r|j!                  d|› d|
› �«       Œ¹|j!                  d|
› �«       ŒÎ g }|j                  d«      D ]½  }|j                  dd«      j                  «       Št#        ˆfd„dD «       «      sŒ8|j%                  d¬«      xs ‰j'                  d«      d   }‰j                  d«      r
t        ‰z   Šn,‰j                  d«      st        dz   ‰j                  d«      z   Š|j!                  d|› d‰› �«       Œ¿ g }|r"|j!                  d«       |j)                  |«       |r"|j!                  d «       |j)                  |«       |r|d!z   dj+                  |«      z   }t-        j.                  d"d|«      }t-        j.                  d#d!|«      }t-        j.                  d$d|«      }t-        j.                  d%d|«      }|j                  «       S c c}w )&Nr   rA   ÚstyleÚscriptÚbrú
zo:pTFr�   Úpc              3   ó:   K  — | ]  }|j                   d k(  –— Œ y­w)r›   N)ry   )Ú.0r…   s     r   ú	<genexpr>zclean_html.<locals>.<genexpr>Ñ   s   è ø€ Ò8¨a˜AŸF™F c�MÑ8ùs   ‚c                 óT  •— g }| j                   D ]ÿ  }|j                  €.t        |«      j                  «       }|sŒ+|j	                  |«       Œ=|j                  dk(  r|j	                  t        |«      «       Œg|j                  dv r+ ‰|«      }|j                  «       sŒŽ|j	                  |«       Œ |j                  dv r+ ‰|«      }|j                  «       sŒÇ|j	                  |«       ŒÙ|j                  d¬«      }|sŒî|j	                  |«       �Œ dj                  d„ |D «       «      S )NÚtable)r›   r�   ÚtdÚthrE   ÚsectionÚtrrv   Úh2Úh3Úh4Úh5Úh6)rH   ÚfontÚbÚiÚstrongÚemrG   ÚuÚsubÚsupÚsmallÚlabelTrK   ú

c              3   óB   K  — | ]  }|j                  «       sŒ|–— Œ y ­w©NrK   )r�   r›   s     r   rž   z.clean_html.<locals>.extract.<locals>.<genexpr>í   s   è ø€ Ò9 ¨q¯w©w­yœ1Ñ9ùs   ‚˜)Úchildrenry   rŒ   r   rV   rR   Újoin)ÚelementÚpartsÚchildr(   ÚinnerÚextracts        €r   r½   zclean_html.<locals>.extractÖ   sü   ø€ ØˆØ×%Ñ%ò 	'ˆEØ�z‰zÐ!Ü˜5“z×'Ñ'Ó)�ÚØ—L‘L Õ&Ø—‘˜wÒ&Ø—‘œS ›ZÕ(Ø—‘ð  Dñ Dá ›�Ø—;‘;•=Ø—L‘L Õ'Ø—‘ð  Eñ Eá ›�Ø—;‘;•=Ø—L‘L Õ'à—~‘~¨D�~Ó1�ÚØ—L‘L Ö&ð)	'ð* �{‰{Ñ9 eÔ9Ó9Ð9r   iô  ÚimgÚsrczdata:rL   rM   Úaltu	   [å›¾ç‰‡: r	   u	   [å›¾ç‰‡] rG   rJ   c              3   ó\   •K  — | ]#  }‰j                  «       j                  |«      –— Œ% y ­wr¶   )ÚlowerÚendswith)r�   ÚextrJ   s     €r   rž   zclean_html.<locals>.<genexpr>  s(   øè ø€ ò  V°#�4—:‘:“<×(Ñ(¨×-ñ  Vùs   ƒ),)z.pdfz.docz.docxz.xlsz.xlsxz.zipz.rarz.pngz.jpgz.jpegz.gifrK   éÿÿÿÿu	   [é™„ä»¶: u   [é¡µé�¢å›¾ç‰‡]u   [é¡µé�¢é™„ä»¶]r´   u9   (?<!\n)\s+(?=[ä¸€äºŒä¸‰å››äº”å…­ä¸ƒå…«ä¹�å��]+[ã€�ï¼Ž\.])z\n{3,}z\s+\nz\n\s+)r   rQ   Ú	decomposeÚreplace_withÚlistr·   ry   rŒ   r   ÚallÚunwraprc   r$   rS   rT   rU   rV   ÚanyrR   Úsplitrd   r¸   rO   r°   )r”   rX   Útagr™   Úchangedr…   Úkidsr=   Ú	img_partsr¾   r¿   rÀ   Ú	att_partsrG   r(   Úextrar½   rJ   s                   @@r   Ú
clean_htmlrÓ   ¿   si  ù€ ÙØÜ˜ }Ó5€Dà�}‰}˜g xÐ0Ó1ò ˆØ�‰�ðà�m‰m˜DÓ!ò ˆØ
�‰˜Õðà�}‰}˜e˜WÓ%ò ˆØ�‰�ðð €GÙ
ØˆÜ˜Ÿ™ u¨c lÓ3Ó4ò 	ˆCØ"Ÿ|™|Ö[˜!°A·F±F°NÌ3ÈqË6Ï<É<Í>’AÐ[ˆDÐ[ÚœÑ8°4Ô8Õ8Ø—
‘
”Ø�Ùð	ò ô:ñ2 �T‹]€Fô ˆ6ƒ{�SÓØˆ	Ø—=‘= Ó'ò 	8ˆCØ—'‘'˜% Ó$×*Ñ*Ó,ˆCÚ˜3Ÿ>™>¨'Õ2Ø—>‘> #Ô&Ü" S™.‘CØŸ™¨Ô/Ü" S™.¨3¯:©:°c«?Ñ:�CØ—g‘g˜e RÓ(×.Ñ.Ó0�ÙØ×$Ñ$ y°°°R¸°uÐ%=Õ>à×$Ñ$ y°°Ð%6Õ7ð	8ð ˆ	Ø—‘˜sÓ#ò 	=ˆAØ—5‘5˜ Ó$×*Ñ*Ó,ˆDÜó  Vð  :Uô  Võ  VØ—z‘z¨�zÓ-ÒD°·±¸C³ÀÑ1D�Ø—?‘? 3Ô'Ü# d™?‘DØŸ™¨Ô0Ü# c™>¨D¯K©K¸Ó,<Ñ<�DØ× Ñ  9¨T¨F°"°T°FÐ!;Õ<ð	=ð ˆÙØ�L‰LÐ)Ô*Ø�L‰L˜Ô#ÙØ�L‰LÐ)Ô*Ø�L‰L˜Ô#áØ˜f‘_ t§y¡y°Ó'7Ñ7ˆFô �V‰VÐPÐRVÐX^Ó_€FÜ�V‰V�I˜v vÓ.€FÜ�V‰V�H˜d FÓ+€FÜ�V‰V�H˜d FÓ+€Fà�<‰<‹>Ðùò[ \s   Â;*N:Ã&N:c                 ó  — | st        d«       y d}d}| D ]Ú  }|j                  dd«      }|j                  dd«      }|j                  dd«      }	|j                  dd«      }
|r|	sŒPd	„ }d
 ||«      › d ||	«      › d ||	«      › d ||«      › d ||«      › d ||«      › d ||
«      › d ||«      › d ||«      › d�}	 t        j                  d|d|› �gddd¬«      }|j                  dk(  r|dz  }ŒÜ t        d|› dt        | «      › d�«       t        d«       d |«      › d�}	 t        j                  d||gddd¬«       y # t
        $ r}t        d|› �«       Y d }~�ŒJd }~ww xY w# t
        $ r}t        d|› �«       Y d }~y d }~ww xY w)Nu   æ— æ•°æ�®å�¯å…¥åº“z/mnt/data/search.dbr   r   r   rI   r*   r|   c                 ó.   — | r| j                  dd«      S dS )Nú'z''r   )r   )Úss    r   r†   z"push_to_searchdb.<locals>.<lambda>/  s   € ±˜Ÿ	™	 # tÓ,€ °r€ r   z†INSERT OR IGNORE INTO gov_raw (site_name, source_url, page_url, title, publish_date, summary, content, group_name, industry) VALUES ('z', 'z');Úsqlite3zPRAGMA busy_timeout=15000; Tr/   )r0   r(   r   ra   u   å…¥åº“å¤±è´¥: u   å…¥åº“å®Œæˆ�: rL   r_   u   å�Œæ­¥FTS...z“INSERT OR IGNORE INTO gov_search (rowid, title, site_name, summary) SELECT r.id, r.title, r.site_name, r.summary FROM gov_raw r WHERE r.site_name='zA' AND NOT EXISTS (SELECT 1 FROM gov_search s WHERE s.rowid=r.id);u   FTSå�Œæ­¥å¤±è´¥: )r   r$   r7   r8   Ú
returncoder)   rc   )rW   Úsource_nameÚ
group_nameÚindustryÚdb_pathÚinsertedrr   r   rI   r*   r|   ÚescÚsqlr+   r,   Úfts_sqls                   r   Úpush_to_searchdbrâ      sê  € áÜÐ Ô!ØØ#€GØ€HØò &ˆØ—‘˜ "Ó%ˆØ�x‰x˜ Ó#ˆØ�h‰h�u˜bÓ!ˆØ—(‘(˜9 bÓ)ˆÙ™CØá9ˆðñ �KÓ Ð! ¡c¨#£h Z¨t±C¸³H°:ð >Ù�E“
ˆ|˜4¡ D£	˜{¨$©s°5«z¨lð ;Ù�G“ˆ~˜T¡# j£/Ð!2°$±s¸8³}°oð Fðð 	ð	&Ü—‘Ø˜GÐ'BÀ3À%Ð%HÐIØ#¨$¸ôˆAð �|‰|˜qÒ Ø˜A‘�øð3&ô: ˆ.˜˜
 !¤C¨£J <¨tÐ4Ô5ô ˆÔð	ñ " +Ó.Ð/ð 0Jð	Jð ð%Ü�‰Ø˜ Ð)Ø d°Bö	
øô ò 	&Ü�.  Ð$×%Ò%ûð	&ûô& ò %ÜÐ ˜sÐ#×$Ñ$ûð%ús0   Â=3EÄ%E' Å	E$ÅEÅE$Å'	FÅ0FÆFc                  ó  — dd l } | j                  d¬«      }|j                  dt        t        d¬«       |j                  ddd	¬
«       |j                  «       }|j                  }t        d|› d|j                  › �«       t        |dz  ¬«      }t        dt        |«      › d�«       |j                  rY|d d D ]-  }t        d|d   › d|d   d d › �«       t        d|d   › �«       Œ/ t        dt        |«      › d�«       t        d«       y t        |«      D ]†  \  }}t        d|dz   › dt        |«      › d|d   d d › d�«       t        |d   «      \  }}}	t        |xs |d   «      |d<   |xs |d   |d<   |	rt        |	«      nd|d <   t!        j"                  d!«       Œˆ t        d"t        |«      › d#�«       |D �
cg c]  }
|
j%                  d «      sŒ|
‘Œ }}
t        d$t        |«      › d%t        |«      t        |«      z
  › d�«       |d d& D ]_  }t        d|d   › d|d   d d › �«       t        d|d   › �«       t        d't        |j%                  d d«      «      › d(�«       t        «        Œa |rt'        |«       t        d)«       y c c}
w )*Nr   u   æ½œå±±å¸‚-é€šçŸ¥å…¬å‘Šçˆ¬è™«)Údescriptionz--pagesu   çˆ¬å�–é¡µæ•° (default: 5))ÚtypeÚdefaultÚhelpz	--dry-runÚ
store_trueu	   ä»…é¢„è§ˆ)Úactionrç   u#   ðŸš€ çˆ¬è™«å�¯åŠ¨: qss_tzgg, pages=z
, dry_run=é   )ri   u
   åˆ—è¡¨å…± r_   r   z  [rI   r	   r   é2   z  URL: r*   u
     ... å…± u   âœ… é¢„è§ˆå®Œæˆ�ra   rL   é(   z...r   r|   g333333Ó?u   
=== çˆ¬å�–å®Œæˆ�: u    æ�¡ ===u   å�«æ­£æ–‡: u    æ�¡ / ç©ºæ­£æ–‡: r€   u
     æ­£æ–‡: z charsu   âœ… å…¨éƒ¨å®Œæˆ�)ÚargparseÚArgumentParserÚadd_argumentÚintrf   Ú
parse_argsÚpagesr   Údry_runrs   rc   r   Ú	enumerater•   r   rÓ   ÚtimeÚsleepr$   râ   )rí   ÚparserÚargsrò   rj   rr   r¬   ÚdtÚddÚdcÚitÚvalids               r   Úmainrþ   X  s«  € ÛØ×$Ñ$Ð1OÐ$ÓP€FØ
×Ñ˜	¬´]Ø8ð ô :à
×Ñ˜¨L¸{ÐÔKØ×ÑÓ€Dà�J‰J€EäÐ
-¨e¨W°J¸t¿|¹|¸nÐMÔNä ¨¡Ô,€IÜˆ*”S˜“^Ð$ DÐ)Ô*à‡|‚|Ø˜b˜q�Mò 	+ˆDÜ�C˜˜V™�~ R¨¨W©°c°rÐ(:Ð';Ð<Ô=Ü�G˜D ™K˜=Ð)Õ*ð	+ô 	�
œ3˜y›>Ð*¨$Ð/Ô0ÜÐÔØä˜YÓ'ò ‰ˆˆ4Üˆc�!�A‘#��aœ˜I›Ð' r¨$¨w©-¸¸Ð*<Ð)=¸SÐAÔBÜ! $ u¡+Ó.‰
ˆˆB�Ü# BÒ$7¨$¨w©-Ó8ˆˆW‰ØÒ)˜T &™\ˆˆV‰Ù,.œ* Rœ.°BˆˆY‰Ü�
‰
�3�ðô Ð
œs 9›~Ð.¨hÐ7Ô8Ø#Ö9�B r§v¡v¨iÕ'8ŠRÐ9€EÐ9Üˆ+”c˜%“j�\Ð!3´C¸	³NÄSÈÃZÑ4OÐ3PÐPTÐUÔVØ�b�q�	ò ˆÜ��D˜‘L�>  D¨¡M°#°2Ð$6Ð#7Ð8Ô9Ü�˜˜U™�}Ð%Ô&Ü�
œ3˜tŸx™x¨	°2Ó6Ó7Ð8¸Ð?Ô@Ü�ð	ñ Ü˜Ô#äÐÕùò :s   Æ;JÇJÚ__main__)ru   )r   )Úqss_tzggu	   å®‰å¾½çœ�u   æ”¿åºœå…¬å‘Š) Ú__doc__ÚsysÚosrO   Újsonr#   rõ   r7   r   Úbs4r   rT   rb   r3   r5   r6   rf   r%   ÚpackagesÚurllib3Údisable_warningsr   r   r-   r?   r[   rs   r•   rÓ   râ   rþ   Ú__name__r„   r   r   ú<module>r
     sÈ   ðñ÷ 5× 4× 4Ó 4Ý Ý à#€ØÐ9Ñ9€
Ø
Ð>Ñ
>€Ø(€
Ø#€Ø€ðGàOñ€ð 	× Ñ × Ñ × *Ñ *Ô ,ò'ò
%ó	òò&ó.&òR,*ò^^ðB @KØ,ó5%òp+ð\ ˆzÒÙ…Fð r   