Ë
    WÁjÆ(  ã                   ó2  — 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
Z
ddlZddlmZ ej                  j                  ej                  j!                  e«      «      Zej                  j                  e«      Zeej                  vrej                  j)                  de«       dZedz   Zedz   ZdZdZd	Zd
Z ej8                  dd«      Z e
j<                  «       Zej@                  jC                  «       Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'e(dk(  r e'«        yy)u  
çƒŸå�°å¸‚ç¦�å±±åŒº-å»ºè®¾é¡¹ç›®çŽ¯è¯„å®¡æ‰¹çˆ¬è™«
crawl_fushan_hjxxgk.py
åˆ—è¡¨: ä¸»é¢˜åˆ†ç±»list AJAX API (pageNo/pageSize/pageSize=100)
è¯¦æƒ…: div.text#zoom (æ­£æ–‡), div.title h1 (æ ‡é¢˜)
é™„ä»¶: /api-gateway/jpaas-web-server/front/document/download?fileUrl=...
é    N)Údatetimezhttp://www.ytfushan.gov.cnzO/col/col44281/index.html?vc_xxgkarea=11370611004264003A&number=FSB300106&jh=263z7/api-gateway/jpaas-publish-server/front/page/build/unitu+   çƒŸå�°å¸‚ç¦�å±±åŒº-å»ºè®¾é¡¹ç›®çŽ¯è¯„å®¡æ‰¹u   å±±ä¸œé   éd   Ú	SEARCH_DBz/root/search.dbc                  óâ   — t         j                  j                  t        ¬«      } t         j                  j	                  | t         j                  j                  t        «      «      }g d¢|_        |S )N)Úcontext))ú
User-AgentzuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36)ÚAcceptzJtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8)zAccept-Languagezzh-CN,zh;q=0.9,en;q=0.8)ÚurllibÚrequestÚHTTPSHandlerÚctxÚbuild_openerÚHTTPCookieProcessorÚcjÚ
addheaders)Úhttps_handlerÚopeners     ú(/root/gov_crawler/crawl_fushan_hjxxgk.pyÚmake_openerr       sP   € Ü—N‘N×/Ñ/¼Ð/Ó<€MÜ�^‰^×(Ñ(¨¼¿¹×8ZÑ8ZÔ[]Ó8^Ó_€Fò€FÔð
 €Mó    c                  ó¸   — t        «       } t        j                  j                  t        «      }	 | j                  |d¬«      }|j                  «       }| S #  Y | S xY w)u   åˆ�å§‹åŒ–sessionï¼ŒèŽ·å�–cookieé   ©Útimeout)r   r   r   ÚRequestÚLIST_URLÚopenÚread)r   ÚreqÚrespÚraws       r   Úinit_sessionr#   *   sU   € ä‹]€FÜ
�.‰.×
 Ñ
 ¤Ó
