Ë
    ¸¬ujÖ  ã                   óÌ   — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlZddl	Z	dZ
dZ e	j                  dd	«      Zd
ZddiZdZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u“   å�—åŸŽåŽ¿äººæ°‘æ”¿åºœ - çŽ¯è¯„ä¿¡æ�¯ çˆ¬è™«
List: POST /module/xxgk/search.jsp (53 pages, 941 records)
Detail: /art/YYYY/M/D/art_27230_XXXXXX.html
é    N)ÚBeautifulSoup)Údatetime)Úurljoinzhttps://www.jxnc.gov.cnu   jxnc.gov.cn-çŽ¯è¯„ä¿¡æ�¯Ú	SEARCH_DBz/root/search.dbÚeiaz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z
2023-06-16é   c                  ób   — t        j                  t        «      } t         j                  | _        | S )N)Úsqlite3ÚconnectÚDB_PATHÚRowÚrow_factory)Úconns    ú/root/gov_crawler/crawl_jxnc.pyÚget_connr      s!   € Ü�?‰?œ7Ó#€DÜ—{‘{€DÔØ€Kó    c                 óR   — | syt        j                  dd| j                  «       «      S )NÚ z\s+ú )ÚreÚsubÚstrip)Útexts    r   Ú
clean_textr      s!   € ÙØÜ�6‰6�&˜#˜tŸz™z›|Ó,Ð,r   c                 ó`   — t        j                  d|› d�| «      }|r|j                  d«      S dS )Nz<meta[^>]+name=["\']z%["\'][^>]*content=["\']([^"\']+)["\']é   r   )r   ÚsearchÚgroup)ÚhtmlÚnameÚms      r   Úget_metar"   !   s3   € Ü
�	‰	Ð)¨$¨Ð/TÐUÐW[Ó\€AÙˆ1�7‰7�1‹:Ð" Ð"r   c                 óR  — 	 t        j                  | t        d¬«      }|j                  «        d|_        |j                  }t        |d
«      }t        |d«      }|s%|j                  d«      }|r|j                  d¬«      }|sy	t        |«      }t        |d«      }t        j                  d|«      }|r|j                  d«      nd}|s)t        j                   d|«      }	|	r|	j                  d«      }|sy	t        |d«      }
d}dD ]C  }|j                  |«      }|sŒ|j                  d¬«      }t#        |«      dkD  sŒ8t%        |«      } n d}|r-t        |d
«      }|j                  dd¬«      }t        |dd «      }||||fS # t
        $ r}t        d| › d|› �d¬«       Y d}~y	d}~ww xY w)u&   èŽ·å�–è¯¦æƒ…é¡µ - æ ‡é¢˜/æ—¥æœŸ/æ­£æ–‡é   ©ÚheadersÚtimeoutúutf-8u     [WARN] èŽ·å�–è¯¦æƒ…é¡µå¤±è´¥ z: T©ÚflushN)NNNNzhtml.parserÚArticleTitlez6h2, .bt-article-y h2, .bt-article-02 h2, .artile_zw h2)r   ÚPubDateú(\d{4}-\d{2}-\d{2})r   u(   å�‘å¸ƒæ—¶é—´[ï¼š:]\s*(\d{4}-\d{2}-\d{2})ÚContentSourcer   )z#zoomz#barrierfree_containerz!.bt-article-y.bfr_article_contentz
