Ë
    ¸¬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diZd	Zd
„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u…   
æ™‹æ±Ÿå¸‚-å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»· (Playwrightç‰ˆ)
ä½¿ç”¨Playwrighté€šè¿‡evalæ–¹å¼�ç¿»é¡µï¼Œè°ƒç”¨Avalonçš„toPageç›´æŽ¥è·³è½¬
é    N)ÚBeautifulSoup)Úurljoinz6https://www.jinjiang.gov.cn/xxgk/zdxxgk/hjbh/jsxmyxpj/Újinjiangz
User-AgentzMozilla/5.0z/root/temp_search.dbc                 ó"   — t        t        | «      S )N)r   ÚBASE_URL)Úurls    ú&/root/gov_crawler/crawl_jinjiang_v2.pyÚget_detail_urlr
      s   € Ü”8˜SÓ!Ð!ó    c                 ó$  — g }d}t        j                  || «      }t        «       }|D ]f  \  }}}t        |j	                  «       «      }||vsŒ%|j                  |«       |j                  |j	                  «       |j	                  «       |dœ«       Œh |S )Nzi\{\s*"docreltime":\s*\'([^\']+)\'\s*,\s*"doctitle":\s*\'([^\']+)\'\s*,\s*"docpuburl":\s*\'([^\']+)\'\s*\})ÚdateÚtitler   )ÚreÚfindallÚsetr
   ÚstripÚaddÚappend)	ÚhtmlÚitemsÚpatternÚmatchesÚseenÚ
docreltimeÚdoctitleÚ	docpuburlr   s	            r	   Úextract_inline_datar      s‰   € Ø€EØz€GÜ�j‰j˜ $Ó'€GÜ‹5€DØ+2ò ^Ñ'ˆ
�H˜iÜ˜YŸ_™_Ó.Ó/ˆØ�dŠ?Ø�H‰H�SŒMØ�L‰L *×"2Ñ"2Ó"4¸x¿~¹~Ó?OÐX[Ñ\Õ]ð	^ð
 €Lr   c                 óv   — g }	 | j                  d«      }|rt        dt        |«      › d�«       y	 |S #  Y |S xY w)u   ç›´æŽ¥ä»ŽDOMæ��å�–åˆ—è¡¨æ•°æ�®zul[ms-if="list.length>0"] li au     DOMæ‰¾åˆ° u
    ä¸ªé“¾æŽ¥N)Úquery_selector_allÚprintÚlen)Úpager   Úlinkss      r	   Úextract_dom_datar$      sS   € à€EðØ×'Ñ'Ð(HÓIˆÙÜ�L¤ U£ ¨JÐ7Ô8Øð ð
 €LøðØØ€Lús   „+3 ³8c                  ód  ‡ — t        d«       t        dt        › �«       ddlm}   | «       5 }|j                  j                  d¬«      }|j                  ddd	d
