Ë
    ¸¬ujŽB  ã                   ó¦  — 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d	Zej(                  j+                  d
d«      Zej(                  j+                  dd«      ZdZdZdZdZdZ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(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d „ Z/d!„ Z0e1d"k(  r e0«        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_tieling_hjbh.py - é“�å²­å¸‚-çŽ¯å¢ƒä¿�æŠ¤
https://www.tieling.gov.cn/tieling/zwgk/zfxxgk/fdzdgknr/zdmsxx/hjbh/index.html
åˆ—è¡¨: eportal/huilan, .xxgkList ul>li
  <a href="/tieling/zwgk/zfxxgk/fdzdgknr/zdmsxx/hjbh/{timestamp}/index.html" title="å®Œæ•´æ ‡é¢˜">æ ‡é¢˜</a> <span>æ—¥æœŸ</span>
åˆ†é¡µ: é¦–é¡µ index.html, ç¬¬Né¡µ {hash}-{N}.html (hash=4a90f99c, æ¯�é¡µ10æ�¡)
è¯¦æƒ…: meta ArticleTitle + meta PubDate + div.detailContent
é    N)ÚBeautifulSoupzhttps://www.tieling.gov.cnzNhttps://www.tieling.gov.cn/tieling/zwgk/zfxxgk/fdzdgknr/zdmsxx/hjbh/index.htmlzXhttps://www.tieling.gov.cn/tieling/zwgk/zfxxgk/fdzdgknr/zdmsxx/hjbh/4a90f99c-{page}.htmlu   é“�å²­å¸‚-çŽ¯å¢ƒä¿�æŠ¤u   è¾½å®�zcrawl_tieling_hjbh.pyÚDB_PATHz/mnt/data/search.dbÚ
JSONL_PATHÚ úutf-8zmeta:ArticleTitlez.detailContentzl<a[^>]*href="(/tieling/zwgk/zfxxgk/fdzdgknr/zdmsxx/hjbh/\d+/index\.html)"[^>]*title="([^"]+)"[^>]*>(.*?)</a>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                 ó2  — | syt        j                  | «      } | j                  dd«      j                  dd«      j                  dd«      j                  dd«      } t        j                  dd| «      } t        j                  dd| «      } | j                  «       S )	Nr   u   â€‹u   â€Œu   â€�u   ï»¿u3   ^\s*(?:&middot;|Â·|\u00b7)?\s*(?:&nbsp;|\u00a0)?\s*ú\s+ú )Úhtml_libÚunescapeÚreplaceÚreÚsubÚstrip)Úts    ú'/root/gov_crawler/crawl_tieling_hjbh.pyÚclean_titler   >   s‚   € ÙØÜ×Ñ˜!Ó€AØ	�	‰	�(˜BÓ×'Ñ'¨°"Ó5×=Ñ=¸hÈÓK×SÑSÐT\Ð^`Óa€AÜ
�‰ÐEÀrÈ1ÓM€AÜ
�‰ˆv�s˜AÓ€AØ�7‰7‹9Ðó    c                 ó@  — |dk(  rt         }nt        j                  |¬«      }| j                  |t        dd¬«      }t
        dk(  r	 |j                  j                  d«      S d
|_	        |j                  S # t        $ r  |j                  j                  dd¬	«      cY S w xY w)Nr	   )Úpageé   F©ÚheadersÚtimeoutÚverifyÚgbkÚgb18030r   ©Úerrorsr   )ÚLIST_URL_P1ÚLIST_URL_PNÚformatÚgetÚHEADERSÚENCÚcontentÚdecodeÚ	ExceptionÚencodingÚtext)Úsessionr   ÚurlÚrs       r   Ú
fetch_listr1   H   s˜   € Øˆq‚yÜ‰ä× Ñ  dÐ Ó+ˆØ�‰�C¤°"¸UˆÓC€AÜ
ˆe‚|ð	AØ—9‘9×#Ñ# EÓ*Ð*ð €A„JØ�6‰6€Møô ò 	AØ—9‘9×#Ñ# I°iÐ#Ó@Ò@ð	Aús   ÁA4 Á4&BÂBc                 ó  — g }t        j                  t        | t         j                  t         j                  z  «      D ]Å  }|j                  d«      }t        |j                  d«      «      }d}| |j                  «       |j                  «       dz    }t        j                  d|«      }|r|j                  d«      }|rt        |«      dk  rŒŽt        j                  j                  t        |«      }|j                  |||f«       ŒÇ |S )Nr	   é   r   éx   z(\d{4}-\d{2}-\d{2})é   )r   ÚfinditerÚLIST_LINK_REÚSÚIÚgroupr   ÚendÚsearchÚlenÚurllibÚparseÚurljoinr#   Úappend)	Ú	html_textÚitemsÚmÚhrefÚtitleÚdateÚafterÚdmÚabs_urls	            r   Ú
parse_listrK   W   sÐ   € Ø€EÜ�[‰[œ y´"·$±$¼¿¹±+Ó>ò -ˆØ�w‰w�q‹zˆÜ˜AŸG™G A›JÓ'ˆàˆØ˜!Ÿ%™%›' !§%¡%£'¨C¡-Ð0ˆÜ�Y‰YÐ-¨uÓ5ˆÙØ—8‘8˜A“;ˆDÙœ˜E›
 QšØÜ—,‘,×&Ñ&¤{°DÓ9ˆØ�‰�g˜u dÐ+Õ,ð-ð €Lr   c                 óV	  — d}d}d}t         �r“t        | d«      }t        j                  d«      rrt        j                  dd«      d   }|j	                  ddt        j                  |t
        j                  «      i¬«      }|r½|j                  d	«      r¬t        |d	   «      }n�t        d
k(  rR|j	                  d
«      }|r�|j                  d¬«      }	dD ]  }
|
|	v sŒ|	j                  |
«      d   }	 n t        |	«      }nBt        dk(  r9t        r3|j                  t        «      }|rt        |j                  dd¬«      «      }|sX|j	                  ddt        j                  dt
        j                  «      i¬«      }|r|j                  d	«      rt        |d	   «      }|r%t        j                  dd|«      j                  «       }t        dk(  rËt        rÅt        j                  d«      r-|j	                  ddt        j                  dd«      d   i¬«      }n|j                  t        «      }|rl|j                  dd¬«      }|j                  d«      D �cg c]/  }t!        |j                  «       «      dkD  sŒ |j                  «       ‘Œ1 }}|rt        |d   «      }t        �rXt        j                  d«      �r	|j	                  ddt        j                  dd«      d   i¬«      }|�r|j#                  d«      }t!        |«      dkD  r˜g }|dd  D ]_  }|j                  dd¬«      }t        j$                  d|«      rt        j$                  d|dd  «      sŒF|j'                  t)        |«      «       Œa |rdj+                  |«      ndj+                  d„ |dd  D «       «      }n\dj+                  d„ |j,                  D «       «      }n9|j                  t        «      }|r"dj+                  d„ |j,                  D «       «      }|j	                  ddt        j                  d t
        j                  «      i¬«      }|rK|j                  d	«      r:t        j.                  d!|d	   j                  «       «      }|r|j1                  d«      }|s)t        j$                  d!| «      }|r|j1                  d«      }|||fS c c}w )"Nr   úhtml.parserzmeta:ú:r	   ÚmetaÚname)Úattrsr)   rF   T©r   )Ú_ú-u   â€”ú|r   Úselectorr   ÚArticleTitleu;   (?:\s*(?:å�‘å¸ƒæ—¥æœŸ[:ï¼š]\s*)?\d{4}-\d{1,2}-\d{1,2})+\s*$Ú	firstlineztable:ÚtableÚergodicú
é
   Útru5   å�‘å¸ƒ(?:æ—¶é—´|æ—¥æœŸ)|ä¿¡æ�¯æ�¥æº�|å­—å�·|åˆ†äº«åˆ°u   [ï¼Œã€‚ï¼›]éýÿÿÿc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N©Ústr)Ú.0r]   s     r   ú	<genexpr>zparse_detail.<locals>.<genexpr>    s   è ø€ ÒSnÐ`bÔTWÐXZ×T[ÑSnùó   ‚c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr`   ra   ©rc   Úcs     r   rd   zparse_detail.<locals>.<genexpr>¢   s   è ø€ Ò.K¸!¬s°1¯vÑ.Kùre   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr`   ra   rg   s     r   rd   zparse_detail.<locals>.<genexpr>¦   s   è ø€ Ò*G°a¬3¨q¯6Ñ*Gùre   zPubDate|publishdatez(\d{4})-(\d{2})-(\d{2}))r   ÚDTITLE_MODEÚ
