Ë
    ¸¬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	d
ddœZd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u¼   
æ™‹æ±Ÿå¸‚äººæ°‘æ”¿åºœ - å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»· çˆ¬è™«
URL: https://www.jinjiang.gov.cn/xxgk/zdxxgk/hjbh/jsxmyxpj/
API: POST https://www.jinjiang.gov.cn/ssp/search/api/v2/external
é    N)ÚBeautifulSoup)Úurljoinz6https://www.jinjiang.gov.cn/xxgk/zdxxgk/hjbh/jsxmyxpj/z6https://www.jinjiang.gov.cn/ssp/search/api/v2/externalÚjinjiangz/root/temp_search.dbz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zapplication/jsonzhttps://www.jinjiang.gov.cn/)z
User-AgentzContent-TypeÚRefererc                 ó"   — t        t        | «      S )N)r   ÚBASE_URL)Úrel_urls    ú&/root/gov_crawler/crawl_jinjiang_v3.pyÚget_detail_urlr      s   € Ü”8˜WÓ%Ð%ó    c                 ó–  — ddddddddd	|d
digddgigg dœdœ}| j                  t        |d¬«      }|j                  dk7  rt        d|› d|j                  › �«       g dfS |j	                  «       }|j                  d«      st        d|› d�«       g dfS |d   j                  dg «      }t        |d   j                  dd«      «      }||fS )u   è°ƒç”¨SSP APIèŽ·å�–ä¸€é¡µåˆ—è¡¨Ú 000000008fd72c27018fdd69fb8b0002Ú	WCMDOCAPIéd   Ú Úallz docorderpri desc,docreltime descÚsmartÚpublishyearÚYÚeqé
   ÚinÚ51723)Ú	docstatusÚchnlidr   )ÚsiteIdÚapiNameÚpageSizeÚrelevanceFieldÚrelevanceTypeÚ	sortFieldÚ	matchModeÚaggregateFieldÚ
isCollapseÚpageÚfilteré   )ÚjsonÚtimeoutéÈ   z  [ERROR] API page z: HTTP r   Údataz: no data in responseÚresultÚtotal)ÚpostÚAPI_URLÚstatus_codeÚprintr(   ÚgetÚint)Úsessionr%   ÚpayloadÚrespr+   r,   r-   s          r
   Úfetch_list_pager7      sÿ   € ð 5ØØØØØ7ØØ'ØØà ˜*˜Ø˜w˜iÐ(Ð)Øñ
