Ë
    ¸¬ují  ã                   ó€  — 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 ej                  «        	 dZ	dZ
dZdZdZdZdd	d
dœZ ej                   dd«      Z e j$                  «       Zej(                  j+                  e«       de_        	 ej/                  e	d¬«       d„ Zd„ Zd„ Zd„ Zedk(  r e«        yy#  Y ŒxY w)é    Nzhttp://www.xiajiang.gov.cnu   å³¡æ±ŸåŽ¿-å…¬å‘Šå…¬ç¤ºu   æ±Ÿè¥¿u   æ”¿åºœå…¬å‘Šzcrawl_xiajiang_gggs.pyé   z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9)z
User-AgentÚAcceptzAccept-LanguageÚ	SEARCH_DBz/root/search.dbFé
   ©Útimeoutc           	      ó°  — t         › d| › d�}i t        ¥dt         › d�dœ¥}dddd	d
ddg d¢dg	ddœ}t        d«      D ]e  }	 t        j	                  |||d¬«      }|j
                  dk(  r:|j                  «       }|j                  dg «      }|j                  dd«      }||fc S Œg g dfS # t        $ r$}	|dk  rt        j                  d«       Y d}	~	Œ”d}	~	ww xY w)z)Fetch one page of items via ZCMS AJAX APIz/api-ajax_list-ú.htmlÚXMLHttpRequestz/news-list-gonggaogongshi.html)zX-Requested-WithÚRefererÚ7_newsÚ21Ú7ÚnewszY-m-dÚ40Ú20)zis_top DESCzdisplayorder DESCzinputtime DESCÚ Ú1)zajax_type[]Úis_dsé   é   )ÚdataÚheadersr   éÈ   r   Útotalr   é   N)ÚBASE_URLÚHEADERSÚrangeÚsessionÚpostÚstatus_codeÚjsonÚgetÚ	ExceptionÚtimeÚsleep)
ÚpageÚurlr   r   ÚretryÚrÚdÚitemsr   Úes
             ú(/root/gov_crawler/crawl_xiajiang_gggs.pyÚ
fetch_listr0   &   sù   € äˆJ�o d V¨5Ð
1€CØw”ÐwÐ.>ÌhÈZÐWuÐKvÒw€Gà  $¨¨V°W¸dÀDÚNÐPRðTàñ€Dô
 �q“ò 
ˆð		Ü—‘˜S t°WÀb�ÓIˆAØ�}‰} Ò#Ø—F‘F“H�ØŸ™˜f bÓ)�ØŸ™˜g qÓ)�Ø˜e�|Ò#ð	 $ð
ð ˆqˆ5€Løô ò 	Ø�qŠyÜ—
‘
˜1”ÿøð	ús   Á AB(Â(	CÂ1CÃCc                 óü   — t        d«      D ]>  }	 t        j                  | d¬«      }d|_        |j                  dk(  r|j
                  c S Œ@ y# t        $ r$}|dk  rt        j                  d«       Y d}~Œjd}~ww xY w)zFetch detail page HTMLr   r   r   zutf-8r   r   N)	r   r    r$   Úencodingr"   Útextr%   r&   r'   )r)   r*   r+   r.   s       r/   Úfetch_detailr4   <   sw   € ä�q“ò ˆð	Ü—‘˜C¨�Ó,ˆAØ ˆAŒJØ�}‰} Ò#Ø—v‘v’ð $ð	ð øô ò 	Ø�qŠyÜ—
‘
˜1”ÿøð	ús   �8AÁ	A;ÁA6Á6A;c           	      ó$  — d}t        j                  d| «      }|r|j                  d«      j                  «       }|sWt        j                  d| «      }|r?|j                  d«      j	                  dd«      j	                  dd«      j                  «       }d}t        j                  d| «      }|r8t        j                  d|j                  d«      «      }|r|j                  d«      }|s)t        j                  d| «      }|r|j                  d«      }d}d	D ]ö  }| j                  |«      }|d
k  rŒ| j                  dd
|«      }|d
k  rŒ3d
}	t        |t        | «      «      D ]¦  }
| |
|
dz    dk(  r!|
dz   t        | «      k\  s
| |
dz      dv r|	dz  }	Œ/| |
|
dz    dk(  sŒ;|	dz  }	|	d
k(  sŒF| ||
dz    }t        j                  dd|t         j                  t         j                  z  ¬«      }|j                  «       }t        |«      dkD  r|} n |sŒö n |||fS )z-Extract title, date, content from detail pager   z3<meta[^>]*name="ArticleTitle"[^>]*content="([^"]*)"é   z<title>(.*?)</title>u#   å³¡æ±ŸåŽ¿äººæ°‘æ”¿åºœ-å…¬å‘Šå…¬ç¤º u   å³¡æ±ŸåŽ¿äººæ°‘æ”¿åºœ-zPubDate[^>]*content="([^"]*)"z(\d{4}-\d{2}-\d{2}))zclass="show_content"zclass="content"z	id="zoom"r   z<divé   z >
	é   z</div>z<(script|style)[^>]*>.*?</\1>)Úflagsé2   )ÚreÚsearchÚgroupÚstripÚreplaceÚfindÚrfindr   ÚlenÚsubÚDOTALLÚI)ÚhtmlÚtitleÚmÚdate_strÚdmÚcontentÚpatÚidxÚstartÚdepthÚiÚraws               r/   Úparse_detailrR   I   s  € ð €EÜ
