Ë
    ¸¬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ej                  j!                  d	d
«      ZddiZd„ Zd„ Zdd„Zd„ Zdd„Zedk(  r|ej2                  dd Z ee«      dk\  red   neZ ee«      dk\  red   neZ ee«      dk\  red   neZ ee«      dk\  red   j?                  «       r e ed   «      ndZ! eeeee!«       yy)uÝ   ä¸´æ³‰åŽ¿äººæ°‘æ”¿åºœ-ä¿¡æ�¯å…¬å¼€ é€šç”¨çˆ¬è™« (åˆ—è¡¨AJAX+è¯¦æƒ…SSR, å…¨requests)
ç”¨æ³•: python3 crawl_linquan_hj.py [site_name] [branch_id] [code] [max_pages]
é»˜è®¤: æ°´åˆ©å±€-é‡�å¤§è¡Œæ”¿å†³ç­–é¢„å…¬å¼€ (799/64847)
é    N)ÚBeautifulSoup)Úurljoinu.   ä¸´æ³‰åŽ¿æ°´åˆ©å±€-é‡�å¤§è¡Œæ”¿å†³ç­–é¢„å…¬å¼€Ú799Ú64847zhttps://www.linquan.gov.cnÚDB_PATHz/root/search.dbz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36c                 ót   — t        j                  | t        d¬«      }|j                  j	                  dd¬«      S )u,   èŽ·å�–é¡µé�¢åŽŸå§‹å­—èŠ‚ï¼Œå¼ºåˆ¶UTF-8è§£ç �é   ©ÚheadersÚtimeoutúutf-8Úreplace©Úerrors)ÚrequestsÚgetÚHEADERSÚcontentÚdecode)ÚurlÚrs     ú%/root/gov_crawler/crawl_linquan_hj.pyÚ
fetch_htmlr      s.   € ä�‰�S¤'°2Ô6€AØ�9‰9×Ñ˜G¨IÐÓ6Ð6ó    c                 ó~  — d}t        dd«      D ]�  }	 t        j                  t        d| › d|› d|› d�z   t        d¬	«      }|j
                  d
k7  r|dz
  c S t        j                  t        d| › d|› d|› d�z   t        d¬	«      }|j                  j                  dd¬«      }d|vr|dz
  c S |}ŒŸ |S #  |dz
  cY c S xY w)u'   é€�é¡µæ£€æŸ¥ç›´åˆ°è¿”å›žæ— æ•°æ�®çš„é¡µé   é   ée   ú/OpennessTarget/ú/ú/page_ú.htmlé
   r
   éÈ   é   r   r   r   z<td)	Úranger   ÚheadÚBASEr   Ústatus_coder   r   r   )Ú	branch_idÚcodeÚtotalÚpgr   Úr2Úhtmls          r   Úget_total_pagesr0      sÞ   € à€EÜ�A�s‹mò ˆð	Ü—‘œdÐ'7¸	°{À!ÀDÀ6ÈÐPRÈtÐSXÐ%YÑYÔcjÐtvÔwˆAØ�}‰} Ò#Ø˜A‘v’ä—‘œdÐ'7¸	°{À!ÀDÀ6ÈÐPRÈtÐSXÐ%YÑYÔcjÐtvÔwˆBØ—:‘:×$Ñ$ W°YÐ$Ó?ˆDØ˜DÑ Ø˜A‘v’Ø‰Eðð €Løð	Ø˜‘6ŒMús   “A B1ÁAB1Â+B1Â1B<r   c                 ó(  — t         d| › d|› d|› d�z   }	 t        |«      }t        |d«      }g }|j                  d«      D ]§  }|j	                  d«      }t        |«      dk\  sŒ#|d	   r|d	   j                  d