ñ€Gð" �<‰<œ g°rˆ<Ó:€DØ×Ñ˜3ÒÜÐ# D 6¨°×1AÑ1AÐ0BÐCÔDØ�1ˆuˆà�9‰9‹;€DØ�8‰8�FÔÜÐ# D 6Ð)>Ð?Ô@Ø�1ˆuˆà�&‰\×Ñ˜h¨Ó+€FÜ��V‘× Ñ  ¨!Ó,Ó-€EØ�5ˆ=Ðr   c                 ó  — 	 |j                  | d¬«      }|j                  dk7  ryt        |j                  d«      }|j	                  d«      }|s|j	                  d«      }|rt        |«      nd}|j                  d	d
di¬«      }|r$|j                  d«      r|d   j                  «       nd}|j                  d	d
di¬«      }|r$|j                  d«      r|d   j                  «       nd}	|||	fS # t        $ r
}
Y d}
~
yd}
~
ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µHTMLæ­£æ–‡r'   )r)   r*   )r   NNzhtml.parserzdiv.TRS_Editorzdiv.article_contentr   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentNÚPubDate)	r2   r0   r   ÚtextÚ
select_oneÚstrÚfindÚstripÚ	Exception)Úurlr4   r6   ÚsoupÚcontent_divr=   Ú
meta_titleÚtitleÚ	meta_dateÚdateÚes              r
   Úfetch_detail_contentrM   ;   sý   € ðØ�{‰{˜3¨ˆ{Ó+ˆØ×Ñ˜sÒ"Ø!Ü˜TŸY™Y¨Ó6ˆØ—o‘oÐ&6Ó7ˆÙØŸ/™/Ð*?Ó@ˆKÙ&1”#�kÔ"°rˆà—Y‘Y˜v¨f°nÐ-E�YÓFˆ
Ù1;À
ÇÁÈyÔ@Y�
˜9Ñ%×+Ñ+Ô-Ð_cˆØ—I‘I˜f¨V°YÐ,?�IÓ@ˆ	Ù/8¸Y¿]¹]È9Ô=Uˆy˜Ñ#×)Ñ)Ô+Ð[_ˆØ˜˜tÐ#Ð#øÜò Üûðús   ‚"C- ¥CC- Ã-	D Ã;D c                  ój  — t        d«       t        dt        › �«       t        j                  «       } | j                  j                  t        «       t        d«       t        | d«      \  }}|st        d«       y t        d|› d|dz   d	z  › d
�«       g }|}t        dt        |«      › d|d   d   d d › d|d   d   d d › d�«       |dz   d	z  }t        d|dz   «      D ]}  }t        | |«      \  }}|st        d|› d�«        n[|j                  |«       t        d|› dt        |«      › d|d   d   d d › d|d   d   d d › d�	«       t        j                  d«       Œ t        dt        |«      › d�«       t        d«       t        j                  t        «      }	|	j!                  «       }
|
j#                  d«       d}d}d}t%        |«      D �]Ô  \  }}|j'                  dd«      }t)        |j'                  dd«      «      dz  }dd l}|dkD  r*|j*                  j-                  |«      j/                  d «      nd}|j'                  d!d«      }|s|dz  }Œ†|j1                  d"«      rt3        t4        |dd  «      }n!|j1                  d#«      st3        t4        |«      }t        d$|dz   › d%t        |«      › d&|› d'|d d( › d)�	d'¬*«       t6        j8                  j;                  «        t=        || «      \  }}}|rt        |j?                  «       «      d+k  r2|xs d}t        d,t        |j?                  «       «      › d-�«       |dz  }n&t        d.t        |j?                  «       «      › d-�«       |xs |}|xs |}	 |
j#                  d/|||t@        |f«       |
jB                  dkD  r|dz  }�Œ× |	jG                  «        |	jI                  «        t        d1d2› �«       t        d3|› d4|› d5�«       t        d6t        |«      |z
  |z
  › d7|› d�«       t        d2› «       y # tD        $ r}t        d0|› �«       Y d }~�Œcd }~ww xY w)8Nu;   ===== æ™‹æ±Ÿå¸‚-å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»· çˆ¬è™« =====zAPI: u#   
--- ç¬¬1æ­¥: èŽ·å�–åˆ—è¡¨(API) ---é   u   APIæ— æ•°æ�®ï¼Œé€€å‡ºu   æ€»è®°å½•: u   , æ¯�é¡µ100æ�¡, å…±éc   r   u   é¡µu     [OK] ç¬¬1é¡µ: u    æ�¡ [éÿÿÿÿÚdoctitler'   z ~ r   ú]é   u     [END] ç¬¬u   é¡µ: æ— æ•°æ�®u
     [OK] ç¬¬u   é¡µ: g      à?u   
å…±èŽ·å�–: u    æ�¡u!   
--- ç¬¬2æ­¥: èŽ·å�–è¯¦æƒ…é¡µ ---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
    )r   Ú
docreltimeiè  z%Y-%m-%dÚ	docpuburlz./Úhttpz  [ú/z] ú é(   z...)Úendr*   zSHORT(ú)zOK(zjINSERT OR IGNORE INTO gov_raw (title, content, source_url, site_name, publish_date) VALUES (?, ?, ?, ?, ?)z    [DB ERROR] ú
z2==================================================u   å®Œæˆ�ï¼�æ€»è®¡: u    æ�¡å…¥åº“ (è·³è¿‡u
   æ�¡æ— URL)u   æœ‰å†…å®¹: u    æ�¡, SHORT: )%r1   r/   ÚrequestsÚSessionÚheadersÚupdateÚHEADERSr7   ÚlenÚrangeÚextendÚtimeÚsleepÚsqlite3ÚconnectÚ	SEARCH_DBÚcursorÚexecuteÚ	enumerater2   r3   ÚdatetimeÚfromtimestampÚstrftimeÚ