.artile_zwz.bt-article-02z.content-boxz.article-contentz	.con_textz.TRS_Editorz.Custom_UnionStylez#contenté2   r   )Ú	separatorr   éÈ   )ÚrequestsÚgetÚHEADERSÚraise_for_statusÚencodingÚ	ExceptionÚprintr   r   r"   Ú
select_oneÚget_textr   r   Úmatchr   r   ÚlenÚstr)ÚurlÚrespÚer   ÚsoupÚtitleÚh2Úpub_dateÚ
pub_date_mÚpub_mÚsourceÚcontentÚselectorÚelÚtxtÚsummaryÚtext_objr   s                     r   Úextract_detailrN   &   sº  € ð&Ü�|‰|˜C¬¸"Ô=ˆØ×ÑÔØˆŒð
 �9‰9€DÜ˜˜}Ó-€Dô �T˜>Ó*€EÙØ�_‰_ÐUÓVˆÙØ—K‘K d�KÓ+ˆEÙØ%Ü�uÓ€Eô ˜˜iÓ(€HÜ—‘Ð0°(Ó;€JÙ&0ˆz×Ñ Ô"°d€HÙÜ—	‘	ÐEÀtÓLˆÙØ—{‘{ 1“~ˆHÙØ%ô �d˜OÓ,€Fð €Gð _ò ˆØ�_‰_˜XÓ&ˆÚØ—+‘+ D�+Ó)ˆCÜ�3‹x˜"‹}ä˜b›'�Ùðð €GÙÜ  ¨-Ó8ˆØ× Ñ ¨3°dÐ Ó;ˆÜ˜T $ 3˜ZÓ(ˆà�(˜G WÐ,Ð,øôa ò &ÜÐ/°¨u°B°q°cÐ:À$ÕGÜ%ûð&ús   ‚3F  Æ 	F&Æ	F!Æ!F&c           	      ó0  — d|› d�}	 | j                  t        dz   |i t        ¥ddt        › d�dœ¥d¬	«      }d
|_        |j                  }g }t        j                  d|t        j                  «      D ]¶  }|j                  d«      j                  «       }t        |j                  d«      «      }	t        |j                  d«      «      }
t        j                  d|
«      }|r|j                  d«      nd}|j                  |	|j                  d«      r|nt!        t        |«      |dœ«       Œ¸ t        j"                  d|«      }|rt%        |j                  d«      «      n
t'        |«      }||fS # t
        $ r!}t        d|› d|› �d¬«       g dfcY d}~S d}~ww xY w)u   èŽ·å�–å�•é¡µåˆ—è¡¨z^infotypeId=N00004N00004N00010N00003&jdid=53&area=&divid=div7299&vc_title=&vc_number=&currpage=z&sortfield=z/module/xxgk/search.jspz!application/x-www-form-urlencodedÚXMLHttpRequestú8/col/col27230/index.html?number=N00004N00004N00010N00003)zContent-TypezX-Requested-WithÚRefererr$   )Údatar&   r'   r(   u     [ERROR] APIè¯·æ±‚ç¬¬u   é¡µå¤±è´¥: Tr)   r   Nz|<li[^>]*>\s*<a[^>]*href=['\"]([^'\"]+)['\"][^>]*title=['\"]([^'\"]+)['\"][^>]*>(.*?)</a>\s*<b[^>]*>\s*([^<]+)\s*</b>\s*</li>r   é   é   r-   Úhttp)rB   r>   rD   u   å…±(\d+)æ�¡è®°å½•)ÚpostÚBASE_URLr4   r6   r   r7   r8   r   ÚfinditerÚDOTALLr   r   r   r;   ÚappendÚ
startswithr   r   Úintr<   )ÚsessionÚpagerS   r?   r   r@   Úarticlesr!   ÚhrefrB   Údate_strÚdate_mrD   Útotal_mÚtotal_recordss                  r   Ú
fetch_pagerf   _   s˜  € àkÐlpÐkqÐq|Ð}€DðØ�|‰|œHÐ'@Ñ@Àtð V
ÜðV
à?Ø 0Ü"˜Ð#[Ð\ò	V
ð
 ð ó ˆð  ˆŒØ�y‰yˆð €Hä�[‰[ð 	HØŒb�i‰ióò ˆð �w‰w�q‹z×ÑÓ!ˆÜ˜1Ÿ7™7 1›:Ó&ˆÜ˜aŸg™g a›jÓ)ˆÜ—‘Ð0°(Ó;ˆÙ&,�6—<‘< ”?°$ˆØ�‰ØØŸ?™?¨6Ô2‘4¼ÄÈ$Ó8OØ ñ
õ 	ðô  �i‰iÐ,¨dÓ3€GÙ-4”C˜Ÿ™ aÓ(Ô)¼#¸h»-€Mà�]Ð"Ð"øô7 ò ÜÐ& t f¨K¸°sÐ;À4ÕHØ�1ˆu�ûðús   ˆAE+ Å+	FÅ4FÆ
FÆFc                  óZ  — t        dt        › d�d¬«       t        dt        › �d¬«       t        «       } | j	                  «       }t        j                  t        d«      j                  «       }t        j                  «       }|j                  t        › d�t        d¬	«       t        |d
«      \  }}|t        z   d
z
  t        z  }t        d|› dt        › d|› d�d¬«       t!        |«      }t#        d|d
