Ë
    ¸¬uj€  ã                   ó~  — 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mZ  e j                  dd«      Z
dZedz   Zddd	ed
z   dœZ ej                  «        ed¬«      z
  j                  d«      Z ej"                  «       Zej&                  j)                  e«       dd„Zd„ Zd„ Zd„ Zedk(  r e«        yy)é    N)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/root/search.dbzhttps://jjkfq.bengbu.gov.cnz/zfxxgk/site/label/8888zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z.application/json, text/javascript, */*; q=0.01ÚXMLHttpRequestz</zfxxgk/public/column/29661?type=4&catId=7560121&action=list)z
User-AgentÚAcceptzX-Requested-WithÚRefereriG  )Údaysz%Y-%m-%dc                 óR  — ddddt        | «      ddddd	d
ddddœ}	 t        j                  t        |d¬«      }|j	                  «       }|j                  dg «      |j                  dd«      |j                  dd«      fS # t
        $ r }t        d| › d|› �«       g ddfcY d}~S d}~ww xY w)u    é€šè¿‡AJAX APIèŽ·å�–åˆ—è¡¨æ•°æ�®ÚpublicInfoListÚ6795621Ú29661Ú20Útruez
yyyy-MM-ddÚ50Ú4ÚlistÚ Ú7560121)Ú	labelNameÚsiteIdÚorganIdÚpageSizeÚ	pageIndexÚisDateÚ
dateFormatÚlengthÚtypeÚactionÚresultÚisJsonÚ
isSetValueÚcatIdé   )ÚparamsÚtimeoutÚdataÚtotalr   Ú	pageCountz  [ERROR] API page ú: N)ÚstrÚsessionÚgetÚAPI_URLÚjsonÚ	ExceptionÚprint)Úpager$   Úrr&   Úes        ú!/root/gov_crawler/crawl_bengbu.pyÚ
fetch_listr5      s½   € ð &ØØØÜ˜“YØØ"ØØØØØØØñ€Fð Ü�K‰Kœ¨¸ˆKÓ;ˆØ�v‰v‹xˆØ�x‰x˜ Ó# T§X¡X¨g°qÓ%9¸4¿8¹8ÀKÐQRÓ;SÐSÐSøÜò ÜÐ# D 6¨¨A¨3Ð/Ô0Ø�1�aˆx�ûðús   œA A= Á=	B&ÂB!ÂB&Â!B&c                 ó0  — 	 t         j                  | d¬«      }d|_        |j
                  }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                  «      }d
}|r–|j                  «       }d	}	|}
|
t        |«      k  rW|	dkD  rR||
|
dz    dk(  r||
dz   |
dz    dvr|	d	z  }	|
dz  }
n||
|
dz    dk(  r|	d	z  }	|
dz  }
n|
d	z  }
|
t        |«      k  r|	dkD  rŒR|	dk(  r|||
dz
   j                  «       nd
}|||fS # t        $ r}t	        d| › d|› �«       Y d}~yd}~ww xY w)u8   è§£æž�è¯¦æƒ…é¡µï¼Œè¿”å›ž (title, pub_date, content_html)r#   ©r%   zutf-8z  [ERROR] Detail r)   N)NNNz(<h1[^>]*class="gk_title"[^>]*>(.*?)</h1>é   r   u"   å�‘å¸ƒæ—¶é—´ï¼š(\d{4}-\d{2}-\d{2})z<div\s+id="zoom"[^>]*>r   é   z<divé   z>/é   z</div>)r+   r,   Úencodingr/   r0   ÚtextÚreÚsearchÚDOTALLÚgroupÚstripÚendÚlen)Úurlr2   r3   ÚhtmlÚmÚtitleÚpub_dateÚcontentÚstartÚdepthÚis              r4   Úparse_detailrN   4   s¦  € ð Ü�K‰K˜ RˆKÓ(ˆØˆŒ
ð
 �6‰6€Dô 	�	‰	Ð=¸tÄRÇYÁYÓO€AÙ"#ˆA�G‰G�A‹J×ÑÔ¨€Eô 	�	‰	Ð7¸Ó>€AÙ%&ˆq�w‰w�q‹z×ÑÔ!¨B€Hô 	�	‰	Ð+¨T´2·9±9Ó=€AØ€GÙØ—‘“ˆàˆØˆØ”#�d“)Šm ¨¢	Ø�A�a˜‘cˆ{˜fÒ$¨¨a°©c°!°A±#¨¸dÑ)BØ˜‘
�Ø�Q‘‘Ø�a˜˜!™� Ò(Ø˜‘
�Ø�Q‘‘à�Q‘�ð ”#�d“)Šm ¨£	ð .3°aªZ�$�u˜Q˜q™S�/×'Ñ'Ô)¸Rˆà�(˜GÐ#Ð#øôC ò  ÜÐ! #  b¨¨Ð,Ô-Üûð ús   ‚E1 Å1	FÅ:FÆFc                 óx  — t        j                  t        d¬«      }|j                  «       }d}d}| D ]?  \  }}}}	 |j	                  d||||xs d|ddf«       |j
                  dk(  r|dz  }n|dz  }ŒA |j                  «        |j                  «        ||fS # t        $ r}	t        d	|	› �«       Y d
}	~	Œ‚d
}	~	ww xY w)u   æ‰¹é‡�å†™å…¥search.dbé   r7   r   zÄ
                INSERT OR REPLACE INTO gov_raw 
                (page_url, title, content, publish_date, source_url, category, site_name)
                VALUES (?, ?, ?, ?, ?, ?, ?)
            r   u   å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»·u   èšŒåŸ ç»�æµŽå¼€å�‘åŒºr8   z  [ERROR] DB insert: N)