«      nd}	|	sŒA|	j                  dd«      }
|
j                  d«      st        ||
«      }
|j                  |	j                  d¬«      |
|d   j                  d¬«      dœ«       Œ© |S # t        $ r}t        d|› d|› �«       g cY d}~S d}~ww xY w)u%   èŽ·å�–åˆ—è¡¨é¡µæ•°æ�®ï¼ˆAJAXç«¯ç‚¹ï¼‰r   r    r!   r"   Úlxmlztable trÚtdé   r   ÚaNÚhrefÚ ÚhttpT)Ústripr   )Útitler   Údateõ     âš ï¸� ç¬¬u   é¡µåŠ è½½å¤±è´¥: )r(   r   r   ÚselectÚfind_allÚlenÚfindr   Ú
startswithr   ÚappendÚget_textÚ	ExceptionÚprint)r*   r+   Úpager   r/   ÚsoupÚitemsÚtrÚtdsÚ	a_primaryr6   Úes               r   Úget_list_pagerM   +   s#  € ä
Ð# I ;¨a°¨v°V¸D¸6ÀÐGÑ
G€CðÜ˜#‹ˆÜ˜T 6Ó*ˆØˆØ—+‘+˜jÓ)ò 	ˆBØ—+‘+˜dÓ#ˆCÜ�3‹x˜1‹}Ø03°A²˜C ™FŸK™K¨Ô,¸D�	Ù ØØ —}‘} V¨RÓ0�Ø—‘ vÔ.Ü" 3¨Ó-�DØ—‘Ø&×/Ñ/°dÐ/Ó;ØØ ™FŸO™O°$˜OÓ7ñõ ð	ð ˆøÜò Ü�˜T˜FÐ"3°A°3Ð7Ô8Ø�	ûðús%   •AC+ Á"BC+ Ã+	DÃ4DÄDÄDc                 ó4  — 	 t        | «      }t        |d«      }|j                  dd¬«      }|rC |ddg«      D ]  }|j                  «        Œ t	        |«      }t        j                  dd|«      }|S 	 y# t        $ r}t        d	| › d
|› �«       Y d}~yd}~ww xY w)u$   è§£æž�è¯¦æƒ…é¡µæ­£æ–‡ï¼ˆSSRæ¸²æŸ“ï¼‰r2   Údivzg-detailbox)Úclass_ÚscriptÚstyleu   <!--å¯Œæ–‡æœ¬-->r7   u     âš ï¸� è¯¦æƒ…è§£æž�å¤±è´¥ z: N)	r   r   r@   Ú	decomposeÚstrÚreÚsubrD   rE   )r   r/   rG   rO   ÚtagÚhtml_contentrL   s          r   Úparse_detailrY   E   s­   € ð9Ü˜#‹ˆÜ˜T 6Ó*ˆØ�i‰i˜ mˆiÓ4ˆÙÙ˜H gÐ.Ó/ò  �Ø—‘•ð ä˜s›8ˆLÜŸ6™6Ð"5°r¸<ÓHˆLØÐð ð øô ò 9ÜÐ,¨S¨E°°A°3Ð7×8Ð8Øûð9ús   ‚A.A3 Á3	BÁ<BÂBc                 óÂ  — t        ||«      }|r||k  r|}t        d| › d|› d�«       t        j                  t        «      }d\  }}t        d|dz   «      D ]¼  }t        |||«      }	|	st        d|› d�«       Œ"t        d|› d	|› d
t        |	«      › d�«       |	D ]h  }
t        |
d   «      }	 |j                  d| |
d   |
d   |
d   |
d   ||
d   f«       |j                  dkD  r|dz  }n|dz  }t        j                  d«       Œj |j                  «        Œ¾ |j                  «        t        d| › d|› d|› d|› d�	«       y # t        $ r}t        d|› �«       Y d }~Œnd }~ww xY w)Nu   ðŸ“‹ u   : å…± u    é¡µ)r   r   r   r<   u   é¡µæ— æ•°æ�®u   ðŸ“„ ç¬¬r    u   é¡µ (u   æ�¡)r   zÑ
                    INSERT OR IGNORE INTO gov_raw
                    (site_name, source_url, page_url, title, publish_date, content, summary)
                    VALUES (?, ?, ?, ?, ?, ?, ?)
                r:   r;   r   u     â�Œ - g333333Ó?u   
âœ… u   : æ–°å¢žu   , è·³è¿‡u   , å…±u   é¡µ)r0   rE   Úsqlite3Úconnectr   r&   rM   r?   rY   ÚexecuteÚtotal_changesrD   ÚtimeÚsleepÚcommitÚclose)Ú	site_namer*   r+   Ú	max_pagesÚtotal_pagesÚconnÚnewÚskipr-   rH   ÚitemÚbodyrL   s                r   Úrunrk   U   s”  € Ü! )¨TÓ2€KÙ�Y Ò,ØˆÜ	ˆE�)�˜F ; -¨tÐ
4Ô5ä�?‰?œ7Ó#€DØ�I€Cˆä�A�{ Q‘Ó'ò ˆÜ˜i¨¨rÓ2ˆÙÜ�L   LÐ1Ô2ØÜ�˜˜˜A˜k˜]¨%´°E³
¨|¸4Ð@ÔAØò 	ˆDÜ  U¡Ó,ˆDð&Ø—‘ð ð    e¡¨d°5©k¸4À¹=Ø˜6‘l D¨$¨w©-ð9ô	:ð ×%Ñ%¨Ò)Ø˜1‘H‘Cà˜A‘I�Dô �J‰J�s�Oð	ð  	�‰�ð-ð0 	‡J�J„LÜ	ˆF�9�+˜X c U¨(°4°&¸¸k¸]È#Ð
NÕOøô ò &Ü˜  �n×%Ñ%ûð&ús   Â)AD=Ä=	EÅEÅEÚ__main__r   r4   é   )r   )N)"Ú__doc__rU   r   r[   ÚosÚsysr_   Úbs4r   Úurllib.parser   ÚDEFAULT_SITEÚDEFAULT_BRANCHÚDEFAULT_CODEr(   Úenvironr   r   r   r   r0   rM   rY   rk   Ú__name__ÚargvÚargsr?   rc   r*   r+   ÚisdigitÚintÚmax_p© r   r   ú<module>r~      s  ðñ÷ ,× +× +Ý Ý  à?€Ø€Ø€Ø#€Ø
�*‰*�.‰.˜Ð$5Ó
6€ð ð  Dð€ò7ò
ó$ò4ó "PðH ˆzÒØ�8‰8�A�Bˆ<€DÙ˜t›9¨š>��Q’¨|€IÙ˜t›9¨š>��Q’¨~€IÙ˜$“i 1’nˆ4�Š7¨,€DÙ ›I¨šN¨t°A©w¯©Ô/@‰C��Q‘ŒLÀd€EÙˆ	�9˜d EÕ*ð r   