Ë
    ¸¬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dlZddl	m
Z
 ej                  j                  ej                  j                  e«      «      Z ej                   dd«      ZdZdZdZd	Zd
ZdZdZdZddiZdZdZdZdZddddœZd„ Z d„ Z!d„ Z"d3d„Z#e$dk(  �rÂddl%Z% e%jL                  d¬«      Z'e'jQ                  ddd¬«       e'jQ                  d e)dd!¬"«       e'jQ                  d#e)dd$¬"«       e'jQ                  d%d&e)dd'¬(«       e'jU                  «       Z+ ejX                  e«       e+jZ                  reZ.n4e+j^                  �e+j^                  Z.ne+j`                  �e+j`                  Z.neZ. e1e.e«      Z. e2d)e.efz  «        e3de.dz   «      D ]µ  Z4	  e e4«      Z5 e!e5«      Z6e6s e2d*e4z  «        n• e2d+e4 e7e6«      fz  «        e8e6«      D ]u  \  Z9\  Z:Z;Z<e+jz                  dkD  r&e9e+jz                  k\  r e2d,e+jz                  z  «        n9 e"e;«      \  Z>Z?Z@ZAe>xs e:ZBe?xs e<ZC e#eBe;eCe@eA«        ejˆ                  d-«       Œw Œ·  e2d/ed0   ed1   ed2   fz  «       yy# eE$ rZF e2d.e4eFfz  «       Y dZF[FŒèdZF[Fww xY w)4uh  
shayang.gov.cn æ²™æ´‹åŽ¿æ”¿åºœ - é€šçŸ¥å…¬å‘Šçˆ¬è™«
==========================================
TRS CMS / jPage API åˆ†é¡µï¼Œè¯¦æƒ…é¡µ requests ç›´è¿žã€‚

æ �ç›®: col5449ï¼ˆé€šçŸ¥å…¬å‘Šï¼‰

ç”¨æ³•:
  python3 crawl_shayang.py               # å¢žé‡�ç¬¬1é¡µ
  python3 crawl_shayang.py 2             # çˆ¬2é¡µ
  python3 crawl_shayang.py --full        # å…¨é‡�4é¡µ
é    N)ÚBeautifulSoupÚ	SEARCH_DBz/mnt/data/search.dbõ   æ²™æ´‹åŽ¿äººæ°‘æ”¿åºœzwww.shayang.gov.cnÚ5449Ú36Ú56733u   é€šçŸ¥å…¬å‘Šu   æ¹–åŒ—-è�†é—¨u   æ”¿åºœå…¬å‘Šz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z9https://www.shayang.gov.cn/module/web/jpage/dataproxy.jspzhttps://www.shayang.gov.cné   é   )ÚnewÚskipÚerrorsc                 ó¨   — t        | «      t        dt        t        dddœ}t	        j
                  t        |t        d¬«      }d|_        |j                  S )u   é€šè¿‡jPage APIèŽ·å�–åˆ—è¡¨é¡µú/r   Ú0)ÚpageÚwebidÚpathÚcolumnidÚunitidÚwebnameÚpermissiontypeé<   )ÚdataÚheadersÚtimeoutúutf-8)
ÚstrÚWEB_IDÚ	COLUMN_IDÚUNIT_IDÚrequestsÚpostÚAPI_URLÚHEADERSÚencodingÚtext)Úpage_numr   Úrs      ú"/root/gov_crawler/crawl_shayang.pyÚfetch_list_pager*   '   sJ   € ô �H“ÜØÜÜØ*Øñ€Dô 	�‰”g D´'À2ÔF€AØ€A„JØ�6‰6€Mó    c                 ó´  — g }t        j                  d| t         j                  «      }|D ]«  }t        |d«      }|j	                  d«      }|j	                  d«      }|sŒ4|j                  dd«      j                  «       }|j                  d¬«      }|j                  d	«      r|nt        |z   }	|r|j                  d¬«      nd}
|j                  ||	|
f«       Œ­ |S )
u(   è§£æž�jPage XMLè¿”å›ž (title, url, date)z&<record><!\[CDATA\[(.*?)\]\]></record>ÚlxmlÚaÚspanÚhrefÚ T©ÚstripÚhttp)ÚreÚfindallÚDOTALLr   ÚfindÚgetr3   Úget_textÚ
startswithÚDETAIL_BASEÚappend)Úxml_textÚitemsÚrecordsÚrecÚsoupÚa_tagr/   r0   ÚtitleÚfull_urlÚdates              r)   Úparse_itemsrG   7   sÅ   € à€Eä�j‰jÐBÀHÌbÏiÉiÓX€GØò 	2ˆÜ˜S &Ó)ˆØ—	‘	˜#“ˆØ�y‰y˜Ó ˆÚØ—9‘9˜V RÓ(×.Ñ.Ó0ˆDØ—N‘N¨�NÓ.ˆEØ#Ÿ™¨vÔ6‘t¼KÈ$Ñ<NˆHÙ04�4—=‘= t�=Ô,¸"ˆDØ�L‰L˜% ¨4Ð0Õ1ð	2ð €Lr+   c                 ó:  — 	 t        j                  | t        d¬«      }d|_        t	        |j
                  d«      }d}|j                  dddi¬	«      }|r$|j                  d