z   «      D ]G  }t        d|› d|› d�d¬«       t        ||«      \  }	}
|	st        dd¬«        n|j%                  |	«       ŒI t        dt'        |«      › d�d¬«       d}d}d}|D �]]  }|d   }|j)                  d|f«       |j+                  «       r|d
z  }Œ2|j                  d«      }|r/t        j                  |d«      j                  «       }||k  r|d
z  }Œtt        d||z   |z   d
z   › dt'        |«      › d|j-                  d«      d   › �d¬«       t/        |«      \  }}}}|s|r|}|st        d|d   d d › d �d¬«       |d
z  }Œã|rn|d   }t1        |j3                  d!d"«      «      }t        › d�}	 |j)                  d#|||t        ||t4        ||f	«       | j7                  «        |d
z  }t        d$|d d › d%|› �d¬«       �Œ` | j=                  «        t        d)|› d*|› d+|› d,�d¬«       y # t8        $ r6}t        d&|d d' › d(|› �d¬«       | j;                  «        |d
z  }Y d }~�ŒÃd }~ww xY w)-Nz=== u    çˆ¬è™« ===Tr)   u   æ•°æ�®åº“: z%Y-%m-%drQ   é   r%   r   u   æ€»è®°å½•: u   , æ¯�é¡µu   æ�¡, å…±u   é¡µrT   u	   
--- ç¬¬ ú/u    é¡µ ---u     æ— å†…å®¹ï¼Œå�œæ­¢åˆ†é¡µu   
å…±èŽ·å�– u    æ�¡åˆ—è¡¨æ�¡ç›®r   r>   z)SELECT id FROM gov_raw WHERE page_url = ?rD   z  [z] éÿÿÿÿu     [SKIP] æ— æ—¥æœŸ: rB   é(   z...ú-r   zžINSERT OR IGNORE INTO gov_raw (page_url, title, content, site_name, publish_date, summary, category, date_rank, source_url) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)z  [OK] z... | u     [ERROR] å…¥åº“å¤±è´¥: r$   z... - u   
=== å®Œæˆ�: æ–°å¢ž u	   , è·³è¿‡ u	   , é”™è¯¯ z ===)r8   Ú	SITE_NAMEr   r   Úcursorr   ÚstrptimeÚCUTOFF_DATEÚdater2   ÚSessionr3   rX   r4   rf   ÚPER_PAGEÚlistÚrangeÚextendr<   ÚexecuteÚfetchoneÚsplitrN   r]   ÚreplaceÚCATEGORYÚcommitr7   ÚrollbackÚclose)r   ÚcurÚ	cutoff_dtr^   Úfirst_articlesre   Útotal_pagesÚall_articlesr_   r`   Ú_Ú	total_newÚ
total_skipÚtotal_errorÚartr>   rD   Úpub_dtrB   Údetail_daterH   rL   Ú	date_rankÚ
source_urlr@   s                            r   Úmainr�   ‰   st  € Ü	ˆD”�˜;Ð
'¨tÕ4Ü	ˆKœ�yÐ
!¨Õ.ä‹:€DØ
�+‰+‹-€CÜ×!Ñ!¤+¨zÓ:×?Ñ?ÓA€Iä×ÑÓ €Gà‡K�K”8�*ÐTÐUÔ_fÐpr€KÔsô %/¨w¸Ó$:Ñ!€N�MØ ¤8Ñ+¨aÑ/´HÑ<€KÜ	ˆK˜� h¬x¨j¸ÀÀÈSÐ
QÐY]Õ^ä˜Ó'€Lä�a˜ q™Ó)ò &ˆÜ�
˜4˜&  + ¨hÐ7¸tÕDÜ  ¨$Ó/‰ˆ�!ÙÜÐ.°dÕ;ÙØ×Ñ˜HÕ%ð&ô 
ˆLœ˜\Ó*Ð+Ð+;Ð
<ÀDÕIà€IØ€JØ€Kàó /ˆØ�%‰jˆð 	�‰Ð?À#ÀÔHØ�<‰<Œ>Ø˜!‰OˆJØð —7‘7˜:Ó&ˆÙÜ×&Ñ& x°Ó<×AÑAÓCˆFØ˜	Ò!Ø˜a‘�
Øô 	��I˜jÑ(¨Ñ4°QÑ6Ð7°q¼¸\Ó9JÐ8KÈ2ÈcÏiÉiÐX[ËnÐ]_ÑN`ÐMaÐbÐjnÕoÜ/=¸cÓ/BÑ,ˆˆ{˜G Wá™KØ"ˆHÙÜÐ(¨¨W©°c°rÐ):Ð(;¸3Ð?ÀtÕLØ˜1ÑˆKØáØà˜‘LˆEä˜×(Ñ(¨¨bÓ1Ó2ˆ	Ü �zÐ!YÐZˆ
ð	Ø�K‰Kð qØ�e˜W¤i°¸7ÄHÈiÐYcÐdôð �K‰KŒMØ˜‰NˆIÜ�G˜E # 2˜J˜< v¨h¨ZÐ8À×EðW/ðb 	‡J�J„LÜ	Ð! ) ¨I°j°\ÀÈ;È-ÐW[Ð
\ÐdhÖiøô ò 	ÜÐ,¨U°3°B¨Z¨L¸¸q¸cÐBÈ$ÕOØ�M‰MŒOØ˜1ÑŽKûð	ús   É2AK+Ë+	L*Ë4+L%Ì%L*Ú__main__)Ú__doc__r   r2   Úbs4r   r   Úurllib.parser   r
   ÚosrX   rm   Úgetenvr   r{   r4   rp   rs   r   r   r"   rN   rf   r�   Ú__name__© r   r   ú<module>r–      s‰   ðñ÷ Ý Ý Ý  ß à$€Ø&€	Ø
ˆ"�)‰)�KÐ!2Ó
3€Ø€ØÐWÐ
X€Ø€Ø€òò-ò#ò
6-òr'#òTSjðl ˆzÒÙ…Fð r   