Ë
    öòkj7  ã                   ó.  — 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 ej                  d«       ddl	m	Z	m
Z
 ddlZdZdZdZdZdZe eej$                  «      k  �r¨ej$                  e   Zej)                  d«      r eej-                  d	d
«      d
   «      Z�nOedk(  r7ed
z    eej$                  «      k  r eej$                  ed
z      «      Zed
z  Z�nej)                  d«      rej-                  d	d
«      d
   Znìedk(  r0ed
z    eej$                  «      k  rej$                  ed
z      Zed
z  Zn·ej)                  d«      rej-                  d	d
«      d
   Zn�edk(  r0ed
z    eej$                  «      k  rej$                  ed
z      Zed
z  Zn[ej)                  d«      rej-                  d	d
«      d
   Zn4edk(  r/ed
z    eej$                  «      k  rej$                  ed
z      Zed
z  Zed
z  Ze eej$                  «      k  r�Œ¨ ede› de› de› �«       e� ede› �«       eZ ej2                  dd«      ZeZdZ e	j:                  «        e
d¬«      z
  j=                  d«      ZddiZ dZ!dd d!d"d#d$ed%œZ"d-d&„Z#d'„ Z$d(„ Z%d)„ Z&d*„ Z'd+„ Z(e)d,k(  r e(«        yy).u˜   æ±Ÿéƒ½åŒºé€šç”¨ - é€šçŸ¥å…¬å‘Š çˆ¬è™« (JPAAS publish-system)
ç«™ç‚¹: jd.yangzhou.gov.cn
æ”¯æŒ� --site-name, --page-id, --script-name å�‚æ•°å®žçŽ°é€šç”¨
é    NÚignore)ÚdatetimeÚ	timedeltau   æ±Ÿéƒ½åŒºæµ¦å¤´é•‡-é€šçŸ¥å…¬å‘ŠÚVDozh0QjlXic3EzTpmlVfzcrawl_jd_common.pyz--pages=ú=é   z--pagesz--site-name=z--site-namez
--page-id=z	--page-idz--script-name=z--script-namez[Config] site_name=z	 page_id=z script_name=z[Config] max_pages=Ú	SEARCH_DBz/root/search.dbzjd.yangzhou.gov.cniG  )Údaysz%Y-%m-%dz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zQhttps://jd.yangzhou.gov.cn/api-gateway/jpaas-publish-server/front/page/build/unitÚbulidstaticÚAgmxeI2t5aGgxplX60MdAÚCU8i6WLXe0BLnem5xuDSqÚcolumnu   åˆ—è¡¨åˆ—è¡¨Únull)Ú	parseTypeÚwebIdÚtplSetIdÚpageTypeÚtagIdÚeditTypeÚpageIdc           
      óZ  — t        t        «      }t        j                  | |dœ«      |d<   t	        d«      D �]Ÿ  }	 t        j                  t        |t        dd¬«      }|j                  dk(  �ri|j                  «       }|j                  di «      j                  d	d
«      }g }t        j                  d|t        j                  «      D ]w  }t        j                  d|«      }	|	sŒ|	j                  d«      j                  «       }
|j!                  dt"        z   |	j                  d«      z   |
|	j                  d«      dœ«       Œy d}t        j                  d|«      }|rt%        |j                  d«      «      }|s=t        j                  d|«      }|r%t%        |j                  d«      «      }||z   dz
  |z  }t'        d| › dt)        |«      › d|› �«       ||fc S �Œ¢ g dfS # t*        $ rD}t'        d| › d|› d|› �t,        j.                  ¬«       t1        j2                  d«       Y d }~�Œïd }~ww xY w)N)ÚpageNoÚpageSizeÚ	paramJsoné   é   F)ÚparamsÚheadersÚtimeoutÚverifyéÈ   ÚdataÚhtmlÚ z<li[^>]*>(.*?)</li>zJhref=\"([^\"]+)\"[^>]*>([^<]+)</a>\s*<span[^>]*>(\d{4}-\d{2}-\d{2})</span>é   zhttps://r   )ÚurlÚtitleÚdater   z class=\"totalpages\"[^>]*>(\d+)<zcount=\"(\d+)\"z  page ú: z items, total_pages=z  [WARN] fetch_list page z retry ©Úfile)ÚdictÚ
