Ë
    ¸¬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ZdZdZ	dZ
ej                  j                  dej                  j                  ej                  j                  ej                  j!                  e«      «      d«      «      Zdd	d
dœZdZdZd„ Zd„ Zd„ Zd„ Zdd„Zedk(  r5dZ eej<                  «      dkD  r eej<                  d   «      Z ee«       yy)uf   
çŸ³å®¶åº„æ–°é—»ç½‘ (news.sjzdaily.com.cn) çˆ¬è™« - å…¬ç¤ºå…¬å‘Šæ �ç›®
JSON API + é�™æ€�HTMLè¯¦æƒ…é¡µ
é    Nu   çŸ³å®¶åº„æ–°é—»ç½‘znews.sjzdaily.com.cnzhttp://news.sjzdaily.com.cnÚDB_PATHz	search.dbzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languageé   é2   c                 óö  — t         › d| › d�}	 t        j                  |t        d¬«      }d|_        |j                  «       }g }|j                  d
g «      D ]×  }|j                  dd«      j                  «       }|j                  dd«      j                  «       }|j                  dd«      j                  «       }|r|sŒh|j                  d«      s&|j                  d«      r
t         › |› �n
t         › d|› �}|j                  |j                  d«      j                  «       ||r|d	d nddœ«       ŒÙ t        d| dz   › dt        |«      › d�«       |S # t        $ r }t        d| dz   › d|› �«       g cY d	}~S d	}~ww xY w)u"   èŽ·å�–JSONåˆ†é¡µæ•°æ�® (0-indexed)z/428/NewsList_z.jsoné   ©ÚheadersÚtimeoutúutf-8u     [ERROR] ç¬¬é   u   é¡µJSONè¯·æ±‚å¤±è´¥: NÚinfoÚtitleÚ ÚurlÚ	issueTimeÚhttpú/u   â€‹é
   )r   r   Úpublish_dateu     ç¬¬u   é¡µ: æ‰¾åˆ° õ    æ�¡)ÚBASE_URLÚrequestsÚgetÚHEADERSÚencodingÚjsonÚ	ExceptionÚprintÚstripÚ
startswithÚappendÚlen)	Úpager   ÚrespÚdataÚeÚitemsÚitemr   Ú
issue_times	            ú#/root/gov_crawler/crawl_sjzdaily.pyÚfetch_list_jsonr,      sp  € äˆJ�n T F¨%Ð
0€CðÜ�|‰|˜C¬¸"Ô=ˆØˆŒØ�y‰y‹{ˆð
 €EØ—‘˜ Ó$ò ˆØ—‘˜ "Ó%×+Ñ+Ó-ˆØ�h‰h�u˜bÓ!×'Ñ'Ó)ˆØ—X‘X˜k¨2Ó.×4Ñ4Ó6ˆ
Ù™CØà�~‰~˜fÔ%Ø(+¯©°sÔ(;”X�J˜s˜eÑ$ÄHÀ:ÈQÈsÈeÐATˆCØ�‰Ø—[‘[ Ó*×0Ñ0Ó2ØÙ/9˜J s¨™O¸rñ
õ 	ðô 
ˆE�$�q‘&�˜¤c¨%£j \°Ð
6Ô7Ø€Løô+ ò Ü�˜d 1™f˜XÐ%:¸1¸#Ð>Ô?Ø�	ûðús   Ž3E Å	E8ÅE3Å-E8Å3E8c                 ó  — 	 t        j                  | t        d¬«      }d|_        |j                  }i }t        j                  d|«      }|r"|j                  d«      j                  «       |d	<   d
D ]ß  }t        j                  d|z   dz   |t        j                  «      }|sŒ1|j                  d«      j                  «       }t        j                  dd|t        j                  ¬«      }t        j                  dd|t        j                  ¬«      }t        j                  ddt        › �|«      }t        j                  ddt        › �|«      }||d<    n d|vrd|d<   |S # t
        $ r}t        d| › d|› �«       Y d}~yd}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µæ­£æ–‡r   r	   r   u"       [ERROR] è¯¦æƒ…é¡µè¯·æ±‚å¤±è´¥ z: Nu/   <title>([^<]+?)(?:_çŸ³å®¶åº„æ–°é—»ç½‘)?</title>r   r   )Únews_txtÚnewscontentznews-contentzarticle-contentÚarticleÚcontentzclass="z"[^>]*>(.*?)</div>z<script[^>]*>.*?</script>r   )Úflagsz<style[^>]*>.*?</style>zsrc="(?!https?://)zsrc="zhref="(?!https?://)zhref="r1   )r   r   r   r   Útextr   r   ÚreÚsearchÚgroupr    ÚDOTALLÚsubr   )	r   r%   Úhtmlr'   ÚresultÚtitle_matchÚ
class_nameÚcontent_matchÚcontent_htmls	            r+   Úfetch_detailr?   =   st  € ðÜ�|‰|˜C¬¸"Ô=ˆØˆŒØ�y‰yˆð
 €Fô —)‘)ÐNÐPTÓU€KÙØ%×+Ñ+¨AÓ.×4Ñ4Ó6ˆˆw‰ð kò ˆ