Úsqlite3ÚconnectÚDB_PATHÚcursorÚexecuteÚrowcountr/   r0   ÚcommitÚclose)
Ú
items_dataÚconnÚcÚinsertedÚupdatedrE   rH   rI   rJ   r3   s
             r4   Ú
save_to_dbr^   ]   sÙ   € ä�?‰?œ7¨BÔ/€DØ�‰‹€AØ€HØ€GØ)3ò /Ñ%ˆˆU�H˜gð	/Ø�I‰Ið ð
 ØØØ’˜BØØ0Ø'ðô	ð �z‰z˜QŠØ˜A‘‘à˜1‘�øð%/ð* 	‡K�K„MØ‡J�J„LØ�WÐÐøô	 ò 	/ÜÐ)¨!¨Ð-×.Ñ.ûð	/ús   »7BÂ	B9Â!B4Â4B9c                  óÐ  — t        d«       t        dt        › �«       g } t        «       }d}	 t        d|› d�«       t        |«      \  }}}|st        d«       núd}d	}|D ]š  }|j	                  d
d«      }	|	r|	|v rŒ|j                  |	«       |j	                  dd«      j                  «       }
|j	                  d«      r|j	                  dd«      d d nd}|t        k  rd} n| j                  |	|
|f«       |dz  }Œœ t        d|› dt        | «      › d|› d|› �«       |s||k\  rt        d|rdnd› d�«       n|dz  }t        j                  d«       �Œ&t        dt        | «      › d�«       g }t        | «      D ]µ  \  }\  }}
}t        d|dz   › dt        | «      › d|j                  d«      d   › d�d¬«       t        |«      \  }}}|r|}
|r|}|j                  ||
||f«       t        d |rt        |«      nd› �d¬«       |st        d!d¬«       t        «        t        j                  d"«       Œ· t        |«      \  }}t        d#|› d$|› d%�«       t        d&t        |«      › �«       y )'NuG   === èšŒåŸ ç»�æµŽå¼€å�‘åŒº â€” å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»· çˆ¬è™« ===u   æˆªæ­¢æ—¥æœŸ: r8   Tz
[Page z] Fetching API...z  -> No items, stoppingr   FÚlinkr   rH   ÚpublishDateé
   z  -> z new items, total: z, total=z, pages=zReached cutoff datez	Last pagez
, stoppingg      à?z
=== Total list items: z ===z  [ú/z] éÿÿÿÿz...ú )rC   zlen=z [WARN empty]g333333Ó?z
=== DB write complete: z inserted, z updated ===zTotal in this run: )r0   ÚCUTOFF_DATEÚsetr5   r,   ÚaddrB   ÚappendrD   ÚtimeÚsleepÚ	enumerateÚsplitrN   r^   )Ú	all_itemsÚ
seen_linksr1   Úitemsr'   Ú
page_countÚ	new_countÚstopÚitemr`   rH   rI   Údetail_datarM   rE   Údate_strÚ	det_titleÚdet_daterJ   ÚinsÚupds                        r4   Úmainr{   }   sž  € Ü	ÐSÔUÜ	ˆNœ;˜-Ð
(Ô)à€IÜ“€Jð €DØ
Ü�˜˜Ð/Ð0Ô1Ü#-¨dÓ#3Ñ ˆˆu�jÙÜÐ+Ô-Øàˆ	ØˆØò 	ˆDØ—8‘8˜F BÓ'ˆDÙ˜4 :Ñ-ØØ�N‰N˜4Ô à—H‘H˜W bÓ)×/Ñ/Ó1ˆEØ;?¿8¹8ÀMÔ;R�t—x‘x ¨rÓ2°3°BÑ7ÐXZˆHàœ+Ò%Ø�Ùà×Ñ˜d E¨8Ð4Ô5Ø˜‰N‰Ið	ô  	��i�[Ð 3´C¸	³NÐ3CÀ8ÈEÈ7ÐRZÐ[eÐZfÐgÔhá�4˜:Ò%Ü�E±4Ñ/¸[ÐIÈÐTÔUØà�‰	ˆÜ�
‰
�3ŒñA ôD 
Ð$¤S¨£^Ð$4°DÐ
9Ô:ð €KÜ%.¨yÓ%9ò Ñ!ˆÑ!ˆC�˜Ü��A�a‘C�5˜œ#˜i›.Ð)¨¨C¯I©I°c«N¸2Ñ,>Ð+?¸sÐCÈÕMÜ'3°CÓ'8Ñ$ˆ	�8˜WÙØˆEÙØˆHØ×Ñ˜C ¨°'Ð:Ô;Ü�¡W”S˜”\°!Ð4Ð5¸2Õ>ÙÜ�/ rÕ*ÜŒÜ�
‰
�3�ðô ˜+Ó&�H€CˆÜ	Ð% c U¨+°c°U¸,Ð
GÔHÜ	Ð¤ KÓ 0Ð1Ð
2Õ3ó    Ú__main__)r8   )ÚosÚrequestsrQ   r>   Úsysrj   r.   r   r   ÚgetenvrS   ÚBASEr-   ÚHEADERSÚnowÚstrftimerf   ÚSessionr+   ÚheadersÚupdater5   rN   r^   r{   Ú__name__© r|   r4   ú<module>r‹      sÏ   ðã 	ð÷ 2× 1× 1Ó 1ß (à
ˆ"�)‰)�KÐ!2Ó
3€Ø$€Ø
Ð*Ñ
*€ð DØ>Ø(ØÐTÑTñ	€ð ˆx�|‰|‹~¡	¨uÔ 5Ñ5×?Ñ?À
ÓK€à
ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ óò6&$òRò@@4ðF ˆzÒÙ…Fð r|   