*€CðØ�{‰{˜3¨ˆ{Ó+ˆØ�i‰i‹kˆð €MøðØØ€Mús   ¯#A ÁAc                 óÊ  — dddddddddœ}|t         t        j                  |d¬«      dœ}dddd	d
dddt        j                  |d¬«      dœ	}t        j                  j                  |«      }t        › d|› �}t        j                  j                  |ddt        dœ¬«      }| j                  |d¬«      }|j                  «       }	ddl}
|
j                  |	«      d   xs d}t        j                  |	j                  |d¬«      «      }|j!                  d«      sg ddfS |d   d   }t#        j$                  d|«      }|rt'        |j)                  d «      «      nd}g }t#        j*                  d!|t"        j,                  «      }|D ]Õ  }t#        j$                  d"|«      }|sŒ|j)                  d «      j/                  «       }|j)                  d#«      j/                  «       }|r|d$v rŒa|j1                  d%«      s$t        j                  j3                  t4        |«      }t#        j$                  d&|«      }|r|j)                  d «      nd}|j7                  |||d'œ«       Œ× ||t9        |«      fS )(u   é€šè¿‡APIèŽ·å�–åˆ—è¡¨é¡µæ•°æ�®Ú )ÚtitleÚ
createdateÚ
depolytimeÚ	indexcodeÚxxgkIdÚxxgkTypeÚnodeIdÚisFindChildF©Úensure_ascii)ÚpageNoÚpageSizeÚsearchÚbulidstaticz	ajax-xxgkÚ148ÚFkT6xljcB7CqYjedWPMTZÚcolumnu   ä¸»é¢˜åˆ†ç±»listÚnullÚ44281)	Ú	parseTypeÚunitTypeÚwebIdÚtplSetIdÚpageTypeÚtagIdÚeditTypeÚpageIdÚ	paramJsonú?zMozilla/5.0z!application/json, text/plain, */*)r	   r
   ÚReferer)Úheadersé   r   r   NÚencodingúutf-8Úreplace©ÚerrorsÚsuccessÚdataÚhtmlzcount="(\d+)"é   z<tr[^>]*>(.*?)</tr>ú&<a[^>]*href="([^"]*)"[^>]*>([^<]*)</a>é   )u   åº�å�·u   æ ‡é¢˜u   å�‘å¸ƒæ—¥æœŸÚhttpz(\d{4}-\d{2}-\d{2}))r&   ÚurlÚpublish_date)Ú	PAGE_SIZEÚjsonÚdumpsr   ÚparseÚ	urlencodeÚAPI_URLr   r   r   r   r   ÚchardetÚdetectÚloadsÚdecodeÚgetÚrer2   ÚintÚgroupÚfindallÚSÚstripÚ
startswithÚurljoinÚBASE_URLÚappendÚlen)r   Úpage_noÚsearch_paramsÚ
param_jsonÚparamsÚqsrR   r    r!   r"   rZ   ÚencÚresultrM   Úcount_mÚtotal_countÚitemsÚrowsÚrowÚlink_mÚhrefr&   Údate_mrS   s                           r   Úfetch_list_pagery   5   sI  € ð  2°RÀbØ "°À2ñ€Mð
 ÜÜ—*‘*˜]¸Ô?ñ€Jð #ØØØ+ØØ#ØØÜ—Z‘Z 
¸Ô?ñ
€Fô 
�‰×	Ñ	 Ó	'€BÜˆI�Q�r�dÐ
€CÜ
�.‰.×
 Ñ
  Ø#Ø5Üñ/Ð
 ó €Cð
 �;‰;�s Bˆ;Ó'€DØ
�)‰)‹+€CÛØ
�.‰.˜Ó
˜jÑ
)Ò
4¨W€CÜ�Z‰Z˜Ÿ
™
 3¨y˜
Ó9Ó:€FØ�:‰:�iÔ Ø�1�aˆxˆà�&‰>˜&Ñ!€DÜ�i‰iÐ(¨$Ó/€GÙ+2”#�g—m‘m AÓ&Ô'¸€Kð €EÜ�:‰:Ð,¨d´B·D±DÓ9€DØò ˆä—‘ÐDÀcÓJˆÙØØ�|‰|˜A‹×$Ñ$Ó&ˆØ—‘˜Q“×%Ñ%Ó'ˆÙ˜Ð!EÑEØØ�‰˜vÔ&Ü—<‘<×'Ñ'¬°$Ó7ˆDô —‘Ð1°3Ó7ˆÙ*0�v—|‘| A”°bˆà�‰ØØØ(ñ
õ 	ð!ð, �+œs 5›zÐ)Ð)r   c                 ó<
  — t         j                  j                  |«      }	 | j                  |d¬«      }|j	                  «       }ddl}|j                  |«      d   xs d}|j                  |d¬«      }d	}	t        j                  d
|t        j                  «      }
|
r4t        j                  dd	|
j                  d«      «      j                  «       }	|	sFt        j                  d|t        j                  «      }
|
r|
j                  d«      j                  «       }	d	}t        j                  d|«      }|r|j                  d«      }|s)t        j                  d|«      }|r|j                  d«      }d	}t        j                  d|t        j                  «      }|s%t        j                  d|t        j                  «      }|�rŒ|j                  d«      }t        j                  dd	|t        j                  ¬«      }t        j                  dd	|t        j                  ¬«      }g }t        j                   d|t        j                  «      D ]¥  }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd	|«      j                  «       }t        j                  dd|«      }t        j                  dd|«      j                  «       }|sŒ•|j#                  |«       Œ§ |rdj%                  |«      }nJt        j                  dd	|«      j                  «       }t        j                  dd|«      j                  «       }g }|r|j                  d«      n|}t        j&                  d|t        j                  «      D ])  }|j                  d«      }d|v rŒ|j#                  |«       Œ+ |r|ddj%                  |«      z   z  }g }t        j&                  d|t        j                  «      D ]Õ  }|j                  d«      j                  «       }|j                  d«      j                  «       }d |v s&t        j                  d!|t        j(                  «      sŒk|j+                  d"«      s$t         j,                  j/                  t0        |«      }|j#                  |xs |j3                  d#«      d$   |d%œ«       |d&|› d'|› d(�z  }Œ× |	||j                  «       |rt5        j6                  |d)¬*«      nd+d,œdfS # t
        $ r}dt        |«      fcY d}~S d}~ww xY w)-u   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹rE   r   Nr   rF   rG   rH   rI   r%   z<h1[^>]*>(.*?)</h1>z<[^>]+>rN   z<title>(.*?)</title>u"   æ—¥æœŸ[ï¼š:]\s*(\d{4}-\d{2}-\d{2})z!(\d{4}-\d{2}-\d{2})\s+\d{2}:\d{2}z=<div[^>]*class="text"[^>]*id="zoom"[^>]*>(.*?)</div>\s*</div>z4<div[^>]*class="text"[^>]*>(.*?)</div>\s*(?:</div>)?z(<table[^>]*wzy_titlebox[^>]*>.*?</table>)Úflagsz<table[^>]*>.*?</table>z<p[^>]*>(.*?)</p>rO   z[\2](\1)z<img\s+[^>]*src="([^"]*)"[^>]*>z![](\1)ú\s+ú z&nbsp;z

Úwzy_titleboxrP   z/document/downloadz"\.(pdf|doc|docx|xls|xlsx|zip|rar)$rQ   ú/éÿÿÿÿ)ÚnamerR   u   

é™„ä»¶ï¼š<a href="z">z</a>Fr.   ú[])r&   rS   ÚcontentÚattachments)r   r   r   r   r   Ú	ExceptionÚstrrZ   r[   r]   r_   r2   rc   Úsubra   rd   rb   rh   ÚjoinÚfinditerÚIre   rW   rf   rg   ÚsplitrU   rV   )r   rR   r    r!   r"   ÚerZ   ro   rM   r&   Útitle_mrS   rx   rƒ   Útext_mÚcontent_htmlÚcontent_html_no_tablesÚ
paragraphsÚpÚp_textÚtextÚtablesÚ
scope_htmlÚtmÚwhole_tabler„   Úmrw   s                               r   Úfetch_detailrš   z   s^  € ä
�.‰.×
 Ñ
  Ó
%€CðØ�{‰{˜3¨ˆ{Ó+ˆØ�i‰i‹kˆó Ø
�.‰.˜Ó
˜jÑ
)Ò
4¨W€CØ�:‰:�c )ˆ:Ó,€Dð €EÜ�i‰iÐ.°´b·d±dÓ;€GÙÜ—‘�z 2 w§}¡}°QÓ'7Ó8×>Ñ>Ó@ˆÙÜ—)‘)Ð3°T¼2¿4¹4Ó@ˆÙØ—M‘M !Ó$×*Ñ*Ó,ˆEð €LÜ�Y‰YÐ<¸dÓC€FÙØ—|‘| A“ˆÙÜ—‘Ð?ÀÓFˆÙØ!Ÿ<™<¨›?ˆLð €GÜ�Y‰YÐWÐY]Ô_a×_cÑ_cÓd€FÙÜ—‘ÐRÐTXÔZ\×Z^ÑZ^Ó_ˆÚØ—|‘| A“ˆä!#§¡Ð(SÐUWÐYeÔmo×mqÑmqÔ!rÐÜ!#§¡Ð(BÀBÐH^Ôfh×fjÑfjÔ!kÐàˆ
Ü—‘Ð0Ð2HÌ"Ï$É$ÓOò 
	(ˆAä—V‘VÐEÀ{ÐTUÓVˆFä—V‘VÐ>À
ÈFÓSˆFä—6‘6˜* b¨&Ó1×7Ñ7Ó9ˆDÜ—6‘6˜& # tÓ,ˆDÜ—6‘6˜) S¨$Ó/×5Ñ5Ó7ˆDÚØ×!Ñ! $Õ'ð
	(ñ Ø—k‘k *Ó-‰Gä—f‘f˜Z¨¨\Ó:×@Ñ@ÓBˆGÜ—f‘f˜V S¨'Ó2×8Ñ8Ó:ˆGð €FÙ$*�—‘˜a”°€JÜ�k‰kÐ4°jÄ"Ç$Á$ÓGò #ˆØ—h‘h˜q“kˆØ˜[Ñ(ØØ�‰�kÕ"ð	#ñ Ø�6˜FŸK™K¨Ó/Ñ/Ñ/ˆð €KÜ�[‰[ÐBÀJÔPR×PTÑPTÓUò CˆØ�w‰w�q‹z×ÑÓ!ˆØ�w‰w�q‹z×ÑÓ!ˆØ 4Ñ'¬2¯9©9Ð5ZÐ\`Ôbd×bfÑbfÕ+gØ—?‘? 6Ô*Ü—|‘|×+Ñ+¬H°dÓ;�Ø×ÑØÒ3 §
¡
¨3£°Ñ 3Øñ ô ð
 Ð/°¨v°R¸°v¸TÐBÑB‰GðCð Ø$Ø—=‘=“?ÙFQ”t—z‘z +¸EÕBÐW[ñ	ð
 ðð øôg ò Ø”S˜“Vˆ|Õûðús   ¡#S; Ó;	TÔTÔTÔTc                  ó6  — t        «       } t        dt        › d�«       g }d}t        dt        dz   «      D ]W  }	 t        | |«      \  }}}|}t        d|› dt        › d|› d|› d	�	«       |j                  |«       t        j                  d
«       ŒY t        dt        |«      › �«       |D �cg c]  }d|d   v sŒ|‘Œ }	}t        dt        |	«      › �«       d}
d}t        |	«      D �]y  \  }}	 t        | |d   «      \  }}|rDt        d|dz   › dt        |	«      › d|d   d d › d|› �«       |dz  }t        j                  d«       Œ`dd l}|j                  t        «      }|j!                  «       }|d   r|d   d d nd}t#        j$                  dd|d d «      j'                  «       xs |d   }|j)                  d|d   |d   |d   t        t*        |||j-                  dd«      |d   f	«       |j.                  }|j1                  «        |j3                  «        |
dz  }
|dz   d z  dk(  r#t        d|dz   › dt        |	«      › d!|
› d"|› �«       t        j                  d
«       �Œ| t        d$d%› �«       t        dt        › d&|
› d'|› �«       t        d%› «       y # t        $ r}t        d|› d|› �«       Y d }~ �Œ%d }~ww xY wc c}w # t        $ rN}t        d|dz   › dt        |	«      › d#|d   d d › d|› �«       |dz  }t        j                  d«       Y d }~�Œ0d }~ww xY w)(Nú[z] Session initializedr   rN   z  Page r   z: got z items (total in system: ú)g333333Ó?z
: ERROR - z
Total items from list: z/col/col44281/rR   u   çŽ¯è¯„å®¡æ‰¹ items: z  [z] ERROR fetching r&   é   z: g      à?rƒ   iPÃ  r%   r|   r}   éÈ   z»INSERT OR IGNORE INTO gov_raw 
                (page_url, title, publish_date, site_name, group_name, summary, content, attachments, source_url)
                VALUES (?,?,?,?,?,?,?,?,?)rS   r„   r‚   é
   z] saved z	, errors z] ERROR saving ú
z2==================================================z] Done! Saved: z
, Errors: )r#   ÚprintÚ	SITE_NAMEÚrangeÚ	MAX_PAGESry   ÚextendÚtimeÚsleepr…   ri   Ú	enumeraterš   Úsqlite3ÚconnectÚDB_PATHÚcursorr_   r‡   rd   ÚexecuteÚGROUPr^   ÚrowcountÚcommitÚclose)r   Ú	all_itemsÚtotal_api_countÚpagers   rr   ÚgotrŒ   ÚitÚhj_itemsÚsavedrJ   ÚidxÚitemÚdetailÚerrrª   ÚconnÚcÚcontent_textÚsummaryÚns                         r   ÚcrawlrÃ   Û   sU  € Ü‹^€FÜ	ˆAŒiˆ[Ð-Ð
.Ô/à€IØ€Oä�aœ Q™Ó'ò 	ˆð	Ü&5°f¸dÓ&CÑ#ˆE�; Ø)ˆOÜ�G˜D˜6 ¤9 +¨V°C°5Ð8QÐR]ÐQ^Ð^_Ð`ÔaØ×Ñ˜UÔ#Ü�J‰J�s�Oð	ô 
Ð%¤c¨)£nÐ%5Ð
6Ô7ð 'ÖH�rÐ*:¸bÀ¹iÒ*G’ÐH€HÐHÜ	Ð ¤ X£ Ð
0Ô1à€EØ€FÜ˜xÓ(ó ‰	ˆˆTð	Ü& v¨t°E©{Ó;‰KˆF�CÙÜ˜˜C ™E˜7 !¤C¨£M ?Ð2CÀDÈÁMÐRUÐSUÐDVÐCWÐWYÐZ]ÐY^Ð_Ô`Ø˜!‘�Ü—
‘
˜3”ØãØ—?‘?¤7Ó+ˆDØ—‘“ˆAØ8>¸yÒ8I˜6 )Ñ,¨V¨eÑ4ÈrˆLÜ—f‘f˜V S¨,°t¸Ð*<Ó=×CÑCÓEÒXÈÐPWÉˆGØ�I‰Ið .ð �e‘˜f W™o¨v°nÑ/EÜœE 7¨LØ—‘˜M¨4Ó0°$°u±+ð?ô@ð —
‘
ˆAØ�K‰KŒMØ�J‰JŒLØ�Q‰JˆEØ�a‘˜2‰~ Ò"Ü˜˜C ™E˜7 !¤C¨£M ?°(¸5¸'ÀÈ6È(ÐSÔTÜ�J‰J�sŽOð5ô@ 
ˆBˆvˆhˆ-ÔÜ	ˆAŒiˆ[˜¨ w¨j¸¸Ð
AÔBÜ	ˆVˆHÕøô] ò 	Ü�G˜D˜6 ¨A¨3Ð/Ô0Þûð	üò Iøô@ ò 	Ü�C˜˜A™�w˜a¤ H£˜¨o¸dÀ7¹mÈCÈRÐ>PÐ=QÐQSÐTUÐSVÐWÔXØ�a‰KˆFÜ�J‰J�s�OŠOûð	úsE   ¹AJÂ*J<Â7J<Ã+AKÅDKÊ	J9ÊJ4Ê4J9Ë	LË
ALÌLÚ__main__))Ú__doc__r_   rU   r§   ÚosÚsysÚurllib.parser   ÚhashlibÚurllib.requestÚsslÚhttp.cookiejarrQ   r   ÚpathÚdirnameÚabspathÚ__file__ÚCURRENT_DIRÚ
PARENT_DIRÚinsertrg   r   rY   r£   r¯   r¥   rT   Úgetenvr¬   Ú_create_unverified_contextr   Ú	cookiejarÚ	CookieJarr   r   r#   ry   rš   rÃ   Ú__name__© r   r   ú<module>rÚ      s  ðñ÷ 6× 5× 5Ó 5ß *Ó *Ý à�g‰g�o‰o˜bŸg™gŸo™o¨hÓ7Ó8€Ø�W‰W�_‰_˜[Ó)€
Ø�S—X‘XÑØ‡H�H‡O�O�A�zÔ"ð (€ØÐgÑg€Ø
ÐNÑ
N€Ø9€	Ø€Ø€	Ø€	Ø
ˆ"�)‰)�KÐ!2Ó
3€à$€c×$Ñ$Ó&€Ø	‡^�^×ÑÓ€òò	òC*òJ^òB<ð| ˆzÒÙ	…Gð r   