Ë
    bŸ}jw@  ã                   ón  — 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ZdZdZdZdZdZ	 dd	lm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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& ejN                  d ejP                   ej                  «       e&dz  z
  «      «      Z)dZ* ejV                  d«      Z,d„ Z-ddl.Zddl/Z/ddl0Z1ddl2Z3 e/jh                  «       Z5dZ6e1jn                  jq                  «       Z9ejt                  jw                  ejt                  jy                  e9«      ejt                  j{                  e5¬«      «      Z>d,d „Z?d!„ Z@d"aAd#„ ZBd,d$„ZCd%„ ZDd&„ ZEd'„ Z@d(„ ZFd)„ ZGd*„ ZHeId+k(  r eF«        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³   
å±±ä¸œä¸œæ–¹å®�ä¸šåŒ–å·¥-ä¿¡æ�¯å…¬ç¤º çˆ¬è™«
URL: http://www.dfhychem.com/news/xxgs90c/
åˆ—è¡¨: li>a[title]+æ—¥æœŸ
è¯¦æƒ…: div.article/div#Zoom/.TRS_Editor
åˆ†é¡µ: index_N.shtml
é    Núhttp://www.dfhychem.comú%http://www.dfhychem.com/news/xxgs90c/u%   å±±ä¸œä¸œæ–¹å®�ä¸šåŒ–å·¥-ä¿¡æ�¯å…¬ç¤ºu   å±±ä¸œzcrawl_dfhychem_xxgs.pyu   ä¿¡æ�¯å…¬ç¤º)ÚBeautifulSoupÚDB_PATHz/mnt/data/search.dbÚ
JSONL_PATHÚ úutf-8c                 óŠ  — g }t        «       }t        j                  | «      D ]ž  }|j                  d«      t	        |j                  d«      «      }}|j                  d«      s$t        j                  j                  t        |«      }|sŒf||vsŒkt        |«      dk\  sŒz|j                  |«       |j                  ||df«       Œ  |S )Né   é   Úhttpé   r   )ÚsetÚLIST_PATÚfinditerÚgroupÚclean_titleÚ
startswithÚurllibÚparseÚurljoinÚBASE_URLÚlenÚaddÚappend)Ú	html_textÚpage_urlÚitemsÚseenÚmÚhrefÚtitles          ú(/root/gov_crawler/crawl_dfhychem_xxgs.pyÚ
parse_listr$      s¡   € Ø€EÜ‹5€DÜ×Ñ˜yÓ)ò ,ˆØ—g‘g˜a“j¤+¨a¯g©g°a«jÓ"9ˆeˆØ�‰˜vÔ&Ü—<‘<×'Ñ'¬°$Ó7ˆDÚ�T Ò%¬#¨e«*¸«/Ø�H‰H�TŒNØ�L‰L˜$  rÐ*Õ+ð,ð €Ló    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.8úzh-CN,zh;q=0.9©z
User-AgentÚAcceptzAccept-Languager   z--pages=ú=z--pagesiG  z%Y-%m-%di€Q z/news/xxgs90c/z=<a[^>]+href="([^"]*news/\d+\.html)"[^>]*title="([^"]+)"[^>]*>c                 ó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    r#   r   r   C   s‚   € ÙØÜ×Ñ˜!Ó€AØ	�	‰	�(˜BÓ×'Ñ'¨°"Ó5×=Ñ=¸hÈÓK×SÑSÐT\Ð^`Óa€AÜ
�‰ÐEÀrÈ1ÓM€AÜ
�‰ˆv�s˜AÓ€AØ�7‰7‹9Ðr%   z]Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/125.0 Safari/537.36)Úcontextc                 óö   — t         dddœ}|r||d<   t        j                  j                  | |¬«      }	 t        j                  ||¬«      }|j                  «       j                  dd¬	«      S # t        $ r Y y w xY w)
Nz)text/html,application/xhtml+xml,*/*;q=0.8r&   r'   ÚReferer)Úheaders)Útimeoutr	   r/   )Úerrors)	Ú_UAr   ÚrequestÚRequestÚ_OPENERÚopenÚreadÚdecodeÚ	Exception)ÚurlÚrefererr8   ÚhdrsÚreqÚresps         r#   Ú
_fetch_rawrG   T   s|   € ÜÐ)TØ/ñ1€DáØ!ˆˆY‰Ü
�.‰.×
 Ñ
  ¨dÐ
 Ó
3€CðÜ�|‰|˜C¨ˆ|Ó1ˆØ�y‰y‹{×!Ñ! '°)Ð!Ó<Ð<øÜò Ùðús   ´7A, Á,	A8Á7A8c                 óð  — t        j                  d| «      }|sy|j                  d«      }d|z  }t        dd«      5 }|j	                  |«       ddd«       	 t        j                  ddgdd	¬
«      }t        |j                  j                  «       j                  «       «      }|D ]4  }|j                  d«      sŒ|dd }|j                  d«      r|c S d|z   c S  	 y# 1 sw Y   Œ�xY w# t        $ r Y yw xY w)u/   node vm æ‰§è¡Œæ··æ·†, è¿”å›ž window.open ç›®æ ‡z<script>([\s\S]*?)</script>Nr   aÐ  const vm = require('vm');
const js = %r;
const out = [];
const sandbox = {
  window: { open: (u) => out.push("OPEN:"+u), location: {} },
  document: { write: (s) => out.push("WRITE:"+s), getElementById: () => null, cookie: "" },
  navigator: { userAgent: "Mozilla/5.0" }, location: {}, console: console,
};
sandbox.globalThis = sandbox;
vm.createContext(sandbox);
try { vm.runInContext(js, sandbox, {timeout: 5000}); } catch(e) {}
console.log(JSON.stringify(out));z/tmp/df_deob_run.jsÚwÚnodeTé
   ©Úcapture_outputr8   úOPEN:é   r   r   )r0   Úsearchr   r>   ÚwriteÚ_subprocessÚrunÚevalÚstdoutr@   r2   r   rA   )	Úhtmlr    ÚjsÚwrapperÚfÚrÚoutsÚoÚus	            r#   Ú_deobfuscater^   `   s  € ä
�	‰	Ð0°$Ó7€AÙØØ	
�‰�‹€Bð%ð (*ñ*€Gô 
Ð# SÓ	)ð ¨QØ	�‰�Ô÷ðÜ�O‰O˜VÐ%:Ð;ÈDÐZ\Ô]ˆÜ�A—H‘H—O‘OÓ%×+Ñ+Ó-Ó.ˆØò 	TˆAØ�|‰|˜GÕ$Ø�a�b�E�ØŸL™L¨Ô0�qÒSÐ6OÐRSÑ6SÒSñ	Tð ÷ð ûô ò ØØðús0   ¼CÁA!C) Â9C) ÃC) ÃC) ÃC&Ã)	C5Ã4C5Fc                  ó,   — t         ry t        d«       da y )Nzhttp://www.dfhychem.com/T)Ú_session_readyrG   © r%   r#   Ú_ensure_sessionrb   �   s   € åØäÐ)Ô*Ø�Nr%   c                 óº   — t        «        t        | ||¬«      }|€y t        |«      dk  r1t        j                  d|«      rt        |«      }|rt        || |¬«      }|S )N©rC   r8   i¸  zvar \w+="/new")rb   rG   r   r0   rP   r^   )rB   rC   r8   rV   Útoks        r#   Úfetchrf   ‰   sX   € ÜÔÜ�c 7°GÔ<€DØ€|Øä
ˆ4ƒy�4ÒœBŸI™IÐ&7¸Ô>Ü˜4Ó ˆÙÜ˜c¨3¸Ô@ˆDØ€Kr%   c                 ó2   — t        «        t        | dd¬«      S )Nr   é   rd   )rb   rG   )rB   s    r#   Úfetch_detailri   •   s   € ÜÔÜ�cÐ#JÐTVÔWÐWr%   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                  d	d| «      } t        �r´	 t	        | d
«      }dD ](  }|j                  |«      D ]  }|j                  «        Œ Œ* |j                  dd¬«      D �]>  }|j                  d«      sG|j                  d«      s6t        j                  d|j                  dd«      t         j                  «      sŒ\|d   }|j                  d«      xs |}|j                  d¬«      xsW |j                  d«      xsD |j                  d«      xs1 t        j                  j                  |j                  d«      d   «      }t        j                   j#                  ‰|«      }	‰ j%                  |	|f«       dt'        ‰!«      z  }
d|	›d|›d�‰!|
<   |j)                  |
«       �ŒA |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'        ‰!«      z  }
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 ]  }|j0                  j3                  |d'«       Œ  Œ' t-        |«      } g Š"ˆ"fd(„}t        j                  d)| t         j                  «      rd*n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                  ¬«      } g }| j                  d0«      D �]V  }|j5                  «       }|sŒt        j                  d1d|«      }t        j                  d2d|«      }|j7                  d3d«      j7                  d4d5«      }t        j                  d6d5|«      }t        j                  d7d|«      }t9        j:                  |«      }|j7                  d8d5«      j7                  d9d5«      }t        j                  d:d|«      }|sŒæ‰!j=                  «       D ]  \  }}|j7                  ||«      }Œ t?        ‰"«      D ]  \  }}|j7                  d;|z  |«      }Œ |j%                  |j5                  «       «       �ŒY d0j+                  |«      }‰!j=                  «       D ]  \  }}|j7                  ||«      }Œ t?        ‰"«      D ]  \  }}|j7                  d;|z  |«      }Œ t        j                  d<d|«      }t        j                  d=d|«      }t        j                  d>d|«      }t        j                  d?d|«      }t9        j:                  |«      }t        j                  d@d.|«      }t        j                  dAd0|«      }t        j                  d6d5|«      }tA        «       }g }|j                  d0«      D ]X  }t        j                  dBdt        j                  d7d|«      «      }
|
sŒ2|
|v rŒ7|jC                  |
«       |j%                  |«       ŒZ d0j+                  |«      j5                  «       }||‰ fS # t.        $ r Y �Œ¡w xY w# t.        $ r Y �Œw xY w)Cu=   HTML -> çº¯HTMLæ®µè�½è¾“å‡º(ä¿�ç•™è¡¨æ ¼/é™„ä»¶/å›¾ç‰‡é“¾æŽ¥)r   r   z
<!--.*?-->)Úflagsz<meta[^>]*>z<script[^>]*>.*?</script>z<style[^>]*>.*?</style>u   ã€�å­—å�·ï¼š[^ã€‘]*ã€‘u'   å�‘å¸ƒ(?:æ—¶é—´|æ—¥æœŸ)[:ï¼š][^<]{0,30}úhtml.parser)z.bdsharebuttonboxz.sharez	.shareboxz.sharesz#sharez.fxz	.fenxiangz.bshare-customz.article-sharez.social-sharez.printerz.printzdiv[class*=share]zdiv[id*=share]z.ewmz.qrcodez.erweimaÚaT)r!   Úappendixzdata-appendixz\.(pdf|docx?|xlsx?|zip|rar|wps)r!   Úoldsrc)r2   Ú_titler"   ú?z__ATTACH__%d__ú	<a href="ú" target="_blank">ú</a>ÚpÚimgÚsrcu   å›¾ç‰‡z__IMG__%d__z<p>z<br/>z</p>c                 ó  •— | j                  d«      }|j                  d«      ry| j                  d«      }t        j                  dd|«      }t	        j
                  |«      j                  «       }t        j                  dd|«      j                  «       }t        j                  d|t        j                  «      s$d|j                  «       v sd	|j                  «       v r†|s5t        j                  j                  |j                  d
«      d   «      xs d}t        j                  j!                  ‰|«      }‰j#                  ||f«       dt%        ‰«      z  }d|›d|›d�‰|<   |S t        j                  j!                  ‰|«      }d|›d|›d�S )Nr   zjavascript:r   r   ú<[^>]+>u   ^é™„ä»¶[:ï¼š]\s*z&\.(pdf|docx?|xlsx?|zip|rar|wps|et|dwg)Ú
attachmentÚdownloadrq   r   u   é™„ä»¶z__LINK__%d__rr   rs   rt   )r   r   r0   r1   r-   r.   r2   rP   ÚIÚlowerÚosÚpathÚbasenameÚsplitr   r   r   r   r   )	r    r!   ÚinnerÚtxtÚabs_urlÚkeyÚattachmentsÚlink_protectr   s	         €€€r#   Ú
_link_replz html_to_text.<locals>._link_replÌ   sU  ø€ Ø�w‰w�q‹zˆØ�?‰?˜=Ô)ØØ—‘˜“
ˆÜ�f‰f�Z  UÓ+ˆÜ×Ñ Ó$×*Ñ*Ó,ˆÜ�f‰fÐ(¨"¨cÓ2×8Ñ8Ó:ˆä�9‰9Ð>ÀÄbÇdÁdÔKÈ|Ð_c×_iÑ_iÓ_kÑOkÐoyð  ~B÷  ~Hñ  ~Hó  ~Jñ  pJÙÜ—g‘g×&Ñ& t§z¡z°#£°qÑ'9Ó:ÒF¸h�Ü—l‘l×*Ñ*¨8°TÓ:ˆGØ×Ñ ¨˜~Ô.Ø ¤3 |Ó#4Ñ4‰CÚIPÒRUÐ VˆL˜ÑØˆJä—,‘,×&Ñ& x°Ó6‰Ú8?ÂÐEÐEr%   z&<a\s[^>]*href="([^"]+)"[^>]*>(.*?)</a>)ÚstyleÚclassÚlangÚdirÚalignÚvalignÚwidthÚheightÚborderÚcellpaddingÚcellspacingNc                 óf   •— ‰j                  | j                  d«      «       dt        ‰«      dz
  z  S )Nr   ú__TBL__%d__r   )r   r   r   )r    Útable_protects    €r#   Ú	_tbl_replzhtml_to_text.<locals>._tbl_replí   s.   ø€ Ø×Ñ˜QŸW™W Q›ZÔ(Ø¤ MÓ 2°QÑ 6Ñ7Ð7r%   z<table[^>]*>r   z<table[^>]*>.*?</table>z</p>

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

z(?<=>)\s*[\r\n\t]+\s*z\s*[\r\n\t]+\s*(?=<)úú	r,   z	[ \t]{2,}ry   õ   Â 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,}r+   )"r0   r1   ÚSr|   r   ÚselectÚ	decomposeÚfind_allÚgetrP   Úget_textr~   r   r€   r�   r   r   r   r   r   Úreplace_withÚjoinÚstrrA   ÚattrsÚpopr2   r/   r-   r.   r   Ú	enumerater   r   )#Úcontentr   Ú_soupÚselÚelrm   r!   Ú	real_hrefrƒ   r„   r…   ru   ÚimgsÚsrcsrv   rw   rˆ   ÚtagÚattrr—   Ú	has_tableÚpartsÚblockÚbÚplainÚkÚvÚiÚtblÚoutr   Ú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Ð.°°GÓ<€GÜ�f‰fÐ?ÀÀWÓM€Gæð!	Ü! '¨=Ó9ˆEð^ò #�ð  Ÿ,™, sÓ+ò #�BØ—L‘L•Nñ#ð#ð
 —^‘^ C¨d�^Ó3ó 	(�Ø—5‘5˜Ô$¨¯©¨oÔ(>Ä"Ç)Á)ÐLnÐpq×puÑpuÐv|ð  Aó  qBô  DF÷  DHñ  DHõ  CIØ˜V™9�DØ !§¡ h£Ò 7°4�IØŸ*™*¨4˜*Ó0ò  C°A·E±E¸(³Oò  CÀqÇuÁuÈWÃ~ò  CÔY[×Y`ÑY`×YiÑYiÐjs×jyÑjyÐz}Ój~ð  @Añ  kBó  ZC�CÜ$Ÿl™l×2Ñ2°8¸YÓG�GØ×&Ñ&¨° ~Ô6Ø*¬S°Ó->Ñ>‘CÚQXÒZ]Ð(^�L Ñ%Ø—N‘N 3Ö'ð	(ð —^‘^ CÓ(ó ,�Ø—z‘z %Ó(�Ú §
¡
° 
Õ 6Ø�DØ#ò L˜Ø!Ÿg™g e›nÒG°·±¸Ó0AÒGÀR˜ÚÜ&,§l¡l×&:Ñ&:¸8ÀSÓ&I˜GØ ŸKšKÒQXÔZ\×ZaÑZa×ZjÑZjÐkn×ktÑktÐuxÓkyÐz{Ñk|ÓZ}ò  [Jð  BJñ  [Jð  )Kõ  Lð	Lò
 Ø+¬c°,Ó.?Ñ?˜Ø,1°G·L±LÀÓ4FÑ,FÈÑ,O˜ SÑ)ØŸ™ sÖ+ð,ô ˜%“jˆGöFô( �f‰fÐ>À
ÈGÔ[]×[_Ñ[_Ôbd×bfÑbfÑ[fÔg€Gåð	Ü! '¨=Ó9ˆEØ—~‘~ dÓ+ò .�ð Lò .�DØ—I‘I—M‘M $¨Õ-ñ.ð.ô ˜%“jˆGð €Mô8ô —Y‘Y˜°¼¿¹Ô>‘ÀA€IÜ�f‰fÐ/°¸GÌ2Ï4É4ÔRT×RVÑRVÉ;ÔW€Gä�f‰f�W˜j¨'¼¿¹Ô>€GÜ�f‰f�\ 4¨¼¿¹Ô=€GÜ�f‰fÐ@À"ÀgÔUW×UYÑUYÔZ€Gà€EØ—‘˜vÓ&ó  ˆØ�K‰K‹MˆÙØÜ�F‰FÐ+¨R°Ó3ˆÜ�F‰FÐ*¨B°Ó2ˆØ�I‰I�d˜BÓ×'Ñ'¨¨cÓ2ˆÜ�F‰F�<  aÓ(ˆÜ—‘�z 2 qÓ)ˆÜ×!Ñ! %Ó(ˆØ—‘˜f cÓ*×2Ñ2°8¸SÓAˆÜ—‘Ð7¸¸UÓCˆÙØØ ×&Ñ&Ó(ò 	 ‰DˆAˆqØ—	‘	˜!˜Q“‰Að	 ä Ó.ò 	2‰FˆAˆsØ—	‘	˜-¨!Ñ+¨SÓ1‰Að	2à�‰�Q—W‘W“YÖð% ð( �+‰+�eÓ
€CØ×"Ñ"Ó$ò  ‰ˆˆ1Ø�k‰k˜!˜QÓ‰ð ä˜MÓ*ò 2‰ˆˆ3Ø�k‰k˜-¨!Ñ+¨SÓ1‰ð2ô �&‰&Ð! 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à�	˜;Ð&Ð&øô ò 	Úð	ûô@ ò 	Úð	úsG   ÄB'a Æ,Da Ê;a Ë1a Ì A/a Í0Aa Ï=Aa á	aáaá	a)á(a)c                 óð  — ddl }t        j                  d| «      }|sy|j                  d«      }d|z  }t	        dd«      5 }|j                  |«       ddd«       	 |j                  ddgd	d
¬«      }t        |j                  j                  «       j                  «       «      }|D ]4  }|j                  d«      sŒ|dd }	|	j                  d«      r|	c S d|	z   c S  	 y# 1 sw Y   ŒŒxY w# t        $ r Y yw xY w)u=   ç”¨ node vm æ‰§è¡Œæ··æ·†è„šæœ¬, è¿”å›ž window.open ç›®æ ‡ URLr   NzU<script>((?:(?!</script>).){50,}?(?:window\.open|charCodeAt|eval\()[\s\S]*?)</script>r   a¨  const vm = require('vm');
const js = %r;
const out = [];
const sandbox = {
  window: { open: (u) => out.push("OPEN:"+u), location: {} },
  document: { write: (s) => out.push("WRITE:"+s) },
  navigator: { userAgent: "Mozilla/5.0" }, location: {}, console: console,
};
sandbox.globalThis = sandbox;
vm.createContext(sandbox);
try { vm.runInContext(js, sandbox, {timeout: 5000}); } catch(e) {}
console.log(JSON.stringify(out));z/tmp/df_deob.jsrI   rJ   TrK   rL   rN   rO   r   r   )Ú
subprocessr0   rP   r   r>   rQ   rS   rT   rU   r@   r2   r   rA   )
rV   r¾   r    rW   rX   rY   rZ   r[   r\   r]   s
             r#   r^   r^   +  s	  € ãÜ
�	‰	ÐjÐlpÓq€AÙØØ	
�‰�‹€Bð%ð (*ñ*€Gô 
Ð Ó	%ð ¨Ø	�‰�Ô÷ðØ�N‰N˜FÐ$5Ð6ÀtÐUWˆNÓXˆÜ�A—H‘H—O‘OÓ%×+Ñ+Ó-Ó.ˆØò 	TˆAØ�|‰|˜GÕ$Ø�a�b�E�ØŸL™L¨Ô0�qÒSÐ6OÐRSÑ6SÒSñ	Tð ÷ð ûô ò ØØðús1   Á CÁAC) Â9C) ÃC) ÃC) ÃC&Ã)	C5Ã4C5c                  ó”  — dd l } t        j                  j                  dt        j                  j                  t        j                  j                  t        «      «      «       ddlm	} | j                  «       }|j                  j                  t        «       d}d}t        «       }g }g }t        dt         dz   «      D �]  }	 t#        |«      }	t%        |	«      }
|
st'        d|z  d¬«        �nót)        |
|	«      }|st'        d|z  d¬«        �nÒt'        d	|t-        |«      fz  d¬«       |D �]™  \  }}}||v rŒ|j/                  |«       |r
|t0        k  rŒ*t3        |«      }|s|dz  }Œ=t5        ||«      \  }}}|s|}|s|}|r|t0        k  r|dz  }Œft7        ||«      \  }}}t-        t9        j:                  d
d|«      j=                  «       «      }t9        j>                  d|t8        j@                  «       xr | }|dk  s|rt'        d|d d z  d¬«       |dz  }ŒïtB        ||||d|tD        dtF        |rdjI                  d„ |D «       «      nddœ}tJ        r/|jM                  |«       t'        d|d d ›d|›d�d¬«       |dz  }�ŒX|jM                  |«       |dz  }t'        d|d d ›d|›d�d¬«       tO        jP                  d«       �Œœ tO        jP                  d«       �Œ" tJ        rltS        tJ        dd¬«      5 }|D ]+  }|jU                  tW        jX                  |d¬«      dz   «       Œ- 	 d d d «       t'        dtJ        t-        |«      fz  d¬«       n ||tZ        ¬ «       t'        d!|z  d¬«       t'        d"|z  d¬«       t'        d#tB        z  d¬«       y # t*        $ r}t'        d||fz  d¬«       Y d }~ ŒÖd }~ww xY w# 1 sw Y   Œ•xY w)$Nr   )Úpush_to_searchdbr   zPage %d fetch failedT)ÚflushzPage %d fetch error: %szPage %d: empty, stopzPage %d: found %d itemsry   r   z<p[ >]rK   z  skip empty/placeholder: %sé(   z; c              3   ó0   K  — | ]  \  }}|›d |›�–— Œ y­w)ú|Nra   )Ú.0r]   r3   s      r#   ú	<genexpr>zmain.<locals>.<genexpr>…  s   è ø€ Ò(K¹d¸aÀ²A±qÔ)9Ñ(Kùs   ‚)Ú	site_nameÚ
source_urlrB   r"   Úpub_dateÚsummaryr¨   ÚcategoryÚtagsÚ
group_namer†   z
  JSONL + z (ú)z  + g{®Gáz´?gš™™™™™É?rI   r	   )ÚencodingF)Úensure_asciir˜   zJSONL written: %s (%d rows))Úbatch_labelu
   æ–°å¢ž: %du
   è·³è¿‡: %dz=== %s done ===).ÚrequestsÚsysr   Úinsertr~   ÚdirnameÚabspathÚ__file__Úcrawler_librÀ   ÚSessionr7   ÚupdateÚHEADERSr   ÚrangeÚ_PAGESÚbuild_list_urlrf   Úprintr$   rA   r   r   Ú_CUTOFF_DATEri   Úparse_detailr¼   r0   r1   r2   rP   r|   Ú	SITE_NAMEÚCATEGORYÚ
GROUP_NAMEr£   r   r   ÚtimeÚsleepr>   rQ   ÚjsonÚdumpsÚSCRIPT_NAME)rÒ   rÀ   ÚsÚ	new_countÚ
skip_countÚ	seen_urlsÚ
jsonl_rowsÚbatchÚpagerB   r   r   Úer„   r"   ÚdateÚdhtmlÚdtitleÚddateÚcontent_htmlr¨   r±   ÚattsÚ	plain_lenÚno_paraÚitemrY   Úrows                               r#   Úmainrü   K  s‡  € ÛÜ‡H�H‡O�O�A”r—w‘w—‘¤r§w¡w§¡´xÓ'@ÓAÔBÝ,Ø×ÑÓ€AØ‡I�I×Ñ”WÔà€IØ€JÜ“€IØ€JØ€Eä�aœ !™Ó$ó 8ˆð		Ü  Ó&ˆCÜ˜c›
ˆIÙÜÐ,¨tÑ3¸4Õ@ÚÜ˜y¨#Ó.ˆEñ ÜÐ(¨4Ñ/°tÕ<ÚÜÐ'¨4´°U³Ð*<Ñ<ÀDÕIØ$)ó (	Ñ ˆG�U˜DØ˜)Ñ#ØØ�M‰M˜'Ô"Ù˜œ|Ò+ØÜ  Ó)ˆEÙØ˜a‘�
ØÜ*6°u¸gÓ*FÑ'ˆF�E˜<ÙØ�ÙØ�Ù˜¤Ò-Ø˜a‘�
ØÜ'3°LÀ'Ó'JÑ$ˆG�Y ÜœBŸF™F :¨r°7Ó;×AÑAÓCÓDˆIÜŸ)™) I¨|¼R¿T¹TÓBÐBÒTÈ9À}ˆGØ˜2Š~¡ÜÐ4°v¸c¸r°{ÑBÈ$ÕOØ˜a‘�
Øä&°gÀgØ¨U¸rØ"´À"Ü(ÙOS˜tŸy™yÑ(KÀdÔ(KÔKÐY[ñˆDõ Ø×!Ñ! $Ô'Ý¨V°C°Rª[º%Ð@ÈÕMØ˜Q‘�	ÙØ�L‰L˜ÔØ˜‰NˆIÝ 6¨#¨2¢;²Ð6¸dÕCÜ�J‰J�tÖðQ(	ôR 	�
‰
�3Žðq8õt Ü”*˜c¨GÔ4ð 	D¸Ø!ò D�Ø—‘œŸ
™
 3°UÔ;¸dÑBÕCñD÷	Dô 	Ð+¬z¼3¸z»?Ð.KÑKÐSWÖXá˜¬KÕ8ä	ˆ,˜Ñ
"¨$Õ/Ü	ˆ,˜Ñ
#¨4Õ0Ü	Ð
œiÑ
'¨tÖ4øôy ò 	ÜÐ+¨t°Q¨iÑ7¸tÕDÝûð	ú÷f	Dð 	Dús*   Ã(NÃ-NË81N>Î	N;ÎN6Î6N;Î>Oc                 ó0   — | dk(  rt         S t        d| z  z   S )Nr   z/news/xxgs90c/p%d.html)ÚLIST_URLr   )rð   s    r#   rÞ   rÞ      s   € Øˆq‚yÜˆÜÐ.°Ñ5Ñ5Ð5r%   c                 óp  — d}d}d}t         r¦t        | d«      }|j                  d«      xs$ |j                  d«      xs |j                  d«      }|r"dj                  d„ |j                  D «       «      }|j	                  d«      xs |j	                  d«      }|rt        |j                  «       «      }|||fS )	Nr   rl   z.xypg-right-contentz.news_detailz.contentc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w)N)r¤   )rÅ   Úcs     r#   rÆ   zparse_detail.<locals>.<genexpr>ª  s   è ø€ Ò">¨a¤3 q§6Ñ">ùs   ‚Úh1Úh2)r   Ú
select_oner£   ÚcontentsÚfindr   r¡   )r   r   r"   rò   rö   ÚsoupÚdr  s           r#   rá   rá   ¤  s¢   € Ø€E�r�¨"˜<ÝÜ˜Y¨Ó6ˆØ�O‰OÐ1Ó2Òt°d·o±oÀnÓ6UÒtÐY]×YhÑYhÐisÓYtˆÙØŸ7™7Ñ">°1·:±:Ô">Ó>ˆLØ�Y‰Y�t‹_Ò/ §	¡	¨$£ˆÙÜ §¡£Ó.ˆEØ�$˜Ð$Ð$r%   Ú__main__)Nrh   )JÚ__doc__rÓ   r~   r0   rå   rV   r-   Úurllib.parser   Úsqlite3rç   r   rþ   râ   rä   ré   rã   Úbs4r   ÚImportErrorÚenvironr    r   r   ÚENCr$   rÛ   Ú
_MAX_PAGESr§   Úargvr¸   rm   r   Úintr�   Ú
ValueErrorr   rÝ   Ú_DAYS_CUTOFFÚstrftimeÚ	localtimerà   Ú	LIST_PATHÚcompiler   r   Úurllib.requestÚsslÚhttp.cookiejarr   r¾   rR   Ú_create_unverified_contextÚ_CTXr:   Ú	cookiejarÚ	CookieJarÚ_cjr;   Úbuild_openerÚHTTPCookieProcessorÚHTTPSHandlerr=   rG   r^   r`   rb   rf   ri   r¼   rü   rÞ   rá   Ú__name__ra   r%   r#   ú<module>r&     sb  ðñ÷ H× G× G× Gà$€Ø2€Ø3€	Ø€
Ø&€Ø€ðÝ!ð �*‰*�.‰.˜Ð$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€à€Øˆt�}‰}˜Z¨¨¯©¸	¸¿	¹	»ÀlÐUZÑFZÑ8ZÓ)[Ó\€à€	Øˆ2�:‰:ÐVÓW€ò÷ F× Eà%€s×%Ñ%Ó'€Øe€Ø
‡n�n×ÑÓ €Ø
�.‰.×
%Ñ
% f§n¡n×&HÑ&HÈÓ&MÈvÏ~É~×OjÑOjÐswÐOjÓOxÓ
y€ó
òð> €òó
òXòO'òdò@Q5òj6ò
%ð ˆzÒÙ…Fð øðy ò ØƒMðûð< ò 	Úð	ûð
 ò 	Úð	ús5   °H Â%HÃ!H+ÈHÈHÈH(È'H(È+H4È3H4