Ë
    ¸¬ujõ;  ã                   ó  — 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ZdZeez   ZdZdZdZd	Zd
dddœZdZ eej.                  «      D ]k  \  ZZej5                  d«      r	  eej9                  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&e'dk(  r 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í  
å�‰æž—å¸‚äººæ°‘æ”¿åºœ - é€šçŸ¥å…¬å‘Š (www.jlcity.gov.cn/zw/tzgg/)
CMS: TRS (meta ArticleTitle/PubDate/ContentSource, appendix é™„ä»¶, WcmStatic ç»Ÿè®¡)
åˆ—è¡¨: div.home-list-info > a[title] (å�Œ div: æ ‡é¢˜+æ—¥æœŸ), æ¯�é¡µçº¦10æ�¡
åˆ†é¡µ: index.html (ç¬¬1é¡µ) / index_{N}.html (0-based, å…±56é¡µ)
è¯¦æƒ…: div.detail-title æ ‡é¢˜ + div.detail-info æ—¥æœŸ + div.detail-content > div.TRS_Editor æ­£æ–‡
      Word è½¬æ�¢ (p.MsoNormal + span é€�å­—) + <table> è¡¨æ ¼ä¿�ç•™ + appendix é™„ä»¶å†…åµŒ
é    N)ÚBeautifulSoupzhttp://www.jlcity.gov.cnz	/zw/tzgg/u"   å�‰æž—å¸‚äººæ°‘æ”¿åºœ-é€šçŸ¥å…¬å‘Šu   å�‰æž—zcrawl_jlcity_tzgg.pyz/mnt/data/search.dbzkMozilla/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 )zPStrip &middot;&nbsp; entity prefixes + unescape all entities + strip zero-width.Ú u   â€‹u   â€Œu   â€�u   ï»¿ú\s+ú )Úhtml_libÚunescapeÚreplaceÚreÚsubÚstrip)Úts    ú&/root/gov_crawler/crawl_jlcity_tzgg.pyÚclean_titler   9   so   € áØÜ×Ñ˜!Ó€AØ	�	‰	�(˜BÓ×'Ñ'¨°"Ó5×=Ñ=¸hÈÓK×SÑSÐT\Ð^`Óa€AÜ
�‰ˆv�s˜AÓ€AØ�7‰7‹9Ðó    c                 ó   — dd l }d }t        |«      D ]O  }	 |xs |j                  | t        |¬«      }|j                  dk(  r|c S |}t        j                  d|dz   z  «       ŒQ t        |t
        «      r|‚|S # t
        $ r}|}Y d }~ŒAd }~ww xY w)Nr   )ÚheadersÚtimeoutéÈ   g      ø?r   )	ÚrequestsÚrangeÚgetÚHEADERSÚstatus_codeÚ	ExceptionÚtimeÚsleepÚ
isinstance)	ÚurlÚsessionr   Úretriesr   ÚlastÚiÚrÚes	            r   Úfetchr)   C   s—   € ÛØ€DÜ�7‹^ò "ˆð	ØÒ$˜H×)Ñ)¨#´wÈÐ)ÓPˆAØ�}‰} Ò#Ø’ØˆDô 	�
‰
�3˜!˜a™%‘=Õ!ð"ô �$œ	Ô"Øˆ
Ø€Køô ò 	Ø�Dûð	ús   –,A8ÁA8Á8	BÂBÂBc           
      óò  ‡‡‡‡— | sddg fS t        j                  dd| t         j                  ¬«      } t        j                  dd| «      } t        j                  dd| t         j                  ¬«      } t        j                  dd| t         j                  t         j                  z  ¬«      } t        j                  dd| t         j                  t         j                  z  ¬«      } d	}g }g Šd}g }t        �rJt	        | d