œ¬«      }|j                  «       }t        «       Š |j                  dˆ fd„«       |j                  t        dd¬«       t        j                  d«       t        dt        ‰ «      › d�«       ‰ D ]  }t        d|d d › �«       Œ t        d«       g }d}d}t        |j                  «       «      }	t        dt        |	«      › d�«       |j!                  |	«       t#        d|«      D �]V  }
t        d|
dz   › d|
› d�d ¬!«       t$        j&                  j)                  «        	 |j+                  d"|
dz   › d#|
dz   › d$�«      }t        d%|d d& › �«       t        j                  d«       |j/                  dd(¬)«       t        j                  d«       |j                  «       }t        |«      }|s.t        d*«       	 |j1                  d+«      }|rt        d,«        nk	 Œñt        d-t        |«      › d.|d/   d0   › d1|d   d0   › d2�«       |j!                  |«       t        |«      dz  dk(  s�Œ?t        d3t        |«      › d�«       �ŒY |j3                  «        d d d «       t        «       }g }D ]/  }|d4   |vsŒ|j5                  |d4   «       |j7                  |«       Œ1 t        d5t        |«      › d6�«       |rt        d7|d/   d0   › d1|d   d0   › �«       t        d8«       t9        j:                  «       }|j<                  j?                  t@        «       tC        jD                  tF        «      }|jI                  «       }|jK                  d9«       d}d}tM        |«      D �]  \  }}t        d:|dz   › d;t        |«      › d<|d0   › d |d=   d d> › d?�	d ¬!«       t$        j&                  j)                  «        	 |jO                  |d4   d@¬)«      }|jP                  dAk(  �r:tS        |jT                  dB«      }|jW                  dC«      }|s|jW                  dD«      }|rtY        |«      ndE}|j[                  dFdGdHi¬I«      }|r$|jO                  dJ«      r|dJ   j]                  «       n|d=   }|j[                  dFdGdKi¬I«      }|r$|jO                  dJ«      r|dJ   j]                  «       n|d0   }|rt        |j]                  «       «      dAk  r,t        dLt        |j]                  «       «      › dM�«       |dz  }nKt        dNt        |j]                  «       «      › dM�«       n$dE}t        dO|jP                  › �«       |d=   }|d0   }	 |jK                  dQ|||d4   t^        |f«       |j`                  dkD  r|dz  }�Œ |jc                  «        |j3                  «        t        dSdT› �«       t        dU|› dVt        |«      |z
  › d�«       t        dT› «       y # t,        $ r}t        d'|› �«       Y d }~ �Œœd }~ww xY w#  Y �ŒxY w# 1 sw Y   �ŒžxY w# t,        $ r$}dE}t        dP|› �«       |d=   }|d0   }Y d }~Œòd }~ww xY w# t,        $ r}t        dR|› �«       Y d }~�Œðd }~ww xY w)WNu4   ===== æ™‹æ±Ÿå¸‚-å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»· =====u   ç›®æ ‡: r   )Úsync_playwrightT)Úheadlessz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36i€  i8  )ÚwidthÚheight)Ú
user_agentÚviewportÚrequestc                 óZ   •— | j                   dv r‰j                  | j                  «      S d S )N)ÚxhrÚfetch)Úresource_typer   r   )ÚrÚxhr_urlss    €r	   ú<lambda>zmain.<locals>.<lambda>:   s%   ø€ ¸A¿O¹OÐO_Ñ<_ X§\¡\°!·%±%Ó%8€ Ðei€ r   Únetworkidlei`ê  )Ú
wait_untilÚtimeouté   u   
=== XHRè¯·æ±‚: z ===z  é–   u   
=== å°�è¯•Avalonç¿»é¡µ ===ék   é   u   ç¬¬1é¡µ(ä»ŽHTML): u    æ�¡é
   u     è·³è½¬ç¬¬é   u   é¡µ (0-based: z)...ú )Úenduø  
                    (() => {
                        // æ‰¾åˆ°list controller
                        var vms = avalon.vmodels;
                        var listVm = null;
                        for(var k in vms) {
                            if(vms[k].pageIndex !== undefined) {
                                listVm = vms[k];
                                break;
                            }
                        }
                        if(listVm) {
                            listVm.toPage(z:);
                            return "called toPage(" + (z¤) + ")";
                        }
                        return "no list vm found, keys: " + Object.keys(vms).join(",");
                    })()
                zJS: éP   zevaluate error: i˜:  )r6   u     -> æ— æ•°æ�®zdiv.default_pageu     -> æ— æ›´å¤šæ•°æ�®ï¼�z  -> u    æ�¡ [éÿÿÿÿr   z ~ ú]u     [ç´¯è®¡] r   u   
