Ë
    ¸¬uj  ã                   ó~   — d Z ddlZddlZddlZddlZddlmZmZ ddlm	Z	 dZ
dZdZdd	iZd
„ Zd„ Zedk(  r e«        yy)u^   
Crawler for æ¸…å¾�ç»�æµŽå¼€å�‘åŒº - é€šçŸ¥å…¬å‘Š
Local crawl + JSON output for server insert
é    N)ÚurlopenÚRequest)Úurljoinzhttps://www.qxedz.comu"   æ¸…å¾�ç»�æµŽå¼€å�‘åŒº-é€šçŸ¥å…¬å‘Šé   z
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36c                 ó|   — t        | t        ¬«      }t        |d¬«      }|j                  «       j	                  d«      S )N)Úheadersé   )Útimeoutzutf-8)r   ÚHEADERSr   ÚreadÚdecode)ÚurlÚreqÚresps      ú /root/gov_crawler/crawl_qxedz.pyÚfetchr      s1   € Ü
�#œwÔ
'€CÜ�3 Ô#€DØ�9‰9‹;×Ñ˜gÓ&Ð&ó    c                  óî	  — t        j                   «       } t        › d�g}t        dt        dz   «      D ]  }|j	                  t        › d|› d�«       Œ g }|D �]c  }t        d|› �t        j                  ¬«       	 t        |«      }d}d	}t        j                  ||t        j                  «      D ]Ê  }|j                  d«      j                  «       }	|	j                  d
«      sŒ4|	j                  d«      dk(  sŒI|j                  d«      j                  «       xs |j                  d«      j                  «       }
|j                  d«      j                  «       }t        |	z   }|j	                  ||
|dœ«       |dz  }ŒÌ t        d|› dt!        |«      › d�t        j                  ¬«       t        j"                  d«       �Œf t        dt!        |«      › d�t        j                  ¬«       g }t'        |«      D �]ô  \  }}	 t        |d   «      }t        j(                  d|t        j                  «      }|r|j                  d«      j                  «       n|d   }
t        j(                  d|«      }|r|j                  d«      j                  «       n|d   }t        j(                  d|t        j                  «      }|s%t        j(                  d|t        j                  «      }d}|rŸ|j                  d«      j                  «       }t        j*                  dd|t        j                  t        j,                  z  ¬«      }t        j*                  d d|t        j                  t        j,                  z  ¬«      }|j                  «       }|j	                  |
||d d! |d   d"œ«       |dz   d!z  d	k(  r-t        d#|dz   › dt!        |«      › �t        j                  ¬«       t        j"                  d$«       �Œ÷ t        t/        j0                  t2        |t!        |«      t5        d'„ |D «       «      t        j                   «       | z
  d(œd)œd*¬+«      «       t        d,t!        |«      › d-t        j                   «       | z
  d.›d/�t        j                  ¬«       y # t$        $ r*}t        d|› �t        j                  ¬«       Y d }~ �Œ÷d }~ww xY w# t$        $ r/}t        d%|d   › d&|› �t        j                  ¬«       Y d }~�Œýd }~ww xY w)0Nz
/tzgg.htmlé   é   z/tzgg/list_94_z.htmlz[qxedz] Fetching list: )Úfilez|<a[^>]*href=[\"\']([^\"\']+?\.html)[\"\'][^>]*title=[\"\']([^\"\']*)[\"\']>\s*<span>(.*?)</span>\s*<font>(.*?)</font>\s*</a>r   z/tzgg/ú/é   é   )r   ÚtitleÚdatez[qxedz]   Found z articles (total: ú)g333333Ó?z[qxedz]   Error: z[qxedz] Crawling z detail pages...r   z.<div class="newsxxtitle">\s*<span>(.*?)</span>r   u2   å�‘å¸ƒæ—¶é—´[ï¼š:]\s*(\d{4}[-/]\d{1,2}[-/]\d{1,2})r   zg<div[^>]*class=[\"\']?InfoContent[\"\']?[^>]*>(.*?)</div>\s*<div[^>]*class=[\"\']?(?:clear|page)[\"\']?z9<div[^>]*class=[\"\']?InfoContent[\"\']?[^>]*>(.*?)</div>Ú z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>é
   )r   Úcontentr   r   z[qxedz] Progress: gš™™™™™É?z[qxedz] Error on z: c              3   óP   K  — | ]  }|d    sŒ	t        |d    «      dkD  sŒd–— Œ  y­w)r!   é2   r   N)Úlen)Ú.0Úrs     r   ú	<genexpr>zmain.<locals>.<genexpr>i   s'   è ø€ Ò^ a°a¸	³lÄsÈ1ÈYÉ<ÓGXÐ[]ÓG]¤Ñ^ùs   ‚