«      }|j                  d«      D �])  }|j                  dd«      }|r"|j                  d«      s|j                  d«      rŒ;t        |j                  d«      «      xs. t        t        j                  d|t         j                  «      «      }|sŒˆ|j                  d¬«      }	|	s5t        j                  j                  |j                  d«      d   «      xs d}	t        j                  dd|	«      j                  «       }	t         j"                  j%                  ‰|«      }
|j'                  ||
|	f«       �Œ, g Šˆfd„}t        j                  d|| t         j                  t         j                  z  ¬«      }t        j                  d| t         j                  «      rd}i Šˆˆˆf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                  ¬«      }t        j                  d!d|t         j                  ¬«      }|j                  d"«      D �]
  }|j                  «       }|sŒt        j                  d#d|«      }t)        j*                  |«      }|j-                  d$d%«      j-                  d&d%«      }t        j                  d'd|«      }|sŒ‰j/                  «       D ]  \  }}|j-                  ||«      }Œ t1        ‰«      D ]  \  }}|j-                  d(|› d)�|«      }Œ t        j                  d*ˆfd+„|«      }|j'                  |j                  «       «       �Œ d"j3                  |«      }‰j/                  «       D ]  \  }}|j-                  ||«      }Œ t1        ‰«      D ]  \  }}|j-                  d(|› d)�|«      }Œ t        j                  d,d|«      }t        j                  d-d|«      }t)        j*                  |«      }t        j                  d.d|«      }t        j                  d/d"|«      }t        j                  d0d%|«      }t5        «       }g }|j                  d"«      D ]X  }t        j                  d1dt        j                  d#d|«      «      }|sŒ2||v rŒ7|j7                  |«       |j'                  |«       ŒZ d"j3                  |«      j                  «       }|rQg }|D ]#  \  }}
}	|
|vsŒ|j'                  d2|
› d3|	› d4�«       Œ% |r%|d"z   d"j3                  |«      z   j                  «       }||‰fS )5zÌConvert detail-content inner HTML to stored format:
    - keep <table> HTML intact
    - 

 between <p> blocks
    - attachment <a> links embedded with absolute URL
    - strip <script>/<style>/noise
    r   r   z>^\s*<div\s+class=[\"'](?:detail-content|TRS_Editor)[\"'][^>]*>©Úflagsz
</div>\s*$z
<!--.*?-->ú<script[^>]*>.*?</script>z<style[^>]*>.*?</style>Núhtml.parserÚaÚhrefú#zjavascript:Úappendixz1\.(docx?|pdf|xlsx?|pptx?|et|ofd|wps|rar|zip|txt)$T©r   ú?õ   é™„ä»¶õ   ^é™„ä»¶[:ï¼š]\s*c                 óh   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  › d�S )Nr   Ú__TBL__r   Ú__)ÚappendÚgroupÚlen)Ú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   c                 ó  •— | j                  d«      }| 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        ‰«      › d
�}d|› d|› d�‰|<   |S )Nr   é   ú<[^>]+>r   r6   r4   r   r5   Ú__LINK__r9   z	<a href="ú" target="_blank">z</a>)r;   r   r   r   r   r   ÚosÚpathÚbasenameÚsplitÚurllibÚparseÚurljoinr:   r<   )	r=   r0   ÚinnerÚtxtÚabs_urlÚkeyÚattachmentsÚlink_protectÚpage_urls	         €€€r   Ú
_link_replz html_to_text.<locals>._link_repl‡   sè   ø€ Ø�w‰w�q‹zˆØ—‘˜“
ˆÜ�f‰f�Z  UÓ+ˆÜ×Ñ Ó$×*Ñ*Ó,ˆÜ�f‰fÐ(¨"¨cÓ2×8Ñ8Ó:ˆÙÜ—'‘'×"Ñ" 4§:¡:¨c£?°1Ñ#5Ó6ÒB¸(ˆCÜ—,‘,×&Ñ& x°Ó6ˆØ×Ñ˜G S˜>Ô*Øœ˜\Ó*Ð+¨2Ð.ˆØ'¨ yÐ0BÀ3À%ÀtÐLˆ�SÑØˆ
r   z&<a\s[^>]*href="([^"]+)"[^>]*>(.*?)</a>z</p>z</p>

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

rB   õ   Â r
   z&nbsp;z[\s\u200b\u200c\u200d\ufeff]+r8   r9   z)<a\s[^>]*href=\"([^\"]+)\"[^>]*>(.*?)</a>c                 ód   •— ‰j                  | j                  d«      | j                  d«      «      S )Nr   )r   r;   )r=   rQ   s    €r   ú<lambda>zhtml_to_text.<locals>.<lambda>®   s.   ø€ È<×K[ÑK[Ð\]×\cÑ\cÐdeÓ\fÐhi×hoÑhoÐpqÓhrÓKs€ r   z__LINK__\d+__z__TBL__\d+__z[ \t]+\nz\n{3,}z	[ \t]{2,}r	   z<p><a href="rD   z</a></p>)r   r   ÚIÚSr   Úfind_allr   Ú