startswithÚsplitÚfindr   Úcompiler9   r&   r   Úget_textÚ
DTITLE_SELÚ
select_oner   r   ÚDCONTENT_SELr=   Úfind_allr<   rA   rb   ÚjoinÚcontentsÚmatchr:   )rB   Úpage_urlrF   rG   Úcontent_htmlÚsouprP   Úmtr   ÚrawÚsepÚelÚtxtÚlÚlinesÚtrsÚ	body_rowsr]   ÚmdrI   s                       r   Úparse_detailr„   i   s  € Ø€EØ€DØ€LÞÜ˜Y¨Ó6ˆÜ×!Ñ! 'Ô*Ü×$Ñ$ S¨!Ó,¨QÑ/ˆDØ—‘˜6¨&´"·*±*¸TÄ2Ç4Á4Ó2HÐ)I�ÓJˆBÙ�b—f‘f˜YÔ'Ü# B y¡MÓ2‘Ü˜GÒ#Ø—	‘	˜'Ó"ˆAÙØ—j‘j t�jÓ,�Ø1ò �CØ˜c’zØ!Ÿi™i¨›n¨QÑ/˜Ùðô $ CÓ(‘Ü˜JÒ&­:Ø—‘¤Ó,ˆBÙÜ# B§K¡K°¸4 KÓ$@ÓA�áØ—‘˜6¨&´"·*±*¸_ÌbÏdÉdÓ2SÐ)T�ÓUˆBÙ�b—f‘f˜YÔ'Ü# B y¡MÓ2�áÜ—F‘FÐYÐ[]Ð_dÓe×kÑkÓmˆEÜ˜+Ò%ÝÜ×*Ñ*¨8Ô4ØŸ™ 7°9¼l×>PÑ>PÐQTÐVWÓ>XÐYZÑ>[Ð2\˜Ó]‘BàŸ™¬Ó6�BÙØŸ+™+ c°˜+Ó6�CØ03·	±	¸$³ÖW¨1Ä3ÀqÇwÁwÃyÃ>ÐTVÓCV˜QŸW™W�YÐW�EÐWÙÜ +¨E°!©HÓ 5˜ÞÜ×&Ñ& xÕ0Ø—Y‘Y˜w¨y¼,×:LÑ:LÈSÐRSÓ:TÐUVÑ:WÐ.X�YÓY�ÚØŸ+™+ dÓ+�CÜ˜3“x !’|Ø$&˜	Ø"% a b 'ò 6˜BØ"$§+¡+¨c¸ +Ó">˜CÜ!Ÿy™yÐ)aÐcfÔgÔpr×pyÑpyð  {Ið  KNð  OQð  ORð  KSô  qTØ (Ø%×,Ñ,¬S°«WÕ5ð	6ñ
 >G r§w¡w¨yÔ'9ÈBÏGÉGÑSnÐfiÐjkÐjlÐfmÔSnÓLn™à')§w¡wÑ.K¸r¿{¹{Ô.KÓ'K™à—_‘_¤\Ó2�ÙØ#%§7¡7Ñ*G¸2¿;¹;Ô*GÓ#G�LØ�Y‰Y�v f¬b¯j©jÐ9OÔQS×QUÑQUÓ.VÐ%WˆYÓXˆÙ�"—&‘&˜Ô#Ü—‘Ð4°b¸±m×6IÑ6IÓ6KÓLˆBÙØ—x‘x “{�ÙÜ—‘Ð5°yÓAˆBÙØ—x‘x “{�Ø�$˜Ð$Ð$ùò? Xs   É!R&É/R&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        j                  dd| t         j                  ¬«      } t        j                  d	d| t         j                  ¬«      } t        j                  d
d| «      } t        j                  dd| «      } t        �ra	 t	        | d«      }|j                  dd¬«      D �]  }|j                  d«      sG|j                  d«      s6t        j                  d|j                  dd«      t         j                  «      sŒ\|d   }|j                  d¬«      xsD |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 |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)        |«      } ˆˆˆfd'„}t        j                  d(|| t         j                  t         j                  z  ¬«      } t        rQ	 t	        | d«      }|j                  d«      D ]%  }d)D ]  }|j,                  j/                  |d «       Œ  Œ' t)        |«      } g Šˆfd*„}t        j                  d+|| t         j                  t         j                  z  ¬«      } t        j                  d,| t         j                  «      rd-nd}t        j                  d&d.| t         j                  ¬«      } t        j                  d/d0| t         j                  ¬«      } t        j                  d1d| t         j                  ¬«      } g }| j                  d2«      D ]ï  }|j1                  «       }|sŒt        j                  d3d|«      }t3        j4                  |«      }|j7                  d4d5«      j7                  d6d5«      }t        j                  d7d|«      }|sŒ~‰j9                  «       D ]  \  }}|j7                  ||«      }Œ t;        ‰«      D ]  \  }}|j7                  d8|› d�|«      }Œ |j!                  |j1                  «       «       Œñ d2j'                  |«      }‰j9                  «       D ]  \  }}|j7                  ||«      }Œ t;        ‰«      D ]  \  }}|j7                  d8|› d�|«      }Œ t        j                  d9d|«      }t        j                  d:d|«      }t        j                  d;d|«      }t        j                  d<d|«      }t3        j4                  |«      }t        j                  d=d0|«      }t        j                  d>d2|«      }t        j                  d?d5|«      }t=        «       }g }|j                  d2«      D ]X  }t        j                  d@dt        j                  d3d|«      «      }|sŒ2||v rŒ7|j?                  |«       |j!                  |«       ŒZ d2j'                  |«      j1                  «       }||‰fS # t*        $ r Y �Œ:w xY w# t*        $ r Y �Œ´w xY w)ANr   r   z
<!--.*?-->)Úflagsz<meta[^>]*>z<script[^>]*>.*?</script>z<style[^>]*>.*?</style>z;<img[^>]*src="[^"]*fileTypeImages/icon_[a-z]+\.gif"[^>]*/?>z;<img[^>]*src="[^"]*/images/20200907-wz-banner\.png"[^>]*/?>u   ã€�å­—å�·ï¼š[^ã€‘]*ã€‘u'   å�‘å¸ƒ(?:æ—¶é—´|æ—¥æœŸ)[:ï¼š][^<]{0,30}rM   ÚaT)rE   Úappendixzdata-appendixz\.(pdf|docx?|xlsx?|zip|rar)rE   rR   Ú_titleú?Ú
__ATTACH__Ú__z<p><a href="ú" target="_blank">z</a></p>ÚpÚimgÚsrcÚoldsrcú	<a href="u   å›¾ç‰‡ú</a>Ú__IMG__z<p>z<br/>z</p>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	   r3   ú<[^>]+>r   u   ^é™„ä»¶[:ï¼š]\s*rŠ   r   u   é™„ä»¶Ú__LINK__rŒ   r’   r�   r“   )r:   r   r   r   r   r   ÚosÚpathÚbasenamerl   r>   r?   r@   rA   r=   )	rD   rE   Úinnerr~   rJ   ÚkeyÚattachmentsÚlink_protectrw   s	         €€€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>)ÚstyleÚclassÚlangÚdirÚalignÚvalignÚwidthÚheightÚborderÚcellpaddingÚcellspacingc                 óh   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  › d�S )Nr   Ú__TBL__r	   rŒ   )rA   r:   r=   )rD   Ú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	   z</p>

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

r–   õ   Â 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   r8   r9   r   rs   r&   r<   ro   r˜   r™   rš   rl   r>   r?   r@   rA   r=   Úreplace_withrt   rb   r+   rQ   Úpopr   r   r   r   rC   Ú	enumerateÚsetÚadd) r)   rw   Ú_soupr‡   rE   r~   rJ   rœ   rŽ   ÚimgsÚsrcsr�   r�   rŸ   ÚtagÚattrr®   Ú	has_tableÚpartsÚblockÚbÚplainÚkÚvÚiÚtblÚoutÚseenÚfinalr�   rž   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ØFÈÈGÜ�d‰dô€Gô �f‰fÐSÐUWÐY`Ôhj×hlÑhlÔm€Gä�f‰fÐ.°°GÓ<€GÜ�f‰fÐ?ÀÀWÓM€Gæð	Ü! '¨=Ó9ˆEØ—^‘^ C¨d�^Ó3ó (�Ø—5‘5˜Ô$¨¯©¨oÔ(>Ä"Ç)Á)ÐLjÐlm×lqÑlqÐrxÐz|Ól}ô  @B÷  @Dñ  @Dõ  CEØ˜V™9�DØŸ*™*¨4˜*Ó0Òk°A·E±E¸(³OÒkÄrÇwÁw×GWÑGWÐX\×XbÑXbÐcfÓXgÐhiÑXjÓGk�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ÒG°·±¸Ó0AÒGÀR˜ÚÜ&,§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öô �f‰fÐ>À
ÈGÔ[]×[_Ñ[_Ôbd×bfÑbfÑ[fÔg€Gåð	Ü! '¨=Ó9ˆEØ—~‘~ dÓ+ò .�ð Lò .�DØ—I‘I—M‘M $¨Õ-ñ.ð.ô ˜%“jˆGð €Mô2ô �f‰fÐ/°¸GÌ2Ï4É4ÔRT×RVÑRVÉ;ÔW€GÜ—Y‘Y˜°¼¿¹Ô>‘ÀA€Iä�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à�	˜;Ð&Ð&øôi ò 	Úð	ûô2 ò 	Úð	úsG   ÅA:_  ÇC'_  Ê5_  Ë1_  Ë:A/_  Í*A_  Ï8A_0 ß 	_-ß,_-ß0	_=ß<_=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   éÈ   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   r   r   r   Ú	lastrowidÚsqlite3ÚOperationalErrorrb   ÚtimeÚsleepÚstore_record)Úconnr/   rF   r)   rG   rº   ÚcurÚindustryrÉ   ÚsummaryÚes              r   rÙ   rÙ   9  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                 óJ  — | j                  |t        dd¬«      }|j                  dk(  r8t        dk(  r	 |j                  j                  d«      S d	|_        |j                  S t        d
|j                  › �«      ‚# t        $ r  |j                  j                  dd¬«      cY S w xY w)Nr   Fr   rÊ   r   r    r   r!   r   zHTTP )
r&   r'   Ústatus_coder(   r)   r*   r+   r,   r-   ÚRuntimeError)r.   r/   r0   s      r   Úfetch_detailrâ   [  s›   € Ø�‰�C¤°"¸UˆÓC€AØ‡}�}˜ÒÜ�%Š<ðEØ—y‘y×'Ñ'¨Ó.Ð.ð ˆŒ
Ø�v‰vˆÜ
˜˜qŸ}™}˜oÐ.Ó
/Ð/øô	 ò EØ—y‘y×'Ñ'¨	¸)Ð'ÓDÒDðEús   ³A9 Á9&B"Â!B"c                  óÎ  — dd l } | j                  «       }|j                  j                  t        «       d }t
        s=t        j                  t        d¬«      }|j                  d«       |j                  d«       d}d}t        «       }g }t        dt        dz   «      D �]—  }	 t        ||«      }t!        |«      }
t        d|› dt#        |
«      › d�d	¬
«       |
st        dd	¬
«        �nP|
D �]2  \  }}}||v rŒ|j%                  |«       	 t'        ||«      }t)        ||«      \  }}}|s|}|s|}t+        ||«      \  }}}t#        t-        j.                  dd|«      j1                  «       «      }|dk  r|st        d|d d › �d	¬
«       |dz  }Œ¡t
        rC|j3                  |||||t4        t6        t8        dœ«       t        d|d d › d|› d�d	¬
«       |dz  }Œêt;        ||||||«      }|r|dz  }t        d|d d › d|› d�d	¬
«       n|dz  }t=        j>                  d«       �Œ5 t=        j>                  d«       �Œš t
        rmtA        t
        dd¬«      5 }|D ]+  }|jC                  tE        jF                  |d ¬!«      d"z   «       Œ- 	 d d d «       t        d#t
        › dt#        |«      › d$�d	¬
«       |� |jI                  «        |jK                  «        t        d%|› �d	¬
«       t        d&|› �d	¬
«       t        d't4        › d(�d	¬
«       y # t        $ r}	t        d|› d|	› �d	¬
«       Y d }	~	 Œíd }	~	ww xY w# t        $ r#}	t        d|› d|	› �d	¬
«       |dz  }Y d }	~	�Œjd }	~	ww xY w# 1 sw Y   ŒÛxY w))Nr   é<   )r   zPRAGMA busy_timeout=60000zPRAGMA journal_mode=WALr	   zPage z fetch error: T)Úflushz: found z itemszEmpty page, stop paginationz  detail error z: r–   r   r\   z  skip empty: r   )rw   rF   r)   Úpublish_daterº   Ú	site_nameÚ
group_nameÚscript_namez
  JSONL + é(   z (ú)z  + g      Ð?g      à?Úwr   )r,   F)Úensure_asciir[   zJSONL written: z rows)u   æ–°å¢ž: u   è·³è¿‡: z=== z	 done ===)&ÚrequestsÚSessionr   Úupdater'   r   rÕ   Úconnectr   rÍ   r³   ÚrangeÚ_PAGESr1   r+   ÚprintrK   r=   r´   râ   r„   rÆ   r   r   r   rA   rÎ   rÑ   rÒ   rÙ   r×   rØ   ÚopenÚwriteÚjsonÚdumpsÚcommitÚclose)rî   ÚsrÚ   Ú	new_countÚ
skip_countÚ	seen_urlsÚ
jsonl_rowsr   rB   rÞ   rC   rJ   rF   rG   ÚdhtmlÚdtitleÚddaterx   r)   rº   ÚattsÚ	plain_lenÚokÚfÚrows                            r   Úmainr  h  sx  € ÛØ×ÑÓ€AØ‡I�I×Ñ”WÔØ€DÝÜ�‰œw°Ô3ˆØ�‰Ð0Ô1Ø�‰Ð.Ô/à€IØ€JÜ“€IØ€Jä�aœ !™Ó$ó 1ˆð	Ü" 1 dÓ+ˆIô ˜9Ó%ˆÜ��d�V˜8¤C¨£J <¨vÐ6¸dÕCÙÜÐ/°tÕ<ÚØ$)ó %	Ñ ˆG�U˜DØ˜)Ñ#ØØ�M‰M˜'Ô"ðÜ$ Q¨Ó0�ô
 +7°u¸gÓ*FÑ'ˆF�E˜<ÙØ�ÙØ�Ü'3°LÀ'Ó'JÑ$ˆG�Y Üœ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‘�	Ü˜˜V C R˜[˜M¨¨E¨7°!Ð4¸DÖAà˜a‘�
Ü�J‰J�tÖðK%	ôL 	�
‰
�3Žðc1õf Ü”*˜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øôw ò 	Ü�E˜$˜˜~¨a¨SÐ1¸Õ>Ýûð	ûô ò Ü˜¨ y°°1°#Ð6¸dÕCØ˜a‘�
Ýûðú÷F	Dð 	Dús<   Â!LÄL,É1MÌ	L)ÌL$Ì$L)Ì,	MÌ5MÍMÍM$Ú__main__)2Ú__doc__Úsysr˜   r   r×   Úhtmlr   Úurllib.parser>   rÕ   r÷   Úbs4r   ÚImportErrorÚBASE_URLr#   r$   rÎ   rÑ   rÒ   Úenvironr&   r   r   r(   rj   rp   rr   r7   r'   Ú
_MAX_PAGESr²   ÚargvrÁ   r‡   rk   Úintrl   Ú
ValueErrorr=   ró   r   r1   rK   r„   rÆ   rÙ   râ   r  Ú__name__© r   r   ú<module>r     s´  ðñó Û 	Û 	Û Û Û Û Û ðÝ!ð
 (€Ø^€Øh€Ø$€	Ø€
Ø%€Ø
�*‰*�.‰.˜Ð$9Ó
:€Ø�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€òòòò$G%òTC'òLòD
0òM3ð` ˆzÒÙ…Fð øðE ò ØƒMðûð: ò 	Ùð	ûð
 ò 	Ùð	ús5   ¤D/ Â*D=Ã&EÄ/D:Ä9D:Ä=EÅEÅEÅE