Ë
    ²Ž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mZmZ ej                  j                  dej                  j                  ej                  j                  e«      «      «       ddlmZ  ej                  «        ed¬«      z
  j!                  d«      ZdZd	d
dœZdZdZdZdZd„ Zd„ Zdd„Zedk(  rU ej8                  «       Zej=                  ded¬«       ejA                  «       Z! ee!jD                  ¬«      Z# e$de#› d�«       yy)u¯  crawl_bzzjcs_tzgg.py - æ»¨å·žä¸­ä»‹è¶…å¸‚-é€šçŸ¥å…¬å‘Š (bzzjcs.cn)

ç«™ç‚¹: http://bzzjcs.cn/tzgg/list (æ»¨å·žä¸­ä»‹è¶…å¸‚ç½‘ç«™, Vue SPA)
CMS: JEECG ä½Žä»£ç �å¹³å�°, å‰�ç«¯ SPA + REST API
åˆ—è¡¨API: GET http://222.134.12.11:8094/jeecg-zjcs/news/apiNews/list
  params: catid=1537596722527481858 (é€šçŸ¥å…¬å‘Šæ �ç›®), column=dtime, order=desc, pageNo, pageSize=20
  è¿”å›ž: result.records[] (id/title/dtime/catid/...), result.total=609 (31é¡µ)
è¯¦æƒ…API: GET http://222.134.12.11:8094/jeecg-zjcs/news/apiNews/queryById?id={id}
  è¿”å›ž: result.body (HTMLæ­£æ–‡), result.title, result.dtime
æ³¨æ„�: åˆ—è¡¨æŽ¥å�£ body=None, æ­£æ–‡å¿…é¡»èµ° queryById; è¯¦æƒ…æŽ¥å�£éœ€è¦�ç›´æŽ¥ GET(æ— token)
é    N)ÚdatetimeÚ	timedelta)Úpush_to_searchdbiG  )Údaysz%Y-%m-%du   æ»¨å·žä¸­ä»‹è¶…å¸‚-é€šçŸ¥å…¬å‘Šz6Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0zhttp://bzzjcs.cn/tzgg/list)z
User-AgentÚRefererz%http://222.134.12.11:8094/jeecg-zjcs/Ú1537596722527481858é   ia  c           	      ó2  — t         dz   }t        dd| t        dœ}	 t        j                  ||dt
        d¬«      }|j                  «       }|j	                  di «      j	                  d	g «      }g }|D ]|  }|j	                  d«      xs dj                  «       }	|j	                  d«      xs d}
|
r|
d d nd}|j                  |j	                  dd«      d|j	                  dd«      › �||	dœ«       Œ~ |S # t        $ r}t        d
| › d|› �«       g cY d }~S d }~ww xY w)Núnews/apiNews/listÚdtimeÚdesc©ÚcatidÚcolumnÚorderÚpageNoÚpageSize©é   r	   F©ÚparamsÚtimeoutÚheadersÚverifyÚresultÚrecordsz    [WARN] list page z error: ÚtitleÚ é
   Úidz http://bzzjcs.cn/tzgg/detail?id=)r    ÚurlÚpub_dater   )ÚAPI_BASEÚCATIDÚ	PAGE_SIZEÚrequestsÚgetÚHEADERSÚjsonÚ	ExceptionÚprintÚstripÚappend)Úpage_idxr!   r   ÚrÚdr   ÚeÚresultsÚrecr   r   r"   s               ú&/root/gov_crawler/crawl_bzzjcs_tzgg.pyÚ
fetch_listr5      s'  € Ü
Ð(Ñ
(€CÜ¨¸&Ø ¬iñ9€FðÜ�L‰L˜ V°WÄgÐV[Ô\ˆØ�F‰F‹HˆØ—%‘%˜ "Ó%×)Ñ)¨)°RÓ8ˆð €GØò 	ˆØ—‘˜Ó!Ò' R×.Ñ.Ó0ˆØ—‘˜Ó Ò& BˆÙ!&�5˜˜"‘:¨BˆØ�‰Ø—'‘'˜$ Ó#Ø5°c·g±g¸dÀBÓ6GÐ5HÐIØ Øñ	
õ 	ð		ð €Nøô ò ÜÐ% h Z¨x¸°sÐ;Ô<Ø�	ûðús   ›AC0 Ã0	DÃ9DÄDÄDc                 óx  — t         dz   }	 t        j                  |d| d   idt        d¬«      }|j	                  «       }|j                  d«      xs i }|j                  d«      xs | d   j                  «       }|j                  d	«      xs d}|j                  «       s|dfS ||fS # t
        $ r
 | d   dfcY S w xY w)