�	‰	ÐHÈ$ÓO€AÙØ—‘˜“
× Ñ Ó"ˆÙÜ�I‰IÐ-¨tÓ4ˆÙØ—G‘G˜A“J×&Ñ&Ð'LÈbÓQ×YÑYÐZrÐtvÓw×}Ñ}ÓˆEð €HÜ
�	‰	Ð2°DÓ9€AÙÜ�Y‰YÐ-¨q¯w©w°q«zÓ:ˆÙØ—x‘x “{ˆHÙÜ�I‰IÐ,¨dÓ3ˆÙØ—w‘w˜q“zˆHð €GØGò ˆØ�i‰i˜‹nˆØ�Š7Øà—
‘
˜6 1 cÓ*ˆØ�1Š9ØàˆÜ�uœc $›iÓ(ò 	ˆAØ�A�a˜‘cˆ{˜fÒ$¨!¨A©#´°T³Ò*:¸dÀ1ÀQÁ3¹iÈ:Ñ>UØ˜‘
‘Ø�a˜˜!™� Ó(Ø˜‘
�Ø˜A“:Ø˜u Q q¡S˜/�CäŸ&™&Ð!AÀ2ÀsÔRT×R[ÑR[Ô\^×\`Ñ\`ÑR`Ôa�CØŸ)™)›+�CÜ˜3“x "’}Ø"%˜Ùð	ò Ùð1ð4 �(˜GÐ#Ð#ó    c                  óê  — t        j                  t        «      } | j                  «       }g }t	        dt
        dz   «      D ]à  }t        |«      \  }}|s2|dk(  rt        dt        › d�«        y t        dt        › d|› d�«        nžt        dt        › d|› dt        |«      › d|› d�	«       |D ]]  }|j                  t        › d	|j                  d
