Ë
    §&˜jb  ã                   óŠ   — d Z ddlZddlZddlZddlmZ dZdZedz   Zdedz   d	d
œZ	dZ
eZd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u–   
å�—æ˜Œç»�æµŽæŠ€æœ¯å¼€å�‘åŒº - ç”Ÿæ€�çŽ¯å¢ƒ
è‡ªå®šä¹‰CMS, WAFå±�è”½åˆ†é¡µ, ä»…çˆ¬ç¬¬1é¡µ(20æ�¡)
https://ncjk.nc.gov.cn/ncjkq/sthj01/bmxxgk_list.shtml
é    N)Úurljoinz/root/search.dbzhttps://ncjk.nc.gov.cnz/ncjkq/sthj01/bmxxgk_list.shtmlzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36ú/zzh-CN,zh;q=0.9)z
User-AgentÚRefererzAccept-Languageu   å�—æ˜Œç»�å¼€åŒºç”Ÿæ€�çŽ¯å¢ƒc                 óL  — | j                  t        t        dd¬«      }d|_        |j                  }t        j                  d|t
        j                  «      }g }|D ]G  \  }}}t        t        |«      }|j                  |j                  «       ||j                  «       dœ«       ŒI |S )u1   èŽ·å�–åˆ—è¡¨é¡µï¼ˆä»…ç¬¬1é¡µï¼ŒWAFå±�è”½åˆ†é¡µï¼‰é   F©ÚheadersÚtimeoutÚverifyúutf-8zd<a href="([^"]*)"[^>]*title="([^"]*)"[^>]*>.*?</a>\s*<span[^>]*class="time"[^>]*>(\d{4}-\d{2}-\d{2}))ÚtitleÚurlÚdate)ÚgetÚLIST_URLÚHEADERSÚencodingÚtextÚreÚfindallÚDOTALLr   ÚappendÚstrip)	ÚsessionÚrÚhtmlÚitemsÚresultsÚhrefr   Údate_strÚfull_urls	            ú/root/gov_crawler/crawl_ncjk.pyÚget_listr#      s™   € à�‰”H¤g°rÀ%ˆÓH€AØ€A„JØ�6‰6€Dä�J‰JØoØŒb�i‰ió€Eð €GØ!&ò Ñˆˆe�XÜœ8 TÓ*ˆØ�‰Ø—[‘[“]ØØ—N‘NÓ$ñ