å…±èŽ·å�–: u    æ�¡ (åŽ»é‡�å�Ž)u   æ—¥æœŸèŒƒå›´: u   
--- èŽ·å�–è¯¦æƒ…é¡µ ---zôCREATE TABLE IF NOT EXISTS gov_raw (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        title TEXT, content TEXT, source_url TEXT UNIQUE,
        site_name TEXT, publish_date TEXT,
        crawl_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )z  [ú/z] r   é(   z...é   éÈ   zhtml.parserzdiv.TRS_Editorzdiv.article_contentÚ ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentÚPubDatezSHORT(ú)zOK(zHTTP zERROR: zjINSERT OR IGNORE INTO gov_raw (title, content, source_url, site_name, publish_date) VALUES (?, ?, ?, ?, ?)z    [DB ERROR] ú
z2==================================================u   å®Œæˆ�ï¼�æ€»è®¡: u    æ�¡å…¥åº“, æœ‰å†…å®¹: )2r    r   Úplaywright.sync_apir&   ÚchromiumÚlaunchÚnew_contextÚnew_pager   ÚonÚgotoÚtimeÚsleepr!   r   rK   ÚextendÚrangeÚsysÚstdoutÚflushÚevaluateÚ	ExceptionÚwait_for_load_stateÚquery_selectorÚcloser   r   ÚrequestsÚSessionÚheadersÚupdateÚHEADERSÚsqlite3ÚconnectÚ	SEARCH_DBÚcursorÚexecuteÚ	enumerateÚgetÚstatus_coder   ÚtextÚ
select_oneÚstrÚfindr   Ú	SITE_NAMEÚrowcountÚcommit)!r&   ÚpwÚbrowserÚcontextr"   r   Ú	all_itemsÚtotal_pagesÚ
batch_sizeÚpage1_itemsÚpage_idxÚresultÚerK   r   Úno_datar   ÚuniqueÚitemÚsessionÚconnÚcÚinsertedÚshort_countÚidxÚrespÚsoupÚcontent_divÚ
meta_titler   Ú	meta_dater   r2   s!                                   @r	   ÚmainrŽ   *   s´  ø€ Ü	Ð@ÔBÜ	ˆH”X�JÐ
Ô å3á	Ó	ð X˜bØ—+‘+×$Ñ$¨dÐ$Ó3ˆØ×%Ñ%ØUØ#¨tÑ4ð &ó 
ˆð ×ÑÓ!ˆô “5ˆØ�‰�	ÓiÔjà�	‰	”( }¸eˆ	ÔDÜ�
‰
�1ŒäÐ!¤# h£- °Ð5Ô6Øò 	$ˆCÜ�B�s˜4˜C�y�kÐ"Õ#ð	$ô 	Ð,Ô.ð ˆ	ØˆØˆ
ô *¨$¯,©,«.Ó9ˆÜÐ"¤3 {Ó#3Ð"4°DÐ9Ô:Ø×Ñ˜Ô%ô ˜b +Ó.ó 5	:ˆHÜ�K ¨¡
˜|¨>¸(¸À4ÐHÈcÕRÜ�J‰J×ÑÔðàŸ™ð ,+ð ,4°a©<¨.ð 98Ø8@À1¹°~ð Fð(ó �ô$ ˜˜V C R˜[˜MÐ*Ô+ô
 �J‰J�qŒMØ×$Ñ$ ]¸EÐ$ÔBÜ�J‰J�qŒMð —l‘l“nˆGÜ'¨Ó0ˆEÙÜ˜Ô(ðØ"×1Ñ1Ð2DÓE�GÙÜÐ7Ô8Ùð ð
 ä�Eœ#˜e›*˜ V¨E°"©I°fÑ,=Ð+>¸cÀ%ÈÁ(È6ÑBRÐASÐSTÐUÔVØ×Ñ˜UÔ#ô �9‹~ Ñ# qÔ(Ü˜¤C¨	£NÐ#3°4Ð8Ö9ðk5	:ðn 	�‰Œ÷qXôv ‹5€DØ€FØò  ˆØ�‰;˜dÒ"Ø�H‰H�T˜%‘[Ô!Ø�M‰M˜$Õð ô
 
ˆMœ#˜f›+˜Ð&6Ð
7Ô8ÙÜ�˜v b™z¨&Ñ1Ð2°#°f¸Q±iÀÑ6GÐ5HÐIÔJô 
Ð%Ô'Ü×ÑÓ €GØ‡O�O×Ñœ7Ô#ä�?‰?œ9Ó%€DØ�‰‹€AØ‡I�Ið 	ô 
ð €HØ€KÜ˜vÓ&ó ()‰	ˆˆTÜ��C˜‘E�7˜!œC ›K˜=¨¨4°©<¨.¸¸$¸w¹-ÈÈÐ:LÐ9MÈSÐQÐWZÕ[Ü�
‰
×ÑÔð	 Ø—;‘;˜t E™{°B�;Ó7ˆDØ×Ñ 3Ó&Ü$ T§Y¡Y°Ó>�Ø"Ÿo™oÐ.>Ó?�Ù"Ø"&§/¡/Ð2GÓ"H�KÙ.9œ#˜kÔ*¸r�à!ŸY™Y v°f¸nÐ5M˜YÓN�
Ù9CÈ
ÏÉÐW`ÔHa˜
 9Ñ-×3Ñ3Ô5ÐgkÐlsÑgt�à ŸI™I f°V¸YÐ4G˜IÓH�	Ù7@ÀYÇ]Á]ÐS\ÔE]�y Ñ+×1Ñ1Ô3ÐcgÐhnÑco�á¤# g§m¡m£oÓ"6¸Ò"<Ü˜F¤3 w§}¡}£Ó#7Ð"8¸Ð:Ô;Ø 1Ñ$‘Kä˜C¤ G§M¡M£OÓ 4Ð5°QÐ7Õ8à�Ü˜˜d×.Ñ.Ð/Ð0Ô1Ø˜W™�Ø˜F‘|�ð	)Ø�I‰Ið  CØ˜g t¨E¡{´I¸tÐDôFà�z‰z˜AŠ~Ø˜A‘�ùðM()ðT 	‡K�K„MØ‡J�J„LÜ	ˆBˆvˆhˆ-ÔÜ	Ð˜h˜ZÐ'>¼sÀ6»{È;Ñ?VÐ>WÐW[Ð
\Ô]Ü	ˆVˆHÕøôU ò ÜÐ(¨¨Ð,Ô-Þûðûð&Úú÷]Xñ Xûôd ò 	 ØˆGÜ�G˜A˜3�-Ô Ø˜‘MˆEØ˜‘<�Dûð		 ûô ò 	)Ü�O A 3Ð'×(Ò(ûð	)ús‡   ¬EYÆ/X"Æ3A%YÈYÈ7AYÊ	+YÐFYÖ2ZØ"	YØ+Y Ø9YÙ YÙYÙYÙ
YÙYÙ	Z
Ù&ZÚZ
Ú	Z/ÚZ*Ú*Z/Ú__main__)Ú__doc__r   rZ   ÚjsonrV   rb   rg   Úbs4r   Úurllib.parser   r   rs   rf   ri   r
   r   r$   rŽ   Ú__name__© r   r	   ú<module>r–      s^   ðñ÷ .× -× -Ý Ý  àC€Ø€	Ø˜Ð
'€Ø"€	ò"ò
ò
òjðX ˆzÒÙ…Fð r   