API_PARAMSÚjsonÚdumpsÚrangeÚrequestsÚgetÚAPI_URLÚHEADERSÚstatus_codeÚreÚfindallÚDOTALLÚsearchÚgroupÚstripÚappendÚDOMAINÚintÚprintÚlenÚ	ExceptionÚsysÚstderrÚtimeÚsleep)ÚpageÚ	page_sizer   ÚretryÚrÚdr#   ÚitemsÚliÚmr'   Útotal_pagesÚm2Úm3Útotal_itemsÚes                   ú$/root/gov_crawler/crawl_jd_common.pyÚ
fetch_listrT   B   s÷  € Ü”*Ó€FÜŸ*™*°À)Ñ%LÓM€Fˆ;ÑÜ�q“ó ˆð	Ü—‘œW¨V¼WÈbÐY^Ô_ˆAØ�}‰} Ó#Ø—F‘F“H�Ø—u‘u˜V RÓ(×,Ñ,¨V°RÓ8�Ø�ÜŸ*™*Ð%;¸TÄ2Ç9Á9ÓMò 
�BÜŸ	™	ØeØó�Aò Ø !§¡¨£
× 0Ñ 0Ó 2˜ØŸ™Ø#-´Ñ#6¸¿¹À»Ñ#CØ%*Ø$%§G¡G¨A£Jñ&õ ð
ð  �Ü—Y‘YÐBÀDÓI�ÙÜ"% b§h¡h¨q£kÓ"2�KÙ"ÜŸ™Ð#5°tÓ<�BÙÜ&)¨"¯(©(°1«+Ó&6˜Ø'2°YÑ'>ÀÑ'BÀyÑ&P˜Ü˜ ˜v R¬¨E«
 |Ð3GÈÀ}ÐUÔVØ˜kÐ)Ò)ñ3 $ðð@ ˆqˆ5€Løô ò 	ÜÐ-¨d¨V°7¸5¸'ÀÀAÀ3ÐGÌcÏjÉjÕYÜ�J‰J�q�MŠMûð	ús   »B&GÃ"C1GÇ	H*Ç&9H%È%H*c                 óF  — t        d«      D ]Æ  }	 t        j                  | t        dd¬«      }d|_        |j
                  }t        j                  d|t        j                  «      }|r |j                  d«      j                  «       }nIt        j                  d|t        j                  «      }|r |j                  d«      j                  «       }nd	}|c S  y	# t        $ rA}t        d
