Ë
    ¸¬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mZ ddlm	Z	 dZ
dZdZd„ Zd	„ Zd
„ Zd„ Z ej"                   e«       «       y)u;   Crawl haihua.com.cn enterprise announcements (ä¼�ä¸šå…¬å‘Š)é    N)Údatetime)Úasync_playwrightz/root/search.dbÚhaihuazhttps://www.haihua.com.cnc              ƒ   ó@  K  — | j                  d¬«      ƒ d{  –—† }t        › d|› d�}|j                  |dd¬«      ƒ d{  –—†  |j                  d	«      ƒ d{  –—†  |j	                  d
«      ƒ d{  –—† }g }|D ]x  }|j                  d«      ƒ d{  –—† }|j                  «       ƒ d{  –—† }|j                  «       }|sŒG|sŒJ|j                  d«      r|nt        |z   }	|j                  |	|f«       Œz |j                  «       ƒ d{  –—†  |S 7 Œ÷7 ŒÑ7 Œº7 Œ£7 Œ…7 Œo7 Œ­w)z)Get all news_detail URLs from a list pageúMozilla/5.0©Ú
user_agentNz/news_list1/z.htmlé0u  Údomcontentloaded©ÚtimeoutÚ
wait_untiléˆ  za[href*="news_detail"]ÚhrefÚhttp)Únew_pageÚBASE_URLÚgotoÚwait_for_timeoutÚquery_selector_allÚget_attributeÚ
inner_textÚstripÚ
startswithÚappendÚclose)
ÚbrowserÚpage_numÚpageÚurlÚlinksÚresultsÚlinkr   ÚtextÚfull_urls
             ú!/root/gov_crawler/crawl_haihua.pyÚparse_list_pager'      s  è ø€ à×!Ñ!¨]Ð!Ó;×;€DÜˆJ�l 8 *¨EÐ
2€CØ
�)‰)�C Ð3Eˆ)Ó
F×FÐFØ
×
Ñ
 Ó
%×%Ð%à×)Ñ)Ð*BÓC×C€EØ€GØò -ˆØ×'Ñ'¨Ó/×/ˆØ—_‘_Ó&×&ˆØ�z‰z‹|ˆÚ’DØ#Ÿ™¨vÔ6‘t¼HÀt¹OˆHØ�N‰N˜H dÐ+Õ,ð-ð �*‰*‹,×ÐØ€Nð! <øàFøØ%øàCøð 0øØ&øð úsˆ   ‚D˜D™'DÁ DÁDÁDÁDÁ2DÁ3DÂDÂDÂ*DÂ+DÃDÃADÄ	DÄ
DÄDÄDÄDÄDÄDÄDc              ƒ   ój  ‡K  — | j                  d¬«      ƒ d{  –—† }|j                  |dd¬«      ƒ d{  –—†  |j                  d«      ƒ d{  –—†  |j                  d«      ƒ d{  –—† }d	}|j	                  d
«      ƒ d{  –—† }|r'|j                  «       ƒ d{  –—† j                  «       }nc|j                  d«      D �cg c]@  }|j                  «       sŒt        |j                  «       «      dkD  sŒ1|j                  «       ‘ŒB }}|r|d   nd	}t        j                  d|«      }|r|d   nd	}	g }
|r¬|j                  |d   «      }|dkD  r“||dz   d }|j                  d«      D �cg c]@  }|j                  «       sŒt        |j                  «       «      dkD  sŒ1|j                  «       ‘ŒB }}g d¢}|D ](  Št        ˆfd„|D «       «      rŒ|
j                  ‰«       Œ* dj                  |
dd «      }|j                  «       ƒ d{  –—†  ||	||dœS 7 �Œü7 �Œã7 �ŒÍ7 �Œ·7 �ŒŸ7 �Œˆc c}w c c}w 7 Œ'­w)z+Get title, date, content from a detail pager   r   Nr
   r   r   r   ÚbodyÚ Úh1ú