&�&Ÿ&)ÚtotalÚwith_contentÚelapsed)Ú	site_nameÚarticlesÚstatsF)Úensure_asciiz[qxedz] Done: z articles in z.1fÚs)ÚtimeÚBASE_URLÚrangeÚ	MAX_PAGESÚappendÚprintÚsysÚstderrr   ÚreÚfinditerÚDOTALLÚgroupÚstripÚ
startswithÚcountr$   ÚsleepÚ	ExceptionÚ	enumerateÚsearchÚsubÚIÚjsonÚdumpsÚ	SITE_NAMEÚsum)Ú
start_timeÚ	page_urlsÚpÚall_articlesÚpage_urlÚhtmlÚpatternÚfoundÚmÚurl_pathr   r   Úfull_urlÚeÚresultsÚiÚartÚt_matchÚd_matchÚc_matchr!   s                        r   Úmainr[      sp  € Ü—‘“€Jô �:˜ZÐ(Ð)€IÜ�1”i !‘mÓ$ò >ˆØ×ÑœH˜: ^°A°3°eÐ<Õ=ð>ð €LØó ˆÜÐ'¨ zÐ2¼¿¹ÕDð	Ü˜“?ˆDð VˆGØˆEÜ—[‘[ ¨$´·	±	Ó:ò �ØŸ7™7 1›:×+Ñ+Ó-�Ø×&Ñ& xÕ0°X·^±^ÀCÓ5HÈAÓ5MØŸG™G A›J×,Ñ,Ó.ÒD°!·'±'¸!³*×2BÑ2BÓ2D�EØŸ7™7 1›:×+Ñ+Ó-�DÜ'¨(Ñ2�HØ ×'Ñ'°À5ÐRVÑ(WÔXØ˜Q‘J‘Eðô Ð$ U GÐ+=¼cÀ,Ó>OÐ=PÐPQÐRÔY\×YcÑYcÕdÜ�J‰J�sŽOð!ô* 
Ðœc ,Ó/Ð0Ð0@Ð
AÌÏ
É
ÕSð €GÜ˜LÓ)ó %J‰ˆˆ3ð$	JÜ˜˜U™Ó$ˆDô —i‘iÐ QÐSWÔY[×YbÑYbÓcˆGÙ07�G—M‘M !Ó$×*Ñ*Ô,¸SÀ¹\ˆEô —i‘iÐ UÐW[Ó\ˆGÙ/6�7—=‘= Ó#×)Ñ)Ô+¸CÀ¹KˆDô —i‘ið  !Kð  MQô  SU÷  S\ñ  S\ó  ]ˆGÙÜŸ)™)Ð$`ÐbfÔhj×hqÑhqÓr�àˆGÙØ!Ÿ-™-¨Ó*×0Ñ0Ó2�äŸ&™&Ð!=¸rÀ7ÔRT×R[ÑR[Ô^`×^bÑ^bÑRbÔc�ÜŸ&™&Ð!;¸RÀÔPR×PYÑPYÔ\^×\`Ñ\`ÑP`Ôa�Ø!Ÿ-™-›/�à�N‰NØØ"Ø˜S˜b˜	Ø˜5‘zñ	ô ð �A‘˜‰|˜qÒ ÜÐ*¨1¨Q©3¨%¨q´°\Ó1BÐ0CÐDÌ3Ï:É:ÕVä�J‰J�sŽOðG%JôP 
Œ$�*‰*ÜØä˜“\ÜÑ^¨7Ô^Ó^Ü—y‘y“{ ZÑ/ñ
ñð ôô ô 
ˆNœ3˜w›<˜.¨´d·i±i³kÀ*Ñ6LÈSÐ5QÐQRÐ
SÔZ]×ZdÑZdÖeøôu ò 	ÜÐ% a SÐ)´·
±
Õ;Þûð	ûôX ò 	JÜÐ% c¨%¡j \°°A°3Ð7¼c¿j¹j×IÓIûð	Jús?   Á9A'RÃ!RÃ6CRÇ:G-R<Ò	R9ÒR4Ò4R9Ò<	S4Ó$S/Ó/S4Ú__main__)Ú__doc__r8   r6   r0   rE   Úurllib.requestr   r   Úurllib.parser   r1   rG   r3   r   r   r[   Ú__name__© r   r   ú<module>rb      sX   ðñ÷
 × ß +Ý  à"€Ø0€	Ø€	àð  Dð€ò
'òUfðp ˆzÒÙ…Fð r   