|› d|› �t        j                  ¬«       t        j                   d«       Y d }~�Œd }~ww xY w)Nr   é   F)r   r   r    zutf-8z�<!--\u6b63\u6587-->\s*<div[^>]*class=\"bt-content[^\"]*zoom[^\"]*clearfix[^\"]*\"[^>]*>(.*?)</div>\s*\n\s*(?:<style|<div class=\"bt-art-assist)r   zY<div[^>]*class=\"bt-content[^>]*>(.*?)</div>\s*\n\s*(?:<style|<div class=\"bt-art-assist)r$   z  [WARN] fetch_detail retry r)   r*   r%   )r0   r1   r2   r4   ÚencodingÚtextr6   r9   r8   r:   r;   rA   r?   rB   rC   rD   rE   )r&   rH   rI   r#   rM   ÚcontentrR   s          rS   Úfetch_detailrZ   g   s  € Ü�q“ò ˆð	Ü—‘˜S¬'¸2ÀeÔLˆAØ ˆAŒJØ—6‘6ˆDÜ—	‘	ð cØ”b—i‘ió!ˆAñ ØŸ'™' !›*×*Ñ*Ó,‘ä—I‘IÐzð  }Aô  CE÷  CLñ  CLó  M�ÙØŸg™g a›j×.Ñ.Ó0‘Gà �GØŠNð!ð( øô ò 	ÜÐ0°°°r¸!¸Ð=ÄCÇJÁJÕOÜ�J‰J�q�MŠMûð	ús   �CCÃ	D Ã6DÄD c                 ó˜  — | syg d¢}i }t        |«      D ]/  \  }}d|› d�}d|› d�||<   t        j                  d|› d�|| «      } Œ1 d	D ]  }t        j                  d|› d�d
| «      } Œ t        j                  dd
| «      } t        j                  dd| «      }t        |j	                  «       d¬«      D ]  \  }}|j                  ||«      }Œ t        j                  dd|«      }|j                  d
«      D �cg c]  }|j                  «       ‘Œ }}d
j                  |«      }t        j                  dd|«      }|j                  «       S c c}w )Nr$   )Útablez/tableÚtrz/trÚtdz/tdÚthz/thÚtbodyz/tbodyÚtheadz/theadÚ__TBLÚ__ú<ú>z(?i)<z[^>]*>)Úpz/pÚdivz/divrL   z/liz/h[1-6]zh[1-6]ú
z(?i)<br\s*/?>z<[^>]+>T)Úreversez\n{3,}z

)	Ú	enumerater6   ÚsubÚsortedrK   ÚreplaceÚsplitr;   Újoin)	r#   Ú
table_tagsÚplaceholdersÚiÚtagÚphrX   ÚlÚliness	            rS   Úextract_textrw   ~   sN  € ÙØÚq€JØ€LÜ˜JÓ'ò 6‰ˆˆ3Ø�Q�C�rˆ]ˆØ˜s˜e 1˜:ˆ�RÑÜ�v‰v˜˜s˜e 6Ð*¨B°Ó5‰ð6ð Lò 8ˆÜ�v‰v˜˜s˜e 6Ð*¨D°$Ó7‰ð8ä�6‰6Ð" D¨$Ó/€DÜ�6‰6�*˜b $Ó'€DÜ˜,×,Ñ,Ó.¸Ô=ò %‰ˆˆCØ�|‰|˜B Ó$‰ð%ä�6‰6�)˜V TÓ*€DØ $§
¡
¨4Ó 0Ö1˜1ˆQ�W‰W�YÐ1€EÐ1Ø�9‰9�UÓ€DÜ�6‰6�)˜V TÓ*€DØ�:‰:‹<Ðùò 2s   Ã6Ec                 ó   — d| v rdS dS )Nz<tabler   r   © )r#   s    rS   Ú	has_tablerz   “   s   € Ø˜DÑ ˆ1Ð' aÐ'ó    c                 ó†  — t        j                  t        «      }|j                  «       }d}| D ]²  }|d   }|d   }|d   }|j	                  dd«      }t        |«      }	|	sŒ2|j                  d|f«       |j                  «       rŒVt        |«      }
|j                  dt        |||||	|	d d	 d
dd|
t        f«       |j                  dkD  sŒš|dz  }t        d|d d › d|› �«       Œ´ |j                  «        |j                  dt        f«       |j                  dt        f«       |j                  «        |j                  «        |S )Nr   r&   r'   r(   Úcontent_htmlr$   z'SELECT id FROM gov_raw WHERE page_url=?z°INSERT OR IGNORE INTO gov_raw(site_name,source_url,page_url,title,publish_date,content,summary,status,category,group_name,has_table,script_name) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)r!   Ú	publishedu   é€šçŸ¥å…¬å‘Šu   æ±Ÿè‹�r   z  [+] é(   z | z(DELETE FROM gov_search WHERE site_name=?zyINSERT INTO gov_search(rowid,title,site_name,summary) SELECT rowid,title,site_name,summary FROM gov_raw WHERE site_name=?)Úsqlite3Úconnectr	   Úcursorr2   rw   ÚexecuteÚfetchonerz   Ú	SITE_NAMEÚSCRIPT_NAMEÚrowcountr?   ÚcommitÚclose)rK   ÚconnÚcÚ	new_countÚitemr&   r'   Úpub_dater}   Úcontent_textÚhts              rS   Ú
save_to_dbr‘   –   sX  € Ü�?‰?œ9Ó%€DØ�‰‹€AØ€IØò 6ˆØ�5‰kˆØ�W‘ˆØ˜‘<ˆØ—x‘x °Ó3ˆÜ# LÓ1ˆÙØØ	�	‰	Ð;¸c¸VÔDØ�:‰:Œ<ØÜ�|Ó$ˆØ	�	‰	ð Ü˜˜S %¨°<ÀÈdÈsÐASÐU`ÐbpÐrzÐ|~ô  ALð  Mô	
ð �:‰:˜‹>Ø˜‰NˆIÜ�F˜5  "˜:˜, c¨(¨Ð4Õ5ð%6ð& 	‡K�K„MØ‡I�IÐ8¼9¸,ÔGØ‡I�Ið  Jô  MVð  LXô  YØ‡K�K„MØ‡J�J„LØÐr{   c                  ój  — t        j                   «       } g }t        d«      \  }}|j                  |«       t        rt        n|}|dk  rd}t	        d|dz   «      D ]=  }||kD  r n6t        |«      \  }}|j                  |«       t        j
                  d«       Œ? t        dt        |«      › �«       t        |«      D ]k  \  }}t        |d   «      }	|	|d<   t        t        |	«      «      }