d«      › d�|j                  dd«      t        |j                  dd«      «      d d dœ«       Œ_ t        j                  d«       Œâ t        dt        › dt        |«      › �«       d}d}|D ]Ø  }|d   }	|d   }
|d   }|j!                  d|	f«      j#                  «       }|r|dz  }Œ;t%        |	«      }|s|dz  }ŒNt'        |«      \  }}}|s|
}|s|}|sd}	 |j!                  d|	|	||t(        |t*        t,        f«       | j/                  «        |dz  }t        dt        › d|› d|d d › d|› d�	«       t        j                  d«       ŒÚ | j5                  «        t        dt        › d|› d|› �«       y # t0        $ r}| j3                  «        |dz  }Y d }~Œcd }~ww xY w) Nr6   ú[z] ERROR: API returned empty!z] Page z: empty, donez: z items (total=ú)z/news-show-Úidr   r
   rG   Ú	inputtimer   )r)   rG   Údateg333333Ó?z] Total items from API: r   r)   rY   z)SELECT id FROM gov_raw WHERE page_url = ?u   æ­£æ–‡ä¸ºç©ºz·
                INSERT INTO gov_raw (source_url, page_url, title, publish_date, site_name, content, group_name, industry)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)
            z] +é(   z (g      à?z
[z] Done. New: z, Skipped: )Úsqlite3Úconnectr   Úcursorr   Ú	MAX_PAGESr0   ÚprintÚSCRIPT_NAMErB   Úappendr   r$   Ústrr&   r'   ÚexecuteÚfetchoner4   rR   Ú	SITE_NAMEÚGROUPÚINDUSTRYÚcommitr%   ÚrollbackÚclose)Úconnr]   Ú	all_itemsÚpgr-   r   ÚitemÚ	new_countÚ
skip_countÚitem_urlÚ
item_titleÚ	item_dateÚexistingÚdetail_htmlÚ
real_titleÚ	real_daterK   r.   s                     r/   Úcrawlrx      s¨  € Ü�?‰?œ9Ó%€DØ�[‰[‹]€Fà€IÜ�A”y 1‘}Ó%ò ˆÜ! "“~‰ˆˆuÙØ�QŠwÜ˜œ+˜Ð&BÐCÔDÙä˜œ+˜ g¨b¨T°Ð?Ô@ÙÜ�”+�˜g b T¨¬C°«J¨<°~ÀeÀWÈAÐNÔOØò 	ˆDØ×ÑÜ"˜ ;¨t¯x©x¸¸bÓ/AÐ.BÀ%ÐHØŸ™ '¨2Ó.Ü˜DŸH™H [°"Ó5Ó6°s¸Ð;ñõ ð	ô 	�
‰
�3�ð!ô$ 
ˆAŒkˆ]Ð2´3°y³>Ð2BÐ
CÔDà€IØ€Jàò 'ˆØ˜‘;ˆØ˜'‘]ˆ
Ø˜‘Lˆ	ð —>‘>Ø7¸(¸ó
ç
‰(‹*ð 	ñ Ø˜!‰OˆJØô # 8Ó,ˆÙØ˜!‰OˆJØä)5°kÓ)BÑ&ˆ
�I˜wÙØ#ˆJÙØ!ˆIÙØ$ˆGð
	Ø�N‰Nð ð ˜H j°)¼YÈÔQVÔX`Ðaôcð �K‰KŒMØ˜‰NˆIÜ�A”k�] # i [°°:¸c¸r°?Ð2CÀ2ÀiÀ[ÐPQÐRÔSô
 	�
‰
�3�ðO'ðR 	‡J�J„LÜ	ˆC”ˆ}˜M¨)¨°KÀ
¸|Ð
LÕMøô ò 	Ø�M‰MŒOØ˜!‰O�Jûð	ús   Æ0AI
É
	I2ÉI-É-I2Ú__main__)Úrequestsr;   Úsysr&   r#   Úosr[   Úurllib3Údisable_warningsr   re   rf   rg   r`   r^   r   Úgetenvr   ÚSessionr    r   ÚupdateÚverifyr$   r0   r4   rR   rx   Ú__name__© rS   r/   ú<module>r…      sä   ðß 1× 1× 1Ó 1Û Ø €× Ñ Ô ðð (€Ø$€	Ø€Ø€Ø&€Ø€	ð QØOØ'ñ€ð ˆB�I‰I�kÐ#4Ó5€	à
ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ Ø€„ð	Ø‡K�K� "€KÔ%òò,ò4$òlFNðP ˆzÒÙ	…Gð øðI	Ùús   ÂB9 Â9B=