é
   r   z(\d{4}-\d{2}-\d{2})é   )u   ç½‘ç«™é¦–é¡µu   å…³äºŽæµ·åŒ–u   èµ„è®¯ä¸­å¿ƒu   äº§å“�è�¥é”€u   ä¼�ä¸šæ–‡åŒ–u   äººæ‰�æ‹›è�˜u   è�”ç³»æˆ‘ä»¬u   é›†å›¢æ–°é—»u   åª’ä½“è�šç„¦u   è§†é¢‘èµ„è®¯u   ä¼�ä¸šå…¬å‘ŠÚ	Copyrightu   é²�ICPu   è�¥ä¸šæ‰§ç…§u   ç½‘ç«™å»ºè®¾u   ä¸­ä¼�åŠ¨åŠ›u	   æ‰«ä¸€æ‰«u   ç‰ˆæ�ƒæ‰€æœ‰c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0ÚkwÚls     €r&   ú	<genexpr>z$parse_detail_page.<locals>.<genexpr>E   s   øè ø€ Ò8 r˜2 œ7Ñ8ùs   ƒ)ÚtitleÚpublish_dateÚcontentÚ
source_url)r   r   r   r   Úquery_selectorr   ÚsplitÚlenÚreÚfindallÚfindÚanyr   Újoinr   )r   Ú
detail_urlr   r$   r6   r+   r4   ÚlinesÚdatesr7   Úcontent_partsÚdate_posÚ
after_dateÚ
skip_wordsr8   s         `        r&   Úparse_detail_pagerI      s  øè ø€ à×!Ñ!¨]Ð!Ó;×;€DØ
�)‰)�J¨Ð:Lˆ)Ó
M×MÐMØ
×
Ñ
 Ó
%×%Ð%à—‘ Ó(×(€Dð €EØ×"Ñ" 4Ó(×	(€BÙ	Ø—}‘}“×&×-Ñ-Ó/‰ð %)§J¡J¨tÓ$4ÖZ˜q¸¿¹½	ÄcÈ!Ï'É'Ë)ÃnÐWYÓFY�—‘•ÐZˆÐZÙ!��a’ rˆô �J‰JÐ-¨tÓ4€EÙ$�5˜’8¨"€Lð €MáØ—9‘9˜U 1™XÓ&ˆØ�aŠ<à˜h¨™m˜nÐ-ˆJà(2×(8Ñ(8¸Ó(>Öd 1À!Ç'Á'Å)ÔPSÐTU×T[ÑT[ÓT]ÓP^ÐacÓPc�Q—W‘W•YÐdˆEÐdòkˆJð ò ,�ÜÓ8¨ZÔ8Õ8Ø!×(Ñ(¨Õ+ð,ð �i‰i˜ c rÐ*Ó+€Gà
�*‰*‹,×ÐàØ$ØØ ñ	ð ðU <ùØMùØ%ùà(ùð 
)ùà&ûò [ùò" eð ús°   ƒH3™HšH3µH¶H3ÁHÁH3Á'HÁ(H3ÂH!ÂH3ÂH$Â&H3ÃH'ÃH'Ã6H'ÄA"H3Å*H,Æ H,ÆH,Æ/H3Ç:H3È	H1È
H3ÈH3ÈH3ÈH3È!H3È$H3È'H3c                 óR  — | st        d«       yt        j                  t        «      }|j	                  «       }d}| D ]Ø  }|j                  d|d   f«      j                  «       }|rt        d|d   dd › �«       Œ>|j                  d	t        |d   |d   |d   |d
   |d
   r0t        t        j                  |d
   d«      j                  «       «      nd|d   r|d   dd nd|d   f«       |j                  «        |dz  }t        d|› d|d   dd › �«       ŒÚ |j                  «        |S )zInsert records into search.dbzNo records to saver   z)SELECT id FROM gov_raw WHERE source_url=?r9   z  SKIP (exists): r6   Né(   z©
            INSERT INTO gov_raw (site_name, source_url, page_url, title, publish_date, date_rank, summary, content)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        r7   z%Y-%m-%dr8   éÈ   r*   é   z  OK (z): é2   )ÚprintÚsqlite3ÚconnectÚDB_PATHÚcursorÚexecuteÚfetchoneÚ	SITE_NAMEÚintr   ÚstrptimeÚ	timestampÚcommitr   )ÚrecordsÚconnÚcÚcountÚrÚexistings         r&   Ú
save_to_dbra   R   sG  € áÜÐ"Ô#Øä�?‰?œ7Ó#€DØ�‰‹€Aà€EØò 4ˆà—9‘9ÐHÈ1È\É?ÐJ\Ó]×fÑfÓhˆÙÜÐ% a¨¡j°°" oÐ%6Ð7Ô8Øà	�	‰	ð ô Øˆl‰OØˆl‰OØˆg‰JØˆnÑØQRÐSaÒQbŒC”×!Ñ! ! NÑ"3°ZÓ@×JÑJÓLÔMÐhiØ"# I¢,ˆAˆi‰L˜˜#Ñ°BØˆi‰Lð	
ô	ð 	�‰ŒØ�‰
ˆÜ��u�g˜S  7¡¨C¨R Ð 1Ð2Õ3ð-4ð0 	‡J�J„LØ€Ló    c            
   ƒ   ó,  K  — t        «       4 ƒd {  –—† } | j                  j                  ddg¬«      ƒ d {  –—† }g }dD ]B  }t        ||«      ƒ d {  –—† }t	        d|› dt        |«      › d�«       |j                  |«       ŒD t	        dt        |«      › �«       g }|D ]G  \  }}t	        d	|d d
 › d�«       	 t        ||«      ƒ d {  –—† }||d<   ||d<   |j                  |«       ŒI |j                  «       ƒ d {  –—†  t        |«      }
t	        d|
› dt        |«      › d�«       d d d «      ƒd {  –—†  y 7 �Œ(7 �Œ7 Œì7 Œx# t        $ r,}	t	        d|	› �«       t        j                  «        Y d }	~	ŒÓd }	~	ww xY w7 Œ}7 ŒI# 1 ƒd {  –—†7  sw Y   y xY w­w)NTz--no-sandbox)ÚheadlessÚargs)é   zPage z: z itemsz
Total items found: z
Fetching: rN   z...r6   r9   z	  ERROR: z
=== Complete: ú/z new records ===)r   ÚchromiumÚlaunchr'   rO   r<   ÚextendrI   r   Ú	ExceptionÚ	tracebackÚ	print_excr   ra   )Úpr   Ú	all_itemsr   Úitemsr[   r    r6   ÚdetailÚeÚsaveds              r&   Úmainrt   w   s©  è ø€ ÜÓ!÷ Kð K QØŸ
™
×)Ñ)°4¸~Ð>NÐ)ÓO×Oˆàˆ	Øò 	$ˆHÜ)¨'°8Ó<×<ˆEÜ�E˜(˜ 2¤c¨%£j \°Ð8Ô9Ø×Ñ˜UÕ#ð	$ô
 	Ð%¤c¨)£nÐ%5Ð6Ô7àˆØ#ò 		&‰JˆC�Ü�L  s¨  ¨CÐ0Ô1ð&Ü0°¸#Ó>×>�Ø"'��w‘Ø'*��|Ñ$Ø—‘˜vÕ&ð		&ð �m‰m‹o×Ðô ˜7Ó#ˆÜÐ    q¬¨Y«Ð(8Ð8HÐIÔJ÷7K÷ Kñ KùØOùð =øð ?ùô ò &Ü˜	 ! �oÔ&Ü×#Ñ#×%Ñ%ûð&úð 	øð/Kø÷ K÷ Kñ Küs¯   ‚F‘D9’F•"E?·D<¸E?ÁD?ÁA%E?Â9EÃEÃ	EÃ(E?Ã=E;Ã>*E?Ä(FÄ3E=Ä4FÄ<E?Ä?E?ÅEÅ	E8Å"E3Å.E?Å3E8Å8E?Å=FÅ?FÆFÆFÆF)Ú__doc__Úasyncior=   ÚsysÚosrP   rl   r   Úplaywright.async_apir   rR   rV   r   r'   rI   ra   rt   Úrunr1   rb   r&   ú<module>r{      sO   ðá Aß /× /× /Ý Ý 1à
€Ø€	Ø&€òò(1òf#òJKð< €‡�‰D‹FÕ rb   