t        d	|dz   › d
t        |«      › d|d   d d › d|
› d�	«       t        j
                  d«       Œm t        |«      }t        j                   «       | z
  }t        dd› �«       t        dt        › �«       t        d|› d
t        |«      › �«       t        dt        › �«       t        d|d›d�«       t        d› «       y )Nr   r   r   r%   g      à?z
Total list items: r&   r}   z  [ú/z] r'   rV   z... (z chars)rh   z2==================================================zSite: zNew records: zScript: zTime: z.1fÚs)rD   rT   ÚextendÚ_MAX_PGr0   rE   r?   r@   rj   rZ   rw   r‘   r…   r†   )Ú
start_timeÚ	all_itemsrK   rN   Ú	max_pagesÚpgÚ_rr   r�   r#   Útext_lenÚcountÚelapseds                rS   ÚmainrŸ   ´   s¦  € Ü—‘“€JØ€IÜ# A›Ñ€Eˆ;Ø×Ñ�UÔÝ"•¨€IØ�A‚~Øˆ	Ü�A�y 1‘}Ó%ò ˆØ�ÒÙÜ˜b“>‰ˆˆqØ×Ñ˜ÔÜ�
‰
�3�ðô 
Ð ¤ Y£Ð 0Ð
1Ô2Ü˜YÓ'ò ‰ˆˆ4Ü˜D ™KÓ(ˆØ#ˆˆ^ÑÜ”| DÓ)Ó*ˆÜ��A�a‘C�5˜œ#˜i›.Ð)¨¨D°©M¸#¸2Ð,>Ð+?¸uÀXÀJÈgÐVÔWÜ�
‰
�3�ðô �yÓ!€EÜ�i‰i‹k˜JÑ&€GÜ	ˆBˆvˆhˆ-ÔÜ	ˆF”9�+Ð
ÔÜ	ˆM˜%˜ ¤# i£.Ð!1Ð
2Ô3Ü	ˆH”[�MÐ
"Ô#Ü	ˆF�7˜3�-˜qÐ
!Ô"Ü	ˆVˆHÕr{   Ú__main__)r   )*Ú__doc__r1   r6   r€   rD   rB   r.   ÚwarningsÚfilterwarningsr   r   Úosr–   Ú
_SITE_NAMEÚ_PAGE_IDÚ_SCRIPT_NAMErr   r@   ÚargvÚaÚ
startswithr>   rn   r?   r…   Úgetenvr	   r†   r=   ÚnowÚstrftimeÚCUTOFFr4   r3   r-   rT   rZ   rw   rz   r‘   rŸ   Ú__name__ry   r{   rS   ú<module>r°      s¶  ðñ÷
 8× 7× 7Ó 7Ø €× Ñ ˜Ô !ß (Û 	ð €Ø.€
Ø"€Ø#€à€Ø‰#ˆc�h‰h‹-ÓØ�‰�‰€AØ‡|�|�JÔÙ�a—g‘g˜c 1“o aÑ(Ó)ŠØ	
ˆiŠ˜A ™E¡C¨¯©£MÒ1Ù�c—h‘h˜q 1™u‘oÓ&ˆØ	ˆQ‰ŠØ	
�‰�nÔ	%Ø—W‘W˜S !“_ QÑ'‰
Ø	
ˆmÒ	  A¡©¨C¯H©H«Ò 5Ø—X‘X˜a !™e‘_ˆ
Ø	ˆQ‰‰Ø	
�‰�lÔ	#Ø—7‘7˜3 “? 1Ñ%‰Ø	
ˆkÒ	˜a !™e¡c¨#¯(©(£mÒ3Ø—8‘8˜A ™E‘?ˆØ	ˆQ‰‰Ø	
�‰Ð&Ô	'Ø—w‘w˜s A“ qÑ)‰Ø	
ˆoÒ	 ! a¡%©#¨c¯h©h«-Ò"7Ø—x‘x  A¡‘ˆØ	ˆQ‰ˆØˆ�F€Að- ‰#ˆc�h‰h‹-Ôñ0 Ð˜J˜< y°°
¸-ÈÀ~ÐVÔ WØ
ÐÙ	Ð ˜yÐ
)Ô*à€	ØˆB�I‰I�kÐ#4Ó5€	Ø€Ø	€à
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€ØÐWÐ
X€à
]€àØ$Ø'ØØ'ØØñ€
ó#òJò.ò*(òò<ð< ˆzÒÙ…Fð r{   