ÜŸ	™	 *¨zÑ"9Ð<PÑ"PÐRVÔXZ×XaÑXaÓbˆÚØ(×.Ñ.¨qÓ1×7Ñ7Ó9ˆLäŸ6™6Ð">ÀÀLÔXZ×XaÑXaÔbˆLÜŸ6™6Ð"<¸bÀ,ÔVX×V_ÑV_Ô`ˆLäŸ6™6Ð"7¸5ÄÀ
Ð9KÈ\ÓZˆLÜŸ6™6Ð"8¸FÄ8À*Ð:MÈ|Ó\ˆLà ,ˆF�9ÑÙðð ˜ÑØˆˆyÑà€Møô; ò ÜÐ2°3°%°r¸!¸Ð=Ô>Üûðús   ‚/E Å	F Å%E;Å;F c                  óš   — t        j                  t        «      } | j                  «       }|j	                  d«       | j                  «        | S )u   èŽ·å�–æ•°æ�®åº“è¿žæŽ¥a4  CREATE TABLE IF NOT EXISTS gov_raw (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        title TEXT,
        content TEXT,
        publish_date TEXT,
        url TEXT UNIQUE,
        site_name TEXT,
        source TEXT,
        attachments TEXT,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    ))Úsqlite3Úconnectr   ÚcursorÚexecuteÚcommit)ÚconnÚcs     r+   Úget_dbrH   c   s<   € ä�?‰?œ7Ó#€DØ�‰‹€AØ‡I�Ið 
	ô 

ð 	‡K�K„MØ€Kó    c           
      ó”  — | j                  «       }	 |j                  d|d   |j                  dd«      |j                  dd«      |d   t        t        › d�f«       |j                  dkD  rt        d	|d   d
d › d�«       nt        d|d   d
d › d�«       | j                  «        y
# t        $ r}t        d|› �«       Y d
}~y
d
}~ww xY w)u   ä¿�å­˜å�•æ�¡æ•°æ�®z�
            INSERT OR IGNORE INTO gov_raw (title, content, publish_date, url, site_name, source)
            VALUES (?, ?, ?, ?, ?, ?)
        r   r1   r   r   r   u    - å…¬ç¤ºå…¬å‘Šr   u       âœ… æ–°å¢ž: Nr   ú...u       â�­ï¸�  å·²å­˜åœ¨: u       â�Œ å†™å…¥å¤±è´¥: )rC   rD   r   Ú	SITE_NAMEÚrowcountr   rE   r   )rF   r)   rG   r'   s       r+   Ú	save_itemrN   v   sÖ   € à�‰‹€Að,Ø	�	‰	ð ð �‰MØ�H‰H�Y Ó#Ø�H‰H�^ RÓ(Ø�‰KÜÜˆk˜Ð)ð
ô
	ð �:‰:˜Š>ÜÐ$ T¨'¡]°3°BÐ%7Ð$8¸Ð<Õ=äÐ+¨D°©M¸#¸2Ð,>Ð+?¸sÐCÔDØ�‰�øÜò ,ÜÐ& q cÐ*×+Ñ+ûð,ús   ’BB& Â&	CÂ/CÃCc                 óÔ  — t        dd› �«       t        dt        › dt        › d�«       t        dd› �«       t        «       }| r| nt        }t        dt        › dt
        › d�«       t        |«      D ]Ý  }t        |«      }|sŒt        d	|d
z   › dt        |«      › d�«       t        |«      D ]”  \  }}|d   r|d   dd nd}t        d|d
z   › dt        |«      › d|› d�«       t        |d   «      }|r.|j                  d«      r|d   |d<   |j                  dd«      |d<   t        ||«       t        j                  d«       Œ– | sŒÔ|d
z   | k\  sŒÝ n |j                  «        t!        j"                  t$        «      }	|	j'                  dt        f«      j)                  «       d   }
|	j                  «        t        dd› �«       t        dt        › d|
› dt$        › �«       t        dd› �«       y)u   ä¸»è¿�è¡Œå‡½æ•°ú=z2==================================================u     ðŸŒ� z (u   ) çˆ¬è™«u
   
ðŸ“Š å…± u    é¡µ, æ¯�é¡µ r   u	   
ðŸ“„ ç¬¬r   u   é¡µ (u    æ�¡)r   Nr   u   (æ— æ ‡é¢˜)u     â–¶ï¸�  [r   z] rK   r   r1   r   g      à?z.SELECT COUNT(*) FROM gov_raw WHERE site_name=?r   z
=u     âœ… å®Œæˆ�! u    å…±å¯¼å…¥ u    æ�¡æ•°æ�®åˆ° )r   rL   ÚSITE_DOMAINrH   ÚTOTAL_PAGESÚITEMS_PER_PAGEÚranger,   r#   Ú	enumerater?   r   rN   ÚtimeÚsleepÚcloserA   rB   r   rD   Úfetchone)Ú	max_pagesrF   ÚpagesÚpr(   Úidxr)   Útitle_displayÚdetailÚconn2Úcounts              r+   Úrunrb   Ž   s×  € ä	ˆAˆfˆXˆ,ÔÜ	ˆG”I�;˜b¤ ¨XÐ
6Ô7Ü	ˆAˆfˆXˆ,Ôä‹8€Dá"‰I¬€EÜ	ˆKœ�} M´.Ð1AÀÐ
FÔGä�5‹\ò ˆÜ Ó"ˆÙØä�
˜1˜Q™3˜%˜u¤S¨£Z L°Ð6Ô7Ü" 5Ó)ò 		‰IˆC�Ø26°w²-˜D ™M¨#¨2Ñ.À]ˆMÜ�K  A¡˜w a¬¨E«
 |°2°m°_ÀCÐHÔIÜ! $ u¡+Ó.ˆFÙØ—:‘:˜gÔ&Ø$*¨7¡O�D˜‘MØ"(§*¡*¨Y¸Ó";��Y‘Ü�d˜DÔ!Ü�J‰J�s�Oð		ò ˜˜Q™ )Ó+Ùð'ð* 	‡J�J„Lô �O‰OœGÓ$€EØ�M‰MÐJÌYÈLÓY×bÑbÓdÐefÑg€EØ	‡K�K„MÜ	ˆC�ˆxˆ.ÔÜ	ˆNœ9˜+ [°°°~ÄgÀYÐ
OÔPÜ	ˆAˆfˆXˆ,ÕrI   Ú__main__r   )N) Ú__doc__r4   r   r   rA   ÚosÚsysrV   rL   rQ   r   Úenvironr   ÚpathÚjoinÚdirnameÚabspathÚ__file__r   r   rR   rS   r,   r?   rH   rN   rb   Ú__name__rZ   r#   ÚargvÚint© rI   r+   ú<module>rq      sæ   ðñó 
Û Û Û Û 	Û 
Û à €	Ø$€Ø(€à
�*‰*�.‰.˜ B§G¡G§L¡L°·±·±ÀÇÁÇÁÐQYÓAZÓ1[Ð]hÓ$iÓ
j€ð DØOØ0ñ€ð €Ø€òò>#òLò&,ó0(ðV ˆzÒØ€IÙ
ˆ3�8‰8ƒ}�qÒÙ˜Ÿ™ ™Ó$ˆ	Ùˆ	…Nð	 rI   