z0rec: {id,url,pub_date,title} -> (title, content)znews/apiNews/queryByIdr    r   Fr   r   r   r   Úbody)r#   r&   r'   r(   r)   r*   r,   )r3   r!   r/   r0   r   r   r7   s          r4   Úfetch_detailr8   4   sÃ   € ä
Ð-Ñ
-€Cð Ü�L‰L˜ d¨C°©IÐ%6ÀÜ!(°ô8ˆà�F‰F‹HˆØ—‘�x“Ò& Bˆð �Z‰Z˜Ó Ò0 C¨¡L×7Ñ7Ó9€EØ�:‰:�fÓÒ# €DØ�:‰:Œ<à�bˆyÐØ�$ˆ;Ðøô ò  Ø�7‰|˜RÐÒð ús   ‹AB& Â&B9Â8B9c                 ó²  — g }t        «       }d}d}|t        | |«      k  �rOt        |«      }|s�n@|dk(  r‰	 t        j                  t
        dz   t        dddt        dœdt        d¬	«      }|j                  «       j	                  d
i «      j	                  dd«      }|t        z   dz
  t        z  }t        d|› d|› d�«       t        d|› dt        |«      › d�«       |D ]|  }|d   r|d   t        k  rŒ|d   |v rŒ|j                  |d   «       t        |«      \  }	}
|	s|d   }	|
j!                  «       sŒW|j#                  |	|d   |d   |d   t$        |
ddœ«       Œ~ |dz  }|t        | |«      k  r�ŒOt        dt        |«      › d�«       |D �cg c]  }|d   j!                  «       sŒ|‘Œ }}|rt'        |d«       t        |«      S # t        $ r Y �Œw xY wc c}w )Né   iç  r   r   r   r   r   Fr   r   Útotalr   z  total=u    å…±u   é¡µz  Page z: z itemsr"   r!   r   r   )r   r!   Ú
source_urlr"   Ú	site_nameÚcontentÚsummaryz	  Total: r>   Úbzzjcs_tzgg)ÚsetÚminr5   r&   r'   r#   r$   r%   r(   r)   r+   r*   ÚlenÚCUTOFFÚaddr8   r,   r-   Ú	SITE_NAMEr   )Ú	max_pagesr   ÚseenÚpageÚtotal_pagesÚitemsr/   r;   Úitr   r>   Úvalids               r4   ÚrunrN   E   sþ  € Ø€GÜ‹5€DØ€DØ€KØ
”#�i Ó-Ó
-Ü˜4Ó ˆÙÙà�1Š9ð	Ü—L‘L¤Ð,?Ñ!?Ü27À7ÐU[Ø34Ä)ñ)Mà)0¼'È%ôQ�ð Ÿ™›Ÿ™ X¨rÓ2×6Ñ6°wÀÓB�Ø$¤yÑ0°1Ñ4¼ÑB�Ü˜   t¨K¨=¸Ð<Ô=ô 	�˜�v˜R¤ E£
˜|¨6Ð2Ô3Øò 	ˆBØ�*Š~ " Z¡.´6Ò"9ØØ�%‰y˜DÑ ØØ�H‰H�R˜‘YÔÜ)¨"Ó-‰NˆE�7ÙØ˜7™�Ø—=‘=”?ØØ�N‰NØ r¨%¡yÀÀ5Á	Ø˜z™NÜ&°7Àrñõ ð	ð  	�‰	ˆðC ”#�i Ó-Ô
-ôD 
ˆI”c˜'“l�^ 6Ð
*Ô+ØÖ8�1 1 Y¡<×#5Ñ#5Õ#7ŠQÐ8€EÐ8ÙÜ˜ Ô.Üˆu‹:Ðøô1 ò Úðüò* 9s   ¶BG ÆGÆ%GÇ	GÇGÚ__main__z--pagesé   )ÚtypeÚdefault)rG   zDone: z records)r   )%Ú__doc__ÚsysÚosr&   Úargparser)   r   r   ÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   ÚnowÚstrftimerD   rF   r(   r#   r$   r%   ÚTOTALr5   r8   rN   Ú__name__ÚArgumentParserÚapÚadd_argumentÚintÚ
parse_argsÚargsÚpagesÚcntr+   © ó    r4   ú<module>rk      sú   ðñ
÷ )× (Ó (ß (à ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (à
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€Ø-€	ØQØ2ñ4€à2€Ø€Ø€	Ø€òò0ó"+ðZ ˆzÒØ	 ˆ×	 Ñ	 Ó	"€BØ‡O�O�I C°€OÔ3Ø�=‰=‹?€DÙ
˜Ÿ
™
Ô
#€CÙ	ˆF�3�%�xÐ
 Õ!ð rj   