startswithÚboolÚsearchÚget_textrE   rF   rG   rH   r   rI   rJ   rK   r:   r   r   r   ÚitemsÚ	enumerateÚjoinÚsetÚadd)ÚcontentrR   ÚsoupÚpartsÚ	has_tableÚattach_linksr/   r0   Ú	is_attachrM   rN   r?   Úcontent2rS   ÚblockÚbÚplainÚkÚvr&   ÚtblÚoutÚseenÚfinalÚprO   ÚappendedrP   rQ   r>   s    `                         @@@r   Úhtml_to_textrv   T   s™  û€ ñ Ø�1�bˆyÐä�f‰fÐVÐXZÐ\cÔkm×koÑkoÔp€GÜ�f‰f�] B¨Ó0€Gä�f‰f�] B¨´r·t±tÔ<€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à€DØ€EØ€KØ€Ið €LÞÜ˜W mÓ4ˆØ—‘˜sÓ#ó 	7ˆAØ—5‘5˜ Ó$ˆDÙ˜4Ÿ?™?¨3Ô/°4·?±?À=Ô3QØÜ˜QŸU™U :Ó.Ó/ò  E´4¼¿	¹	ÐBvÐx|ô  A÷  Cñ  Có  9Dó  4EˆIÚØ—j‘j t�jÓ,�ÙÜŸ'™'×*Ñ*¨4¯:©:°c«?¸1Ñ+=Ó>ÒJÀ(�CÜ—f‘fÐ0°"°cÓ:×@Ñ@ÓB�Ü Ÿ,™,×.Ñ.¨x¸Ó>�Ø×#Ñ# Q¨°Ð$5Ö6ð	7ð €Mô2ô �v‰vÐ0°)¸WÌBÏDÉDÔSU×SWÑSWÉKÔX€HÜ	‡y�y� '¬2¯4©4Ô0Øˆ	ð €Löô �v‰vÐ?ÀÈXÔ]_×]aÑ]aÔdf×dhÑdhÑ]hÔi€Hô �v‰v�g˜z¨8¼2¿4¹4Ô@€HÜ�v‰v�l D¨(¼"¿$¹$Ô?€Hä�v‰vÐAÀ2ÀxÔWY×W[ÑW[Ô\€HÜ�v‰v�j " h´b·d±dÔ;€Hà—‘ Ó'ó  ˆØ�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ô �F‰FÐ?ÓAsÐuvÓwˆØ�‰�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Ü
�&‰&�˜d CÓ
(€CÜ
�&‰&�˜F CÓ
(€CÜ
�&‰&�˜s CÓ
(€Cô ‹5€DØ€EØ�Y‰Y�vÓò ˆÜ�f‰f�V˜R¤§¡¨
°B¸Ó!:Ó;ˆÙØØ�$‰;ØØ�‰�ŒØ�‰�Q�ðð �+‰+�eÓ
×
"Ñ
"Ó
$€Cñ ØˆØ+ò 	Y‰OˆAˆw˜Ø˜cÒ!Ø—‘ ,¨w¨iÐ7IÈ#ÈÈhÐ WÕXð	Yñ Ø˜‘< &§+¡+¨hÓ"7Ñ7×>Ñ>Ó@ˆCà�	˜;Ð&Ð&r   c                 óè  — g }t         �rt        | d«      }|j                  dd¬«      }|rþ|j                  dd¬«      D ]è  }|j                  dd	«      j	                  «       }t        j                  d
|«      sŒ:t        j                  j                  t        |«      }|j                  d«      xs |j                  dd¬«      }t        |«      }|j                  d«      }	d	}
|	D ].  }|j                  d¬«      }t        j                  d|«      sŒ,|}
 n |j                  |||
f«       Œê |sÇt        j                  d| t
        j                   «      D ]Ÿ  }|j#                  d«      |j#                  d«      |j#                  d«      }}}t        j                  j                  t        |«      }t        j                  d|«      }|j                  |t        |«      |r|j#                  d«      nd	f«       Œ¡ |S )z*Extract (url, title, date) from list page.r.   Údivzhome-list-info©Úclass_r/   T)r0   r0   r   z/20\d{4}/t\d+_\d+\.html$Útitler
   r3   z^20\d{2}-\d{2}-\d{2}$zP<a[^>]+href="([^"]*?/20\d{4}/t\d+_\d+\.html)"[^>]*title="([^"]*)"[^>]*>(.*?)</a>r   rA   é   z20\d{2}-\d{2}-\d{2}r   )r   ÚfindrZ   r   r   r   r]   rI   rJ   rK   ÚLIST_URLr^   r   Úmatchr:   ÚfinditerrY   r;   )Ú	html_textrR   r_   re   Úboxr/   r0   rN   r{   ÚdivsÚdateÚdr   r=   rL   Údate_ms                   r   Ú
parse_listr‡   Û   s¿  € à€EÞÜ˜Y¨Ó6ˆØ�i‰i˜Ð&6ˆiÓ7ˆÙØ—\‘\ #¨D�\Ó1ò 5�Ø—u‘u˜V RÓ(×.Ñ.Ó0�Ü—y‘yÐ!<¸dÔCØÜ Ÿ,™,×.Ñ.¬x¸Ó>�ØŸ™˜g›ÒE¨!¯*©*°SÀ¨*Ó*E�Ü# EÓ*�Ø—z‘z %Ó(�Ø�Øò �AØŸ
™
¨˜
Ó.�AÜ—x‘xÐ 8¸!Õ<Ø ˜Ùð	ð
 —‘˜g u¨dÐ3Õ4ð5ñ ä—‘ÐpÐr{Ô}÷  ~Bñ  ~Bó  Cò 	[ˆAØ!"§¡¨£¨Q¯W©W°Q«Z¸¿¹À»˜�%ˆDÜ—l‘l×*Ñ*¬8°TÓ:ˆGÜ—Y‘YÐ5°uÓ=ˆFØ�L‰L˜'¤;¨uÓ#5É&°v·|±|ÀA´ÐVXÐYÕZð		[ð
 €Lr   c                 óÒ  — d}d}t         �r~t        | d«      }|j                  dddi¬«      }|r|j                  d«      rt        |d   «      }|j                  dddi¬«      }|r'|j                  d«      r|d   j	                  «       d	d
 }|j                  dd¬«      }|rét        |«      }t        j                  dd|t        j                  t        j                  z  ¬«      }|j                  dd¬«      }|rt        |«      }|s1|j                  dd¬«      }	|	rt        |	j                  dd¬«      «      }|sL|j                  dd¬«      }
|
r7t        j                  d|
j                  «       «      }|r|j                  d«      }|||fS t        j                  d| «      }|rt        |j                  d«      «      }t        j                  d| «      }|r"|j                  d«      j	                  «       d	d
 }| j                  d«      }|dk7  rØ| |d	 }d}d}t        j                  d|«      D ]D  }|j                  d«      j                  d«      r|dz  }|dk(  sŒ.|j                  «       } n|dz  }ŒF |dkD  rm|d	| }t        j                  dd|t        j                  t        j                  z  ¬«      }t        j                  d|«      }|r||j!                  «       d	 }|||fS ||dfS ) z.Extract title, date, content from detail page.r   r.   ÚmetaÚnameÚArticleTitle)Úattrsrd   ÚPubDateNé
   rx   zdetail-contentry   r-   r+   Ú
TRS_Editorzdetail-titler
   Tr3   zdetail-infou"   æ—¥æœŸ[:ï¼š]\s*(\d{4}-\d{2}-\d{2})r   z'name="ArticleTitle"\s+content="([^"]*)"z"name="PubDate"\s+content="([^"]*)"zclass="detail-content"éÿÿÿÿr   z<div\b[^>]*>|</div>z</div>z<div class="TRS_Editor">)r   r}   r   r   r   Ústrr   r   rY   rX   r^   r]   r;   r€   r[   ÚendÚstart)r�   rR   r{   r„   re   r=   ÚdcÚcontent_htmlÚteÚdtÚdiÚdmÚidxÚsegÚdepthr’   Úmms                    r   Úparse_detailrž   û   sÁ  € à€EØ€DÞÜ˜Y¨Ó6ˆØ�I‰I�f V¨^Ð$<ˆIÓ=ˆÙ�—‘�yÔ!Ü  )¡Ó-ˆEØ�I‰I�f V¨YÐ$7ˆIÓ8ˆÙ�—‘�yÔ!Ø�Y‘<×%Ñ%Ó'¨¨Ð,ˆDØ�Y‰Y�uÐ%5ˆYÓ6ˆÙÜ˜r›7ˆLäŸ6™6Ð">ÀÀLÔXZ×X\ÑX\Ô_a×_cÑ_cÑXcÔdˆLà—‘˜ |�Ó4ˆBÙÜ" 2›w�ÙØ—Y‘Y˜u¨^�YÓ<�ÙÜ'¨¯©°C¸t¨Ó(DÓE�EÙØ—Y‘Y˜u¨]�YÓ;�ÙÜŸ™Ð#HÈ"Ï+É+Ë-ÓX�BÙØ!Ÿx™x¨›{˜Ø˜$ Ð,Ð,ä
�	‰	Ð<¸iÓH€AÙÜ˜AŸG™G A›JÓ'ˆÜ
�	‰	Ð7¸ÓC€AÙØ�w‰w�q‹z×ÑÓ! # 2Ð&ˆØ
�.‰.Ð1Ó
2€CØ
ˆb‚yà˜˜ˆoˆØˆØˆÜ—+‘+Ð4°cÓ:ò 	ˆBØ�x‰x˜‹{×%Ñ% hÔ/Ø˜‘
�Ø˜A“:ØŸ&™&›(�CÙà˜‘
‘ð	ð �Š7Ø˜t ˜9ˆLÜŸ6™6Ð">ÀÀLÔXZ×X\ÑX\Ô_a×_cÑ_cÑXcÔdˆLÜ—‘Ð6¸ÓEˆBÙØ+¨B¯H©H«J¨KÐ8�Ø˜$ Ð,Ð,Ø�$˜ˆ?Ðr   c                 óT  — | j                  d|f«      }|j                  «       ry	 | j                  d|||||t        t        t        |d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        j                  $ r=}dt        |«      v r*t        j                   d«       t#        | |||||«      cY d }~S ‚ d }~ww xY w)Nz'SELECT id FROM gov_raw WHERE page_url=?Fz¨INSERT OR IGNORE INTO gov_raw (page_url, source_url, title, content, publish_date, site_name, group_name, script_name, has_table, industry) VALUES (?,?,?,?,?,?,?,?,?,?)Úotherr   rB   r   r	   r
   r   zTINSERT OR IGNORE INTO gov_search (rowid, title, site_name, summary) VALUES (?,?,?,?)TÚlockedr|   )ÚexecuteÚfetchoneÚ	SITE_NAMEÚ
GROUP_NAMEÚSCRIPT_NAMEÚrowcountr   r   r   r   r   Ú	lastrowidÚsqlite3ÚOperationalErrorr‘   r   r    Ústore_record)	Úconnr"   r{   rd   r„   rg   ÚcurÚsummaryr(   s	            r   r«   r«   :  s  € Ø
�,‰,Ø1Ø	ˆó€Cð ‡|�|„~ØðØ�l‰lð+ð �#�u˜g t¬Y¼
ÄKÐQZÐ\cÐdó	
ˆð �<‰<˜!Òä—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Øûð	ús$   ¦B/C ÃD'Ã*1D"ÄD'Ä!D"Ä"D'c            
      óÜ  — dd l } | j                  «       }|j                  j                  t        «       t        j                  t        d¬«      }|j                  d«       |j                  d«       d}d}t        «       }t        dt        dz   «      D �]©  }|dk(  rt        }nt        › d|dz
  › d�}	 t        ||¬	«      }|j                  j                  d
d¬«      }	t%        |	|«      }t#        d|› dt'        |«      › d�d¬«       |s|dkD  rt#        dd¬«        �n#|D �]  \  }}}||v rŒ|j)                  |«       	 t        ||¬	«      }|j                  j                  d
d¬«      }t+        ||«      \  }}}|s|}|s|}t-        ||«      \  }}}t'        t/        j0                  dd|«      j3                  «       «      }|dk  rt#        d|d d › �d¬«       |dz  }Œ½t5        ||||||«      }|r|dz  }t#        d|d d › d|› d�d¬«       n|dz  }t7        j8                  d«       �Œ t7        j8                  d «       �Œ¬ |j;                  «        |j=                  «        t#        d!|› �d¬«       t#        d"|› �d¬«       t#        d#t>        › d$�d¬«       y # t         $ r}
t#        d|› d|
› �d¬«       Y d }
~
 Œxd }
~
ww xY w# t         $ r#}
t#        d|› d|
› �d¬«       |dz  }Y d }
~
�ŒÈd }
~
ww xY w)%Nr   é<   )r   zPRAGMA busy_timeout=60000zPRAGMA journal_mode=WALr   Úindex_z.html)r#   zutf-8r   )ÚerrorszPage z fetch error: T)Úflushz: found z itemszEmpty page, stop paginationz  detail error z: rB   r   rŽ   z  skip empty: é   z  + é(   z (ú)g333333Ó?g      à?u   æ–°å¢ž: u   è·³è¿‡: z=== z	 done ===) r   ÚSessionr   Úupdater   r©   ÚconnectÚDB_PATHr¢   rb   r   Ú_PAGESr~   r)   rd   Údecoder   Úprintr‡   r<   rc   rž   rv   r   r   r   r«   r   r    ÚcommitÚcloser¤   )r   Úsr¬   Ú	new_countÚ
skip_countÚ	seen_urlsÚpager"   r'   r�   r(   r_   rN   r{   r„   ÚdhtmlÚdtitleÚddater•   rd   rg   Ú_Ú	plain_lenÚoks                           r   ÚmainrË   Z  sí  € ÛØ×ÑÓ€AØ‡I�I×Ñ”WÔÜ�?‰?œ7¨BÔ/€DØ‡L�LÐ,Ô-Ø‡L�LÐ*Ô+à€IØ€JÜ“€Iä�aœ !™Ó$ó .ˆØ�1Š9Ü‰Cä�J˜f T¨!¡V H¨EÐ2ˆCð	Ü�c 1Ô%ˆAØŸ	™	×(Ñ(¨¸Ð(ÓCˆIô ˜9 cÓ*ˆÜ��d�V˜8¤C¨£J <¨vÐ6¸dÕCÙ˜ šÜÐ/°tÕ<ÚØ$)ó 	Ñ ˆG�U˜DØ˜)Ñ#ØØ�M‰M˜'Ô"ðÜ˜'¨1Ô-�ØŸ	™	×(Ñ(¨¸Ð(ÓC�ô
 +7°u¸gÓ*FÑ'ˆF�E˜<ÙØ�ÙØ�Ü$0°¸wÓ$GÑ!ˆG�Y äœBŸF™F :¨r°7Ó;×AÑAÓCÓDˆIØ˜2Š~Ü˜ v¨c¨r { mÐ4¸DÕAØ˜a‘�
ØÜ˜d G¨V°W¸eÀYÓOˆBÙØ˜Q‘�	Ü˜˜V C R˜[˜M¨¨E¨7°!Ð4¸DÖAà˜a‘�
Ü�J‰J�sŽOð;	ô< 	�
‰
�3Žð].ð` 	‡K�K„MØ‡J�J„LÜ	ˆH�Y�KÐ
 ¨Õ-Ü	ˆH�Z�LÐ