startswithr   r   ÚsysÚstdoutÚflushrM   rC   Ú	SITE_NAMEÚrowcountrD   ÚcommitÚclose)r4   Úpage1_resultsr-   Ú	all_itemsÚall_resultsÚtotal_pagesr%   ÚresultsÚ_ÚconnÚcÚinsertedÚshort_countÚ
skip_countÚidxÚitemrI   Útsrn   rK   Ú
detail_urlr=   Ú	det_titleÚdet_dateÚfinal_titleÚ
final_daterL   s                              r
   ÚmainrŒ   O   su  € Ü	ÐGÔIÜ	ˆE”'�Ð
Ôä×ÑÓ €GØ‡O�O×Ñœ7Ô#ô 
Ð
0Ô1ô +¨7°AÓ6Ñ€M�5ÙÜÐ%Ô&Øä	ˆK˜�wÐ1°5¸2±:À#Ñ2EÐ1FÀcÐ
JÔKà€IØ€KÜ	ÐœS Ó/Ð0°°}ÀRÑ7HÈÑ7TÐUXÐVXÐ7YÐ6ZÐZ]Ð^kÐlmÑ^nÐoyÑ^zÐ{~Ð|~Ð^ð  ^Að  ABð  Cô  Dà˜2‘: #Ñ%€KÜ�a˜ q™Ó)ò ˆÜ$ W¨dÓ3‰
ˆ�ÙÜ�K ˜v ^Ð4Ô5ÙØ×Ñ˜7Ô#Ü�
˜4˜& ¤c¨'£l ^°6¸'À"¹+ÀjÑ:QÐRUÐSUÐ:VÐ9WÐWZÐ[bÐcdÑ[eÐfpÑ[qÐruÐsuÐ[vÐZwÐwxÐyÔzÜ�
‰
�3�ðô 
ˆMœ#˜kÓ*Ð+¨4Ð
0Ô1ô 
Ð.Ô0ä�?‰?œ9Ó%€DØ�‰‹€AØ‡I�Ið 	ô 
ð €HØ€KØ€Jä˜{Ó+ó ()‰	ˆˆTà—‘˜ RÓ(ˆä�—‘˜,¨Ó*Ó+¨dÑ2ˆÛØKMÐPQÊ6ˆx× Ñ ×.Ñ.¨rÓ2×;Ñ;¸JÔGÐWYˆð —X‘X˜k¨2Ó.ˆ
ÙØ˜!‰OˆJØð × Ñ  Ô&Ü ¤¨:°a°b¨>Ó:‰JØ×&Ñ& vÔ.Ü ¤¨:Ó6ˆJä��C˜‘E�7˜!œC Ó,Ð-¨R°¨v°Q°u¸S¸b°z°lÀ#ÐFÈCÕPÜ�
‰
×ÑÔä';¸JÈÓ'PÑ$ˆ�˜HÙœ#˜gŸm™m›oÓ.°Ò4Ø’m ˆGÜ�Fœ3˜wŸ}™}›Ó/Ð0°Ð2Ô3Ø˜1Ñ‰Kä�Cœ˜GŸM™M›OÓ,Ð-¨QÐ/Ô0àÒ( 5ˆØÒ% ˆ
ð	)Ø�I‰Ið  CØ" G¨Z¼ÀJÐOôQà�z‰z˜AŠ~Ø˜A‘�ùðM()ðT 	‡K�K„MØ‡J�J„Lä	ˆBˆvˆhˆ-ÔÜ	Ð˜h˜ZÐ'9¸*¸ÀZÐ
PÔQÜ	ˆKœ˜KÓ(¨Ñ4°ZÑ?Ð@ÀÈkÈ]ÐZ^Ð
_Ô`Ü	ˆVˆHÕøô ò 	)Ü�O A 3Ð'×(Ò(ûð	)ús   Í0/PÐ	P2ÐP-Ð-P2Ú__main__)Ú__doc__rr   r(   rf   r^   rh   ÚreÚbs4r   Úurllib.parser   r   r/   ru   rj   rb   r   r7   rM   rŒ   Ú__name__© r   r
   ú<module>r”      sm   ðñ÷ .× -× -Ý Ý  àC€Ø
B€Ø€	Ø"€	ð QØ&Ø-ñ€ò&òòBò(bðH ˆzÒÙ…Fð r   