õ 	ðð €Nó    c                 ón  — 	 | j                  |t        dd¬«      }d|_        |j                  }t        j                  d|t        j                  «      }|r|j                  d	«      j                  «       nd}|r>t        j                  d
d|«      }t        j                  dd|«      }|j                  «       }t        j                  d|«      }d}|r7d}|D ]+  \  }	}
t        ||	«      }|d|› d|
j                  «       › d�z  }Œ- |dz  }|r||z  }|ddœS # t        $ r}dt        |«      dœcY d}~S d}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹r   Fr   r   Ú )ÚcontentÚerrorNzN<div[^>]*class="article-content[^"]*"[^>]*>.*?<UCAPCONTENT>(.*?)</UCAPCONTENT>é   z\s+style="[^"]*"z\s+class="[^"]*"zF<a[^>]*href="([^"]*\.(?:pdf|doc|docx|xls|xlsx|zip)[^"]*)"[^>]*>([^<]+)u>   <div class="attachments"><p><strong>é™„ä»¶ï¼š</strong></p><ul>z<li><a href="z" target="_blank">z	</a></li>z</ul></div>)r   r   r   r   Ú	ExceptionÚstrr   Úsearchr   Úgroupr   Úsubr   r   )r   r   r   r   ÚeÚ	content_mr'   ÚattsÚatt_htmlÚatt_hrefÚatt_nameÚatt_urls               r"   Ú
get_detailr6   -   sI  € ð0Ø�K‰K˜¤W°bÀˆKÓGˆØˆŒ
Ø�v‰vˆô
 —	‘	ØYØŒb�i‰ió€Iñ -6ˆi�o‰o˜aÓ ×&Ñ&Ô(¸2€GáÜ—&‘&Ð,¨b°'Ó:ˆÜ—&‘&Ð,¨b°'Ó:ˆØ—-‘-“/ˆô �:‰:ØQØó€Dð €HÙØSˆØ"&ò 	_ÑˆH�hÜ˜c 8Ó,ˆGØ˜-¨ yÐ0BÀ8Ç>Á>ÓCSÐBTÐT]Ð^Ñ^‰Hð	_ð 	�MÑ!ˆáØ�8Ñˆà¨Ñ,Ð,øô? ò 0Ø¬¨A«Ñ/Õ/ûð0ús   ‚,D Ä	D4ÄD/Ä)D4Ä/D4c                 ó’  — | j                  «       }d}|D ]Ÿ  }|d   }|d   }|d   }|d   }|sŒ|j                  d|f«       |j                  «       rŒ>t        j                  dd|«      d d	 }	t        j                  dd|«      j                  «       }
|j                  d
||||	t        ||df«       |dz  }Œ¡ | j                  «        |S )Nr   r   r   r'   r   ú)SELECT id FROM gov_raw WHERE page_url = ?z<[^>]+>r&   éÈ   z�INSERT OR IGNORE INTO gov_raw (title, page_url, content, summary, site_name, publish_date, source_url, category) VALUES (?, ?, ?, ?, ?, ?, ?, ?)u   çŽ¯è¯„å…¬ç¤ºr)   )ÚcursorÚexecuteÚfetchoner   r.   r   Ú	SITE_NAMEÚcommit)Úconnr   ÚcurÚsavedÚitemr   r   r'   Úpub_dateÚsummaryÚcontent_plains              r"   Ú
save_to_dbrF   U   sÝ   € Ø
�+‰+‹-€CØ€EØò ˆØ�W‘ˆØ�5‰kˆØ�y‘/ˆØ˜‘<ˆáØà�‰Ð?À#ÀÔHØ�<‰<Œ>Øä—&‘&˜ R¨Ó1°$°3Ð7ˆÜŸ™˜z¨2¨wÓ7×=Ñ=Ó?ˆà�‰ð _Ø�C˜ '¬9°hÀÀ^ÐTô	
ð
 	�‰
‰ð+ð, 	‡K�K„MØ€Lr$   c                  óV  — dd l } | j                  t        «      }t        j                  «       }t        |«      }t        dt        |«      › �«       |j                  «       }|D ]E  }|j                  d|d   f«       |j                  «       sŒ*t        d«       |j                  «         y  |D ]E  }t        ||d   «      }|j                  d«      rt        d|d   d d	 › d
|d   › �«       Œ>|d   |d<   ŒG t        ||«      }|j                  «        t        dt        |«      › d|› �«       y )Nr   zList items: r8   r   z-Existing record found, skipping (incremental)r(   z  ERROR r   r   z: r'   zDone. Crawled: z, New: )Úsqlite3ÚconnectÚDB_PATHÚrequestsÚSessionr#   ÚprintÚlenr:   r;   r<   Úcloser6   r   rF   )rH   r?   r   r   r@   rB   ÚdetailÚdb_saveds           r"   ÚmainrR   r   s!  € ÛØ�?‰?œ7Ó#€DÜ×ÑÓ €Gä�WÓ€EÜ	ˆLœ˜U›˜Ð
%Ô&ð �+‰+‹-€CØò ˆØ�‰Ð?À$ÀuÁ+ÀÔPØ�<‰<�>ÜÐAÔBØ�J‰JŒLÙðð ò ,ˆÜ˜G T¨%¡[Ó1ˆØ�:‰:�gÔÜ�H˜T '™]¨3¨BÐ/Ð0°°6¸'±?Ð2CÐDÔEØØ  Ñ+ˆˆYŠð,ô ˜$ Ó&€HØ‡J�J„LÜ	ˆOœC ›J˜< w¨x¨jÐ
9Õ:r$   Ú__main__)Ú__doc__rK   r   ÚsysÚurllib.parser   rJ   ÚBASE_URLr   r   r=   ÚSITE_URLr#   r6   rF   rR   Ú__name__© r$   r"   ú<module>r[      sy   ðñó
 Û 	Û 
Ý  à
€Ø#€ØÐ7Ñ7€ð DØ˜#‰~Ø'ñ€ð
 *€	Ø€òò*%-òPò:;ð: ˆzÒÙ…Fð r$   