!¨Õ.Ü	ˆD”�˜9Ð
%¨TÖ2øôY ò 	Ü�E˜$˜˜~¨a¨SÐ1¸Õ>Ýûð	ûô ò Ü˜¨ y°°1°#Ð6¸dÕCØ˜a‘�
Ýûðús0   Â2*JÄ=*J?Ê	J<ÊJ7Ê7J<Ê?	K+ËK&Ë&K+Ú__main__)Nr´   r|   )(Ú__doc__ÚsysrE   r   r   Úhtmlr   Úurllib.parserI   r©   Úbs4r   ÚImportErrorÚBASE_URLÚ	LIST_PATHr~   r¤   r¥   r¦   rº   r   Ú
_MAX_PAGESr`   Úargvr&   r/   r[   ÚintrH   Ú
ValueErrorr<   r»   r   r)   rv   r‡   rž   r«   rË   Ú__name__© r   r   ú<module>rÛ      st  ðñó Û 	Û 	Û Û Û Û ðÝ!ð
 &€Ø€	Ø�iÑ€Ø0€	Ø€
Ø$€Ø
€ð @Ø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€òóò"D'òNò@<ò~ò@@3ðF ˆzÒÙ…Fð øðQ ò Ø‚Mðûð0 ò 	Ùð	ûð
 ò 	Ùð	ús5    C, Á)C9Â%DÃ,C6Ã5C6Ã9DÄ DÄDÄD