«      r|d
   j                  «       }d}|j                  dddi¬	«      }|rs|j                  d
«      rb|d
   j                  «       }t        j                  d|«      }|r7|j                  d«      ›d|j                  d«      ›d|j                  d«      ›�}d}	d}
|j                  d«      }|rH|j                  ddg«      D ]  }|j                  «        Œ t        |«      }	|j                  d¬«      dd }
|||	|
fS # t         $ r(}t#        d|z  t$        j&                  ¬«       Y d}~yd}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹é   )r   r   r   r-   r1   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentÚPubDatez(\d{4})-(\d{2})-(\d{2})r
   ú-é   é   z#contentÚscriptÚstyleTr2   NéÈ   z    detail error: %s©Úfile)r1   r1   r1   r1   )r!   r9   r$   r%   r   r&   r8   r3   r5   ÚsearchÚgroupÚ
select_oneÚfind_allÚ	decomposer   r:   Ú	ExceptionÚprintÚsysÚstderr)Úurlr(   rB   rD   rJ   rF   Úmeta_dÚrawÚmÚ	body_htmlÚsummaryÚcontent_divÚtagÚes                 r)   Úfetch_detailrj   I   s„  € ð!Ü�L‰L˜¤g°rÔ:ˆØˆŒ
Ü˜QŸV™V VÓ,ˆð ˆØ�y‰y˜¨°Ð'?ˆyÓ@ˆÙ�D—H‘H˜YÔ'Ø˜‘O×)Ñ)Ó+ˆEð ˆØ—‘˜6¨&°)Ð)<�Ó=ˆÙ�f—j‘j Ô+Ø˜Ñ#×)Ñ)Ó+ˆCÜ—	‘	Ð4°cÓ:ˆAÙØ%&§W¡W¨Q¥Z°·±¸µ¸Q¿W¹WÀQ¼ZÐH�ð ˆ	ØˆØ—o‘o jÓ1ˆÙØ"×+Ñ+¨X°wÐ,?Ó@ò  �Ø—‘•ð ä˜KÓ(ˆIØ!×*Ñ*°Ð*Ó6°t¸Ð<ˆGà�d˜I wÐ.Ð.øÜò ÜÐ$ qÑ(¬s¯z©zÕ:Üûðús   ‚E&E) Å)	FÅ2FÆFc                 ó.  — t        j                  t        «      }	 |j                  d| j	                  «       |t
        t        |t        t        t        ||f
«       |j                  «        |j                  dkD  }|sj|rh|j                  d|f«      j                  «       }|rE|d   r|d   j	                  «       dk(  r*|j                  d|||d   f«       |j                  «        d}|r™|j                  d|f«      j                  «       }|rdt        j                  t        «      }	 |j                  d	|d   | j	                  «       t        f«       |j                  «        |j                  «        t        d
xx   dz  cc<   nt        dxx   dz  cc<   |j                  «        y #  Y ŒHxY w# |j                  «        w xY w# t        $ r9}	t        dxx   dz  cc<   t!        d|	z  t"        j$                  ¬«       Y d }	~	Œjd }	~	ww xY w# |j                  «        w xY w)Nz£INSERT OR IGNORE INTO gov_raw (title, page_url, source_url, site_name, publish_date, category, industry, group_name, content, summary) VALUES (?,?,?,?,?,?,?,?,?,?)r   z0SELECT id, content FROM gov_raw WHERE page_url=?r
   r1   z2UPDATE gov_raw SET content=?, summary=? WHERE id=?Tz'SELECT id FROM gov_raw WHERE page_url=?zHINSERT OR IGNORE INTO gov_search(rowid, title, site_name) VALUES (?,?,?)r   r   r   z  DB error: %srV   )Úsqlite3Úconnectr   Úexecuter3   ÚDOMAINÚ	SITE_NAMEÚCATEGORY_NAMEÚINDUSTRYÚGROUPÚcommitÚtotal_changesÚfetchoneÚcloseÚstatsr]   r^   r_   r`   )
rD   Úpage_urlÚpublish_datere   rf   ÚconnÚis_newÚrowÚ_c2ri   s
             r)   Ústore_recordr   o   s¹  € Ü�?‰?œ9Ó%€Dð%Ø�‰ð+ð �[‰[‹]˜H¤f¬i¸ÜœH¤e¨Y¸ðAô		
ð 	�‰ŒØ×#Ñ# aÑ'ˆá™)Ø—,‘,ÐQÐT\ÐS^Ó_×hÑhÓjˆCÙ˜C šF c¨!¡f§l¡l£n¸Ò&:Ø—‘ÐQÐT]Ð_fÐhkÐlmÑhnÐSoÔpØ—‘”Ø�áØ—,‘,ÐHÈ8È+ÓV×_Ñ_ÓaˆCÙÜ—o‘o¤iÓ0�ð Ø—K‘KÐ jØ!$ Q¡¨¯©«¼	Ð BôDà—J‘J”Lð —I‘I”KÜ�%‹L˜AÑŒLä�&‹M˜QÑ‹Mð
 	�
‰
�øðÙûà—I‘I•Kûô ò 5Üˆh‹˜1Ñ‹ÜÐ Ñ"¬¯©×4Ò4ûð5ûð 	�
‰
�úsN   ›DF= Ä#:F! Å3F= Æ!F%Æ#F( Æ(F:Æ:F= Æ=	G?Ç/G:Ç5H Ç:G?Ç?H ÈHÚ__main__u   shayang é€šçŸ¥å…¬å‘Šçˆ¬è™«)Údescriptionz--fullÚ
store_trueu
   å…¨é‡�4é¡µ)ÚactionÚhelpz--pagesu   é¡µæ•°)ÚtypeÚdefaultr„   z--limitu   æ¯�é¡µé™�åˆ¶æ�¡æ•°(0=ä¸�é™�)Únú?u   é¡µæ•°(ç®€å†™))Únargsr…   r†   r„   u   é¡µæ•°: %d (æ€»å…±%dé¡µ)u     ç¬¬%dé¡µ: ç©ºu     ç¬¬%dé¡µ: %dæ�¡u       limit=%d, å�œæ­¢g333333Ó?u     ç¬¬%dé¡µé”™è¯¯: %su"   
å®Œæˆ�! æ–°%d, è·³è¿‡%d, é”™è¯¯%dr   r   r   )r1   r1   )GÚ__doc__Úosr5   r_   ÚtimeÚjsonrl   Úhtmlr!   Úbs4r   r   ÚdirnameÚabspathÚ__file__ÚBASE_DIRÚgetenvr   rp   ro   r   r   r    rq   rs   rr   r$   r#   r<   ÚTOTAL_PAGESÚDEFAULT_PAGESrx   r*   rG   rj   r   Ú__name__ÚargparseÚArgumentParserÚparserÚadd_argumentÚintÚ
parse_argsÚargsÚchdirÚfullÚpages_to_crawlÚpagesr‡   Úminr^   ÚrangeÚpÚxmlr?   ÚlenÚ	enumerateÚidxrD   ra   Údate_from_listÚlimitÚdt_titleÚdt_dateÚbodyrf   Úfinal_titleÚ
final_dateÚsleepr]   ri   © r+   r)   ú<module>r³      sñ  ðñ÷ .× -× -Ó -Û Ý à�7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨8Ó4Ó5€ØˆB�I‰I�kÐ#8Ó9€	à#€	Ø	€Ø€	Ø	€Ø
€Ø€Ø€Ø€Øð  Kð  L€à
E€Ø*€Ø€Ø€Ø˜1¨Ñ*€òò ò$#óL'ðT ˆzÓÛØ$ˆX×$Ñ$Ð1MÔN€FØ
×Ñ˜¨¸LÐÔIØ
×Ñ˜	¨°TÀÐÔIØ
×Ñ˜	¨°QÐ=[ÐÔ\Ø
×Ñ˜ 3¨S¸$ÐEUÐÔVØ×ÑÓ€Dà€B‡H�HˆXÔà‡y‚yØ$‰Ø	�‰Ð	ØŸ™‰Ø	�‰Ð	ØŸ™‰à&ˆá˜¨Ó5€NÙ	Ð
$¨¸Ð'DÑ
DÔEá�1�n qÑ(Ó)ò 3ˆð	3Ù! !Ó$ˆCÙ Ó$ˆEÙÙÐ'¨!Ñ+Ô,ÙÙÐ%¨©C°«J¨Ñ7Ô8Ù5>¸uÓ5Eò  Ñ1�Ñ1�e˜S .Ø—:‘: ’> c¨T¯Z©ZÒ&7ÙÐ0°4·:±:Ñ=Ô>ÙÙ3?ÀÓ3DÑ0�˜' 4¨Ø&Ò/¨%�Ø$Ò6¨�
Ù˜[¨#¨z¸4ÀÔIØ�—
‘
˜3•ð øð3ñ( 
Ð
/°5¸±<ÀÀvÁÐPUÐV^ÑP_Ð2`Ñ
`ÕaðW øðP ò 	3ÙÐ(¨A¨q¨6Ñ1×2Ñ2ûð	3ús   ÆI(Æ:BI(É(JÉ-I?É?J