Ë
    V_Šj
  ã                   ó
  — 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Z	dZ
dZddiZd	Zd
Zd„ Zd„ Zd„ Zd„ Zedk(  rD ej                  «       Z e«         ed ej                  «       ez
  d›d�ej,                  ¬«       yy)us  
å®‰åº†å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€ - è°ƒæŸ¥å¾�é›†ï¼ˆå¾�é›†å…¬å‘Šï¼‰
https://sthjj.anqing.gov.cn/hdjl/dczj/index.html
CMS: é¾™è®¯Lonsun, å�•é¡µ16æ�¡
åˆ—è¡¨: <a href="/content/article/{ID}" title="å®Œæ•´æ ‡é¢˜">æ ‡é¢˜</a>
æ—¥æœŸ: <span class="date">2025-09-29 è‡³ 2025-10-28</span>
è¯¦æƒ…: h1.ls-article-title + div.j-fontContent.newscontnet
é™„ä»¶: /group4/M00/... .doc/.docx/.pdf
é    N)ÚBeautifulSoupzhttps://sthjj.anqing.gov.cnz0https://sthjj.anqing.gov.cn/hdjl/dczj/index.htmlu%   å®‰åº†å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€-è°ƒæŸ¥å¾�é›†z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36Ú___TBL_Ú___c                 óŠ   ‡— g Šˆfd„}t        j                  d|| t         j                  t         j                  z  ¬«      }|‰fS )uD   ä»ŽHTMLå­—ç¬¦ä¸²ä¸­æ��å�–æ‰€æœ‰<table>æ ‡ç­¾ï¼Œç”¨å”¯ä¸€æ ‡è®°æ›¿æ�¢c                 ó‚   •— t        ‰«      }t        › |› t        › �}‰j                  || j	                  d«      f«       |S )Nr   )ÚlenÚTBL_MARKER_PREFIXÚTBL_MARKER_SUFFIXÚappendÚgroup)ÚmÚidxÚkeyÚmarkerss      €ú&/root/gov_crawler/crawl_aqsthj_dczj.pyÚreplace_tablez)extract_table_tags.<locals>.replace_table   s?   ø€ Ü�'‹lˆÜ"Ð# C 5Ô):Ð(;Ð<ˆØ�‰˜˜QŸW™W Q›ZÐ(Ô)Øˆ
ó    z<table[^>]*>.*?</table>)Úflags)ÚreÚsubÚDOTALLÚ
IGNORECASE)Úhtml_strr   Úmodifiedr   s      @r   Úextract_table_tagsr      sC   ø€ à€Gôô
 �v‰vØ"ØØÜ�i‰iœ"Ÿ-™-Ñ'ô	€Hð �WÐÐr   c                 ót  — g }t        | d«      }|j                  d«      }|st        dt        j                  ¬«       |S |j                  dd¬«      D ]ã  }|j                  dd	d
¬«      }|sŒ|d   j                  «       }|j                  dd«      j                  «       xs |j                  d	¬«      }|sŒd|j                  d«      r|n	t        › |› �}|j                  dd¬«      }	d}
|	r7t        j                  d|	j                  «       «      }|r|j                  d«      }
|j                  |||
dœ«       Œå |S )u   è§£æž�åˆ—è¡¨é¡µúhtml.parserzul.collect-listzWARN: collect-list ul not found©ÚfileÚliF)Ú	recursiveÚaTÚtitle2)ÚhrefÚclass_r$   ÚtitleÚ ©ÚstripÚhttpÚspanÚdate)r%   ú(\d{4}-\d{1,2}-\d{1,2})é   )r&   Úurlr,   )r   Ú
select_oneÚprintÚsysÚstderrÚfind_allÚfindr)   ÚgetÚget_textÚ
startswithÚBASE_URLr   Úsearchr   r   )ÚhtmlÚitemsÚsoupÚulr    r"   r$   r&   Úfull_urlÚ	date_spanÚdate_strÚdms               r   Ú
parse_listrC   *   s)  € à€EÜ˜˜}Ó-€DØ	�‰Ð*Ó	+€BÙÜÐ/´c·j±jÕAØˆØ�k‰k˜$¨%ˆkÓ0ò JˆØ�G‰G�C˜d¨8ˆGÓ4ˆÙØØ�‰y�‰Ó ˆØ—‘�g˜rÓ"×(Ñ(Ó*ÒD¨a¯j©j¸t¨jÓ.DˆÙØØŸ?™?¨6Ô2‘4¼8¸*ÀTÀFÐ8KˆØ—G‘G˜F¨6�GÓ2ˆ	ØˆÙÜ—‘Ð5°y×7IÑ7IÓ7KÓLˆBÙØŸ8™8 A›;�Ø�‰˜u¨X¸xÑHÕIðJð  €Lr   c                 óB  — 	 t        j                  | t        d¬«      }d|_        |j	                  «        t        |j                  d«      }d}d}|j                  d	«      }|r|j                  d
¬«      }t        j                  d|j                  «      D ]  }|j                  d«      } n |s6t        j                   d|j                  dd «      }|r|j                  d«      }d}	|j                  d«      }
|
s|j                  d«      }
g }|
�r(|
j#                  dd
¬«      D ]®  }|d   j%                  «       }t        j                   d|t        j&                  «      sŒ<|j                  d
¬«      xs |j)                  d«      d   }|j+                  d«      r|n	t,        › |› �}|j/                  ||dœ«       d|› d|› d�}|j1                  |«       Œ° t3        |
«      }t5        |«      \  }}t        |d«      }|j#                  ddg«      D ]  }|j7                  «        Œ |j#                  g d¢«      D ]  }|j9                  «        Œ |j#                  d «      D ]$  }|j;                  d!d"«       |j9                  «        Œ& |j#                  d#«      D ]$  }|j;                  d!d$«       |j9                  «        Œ& |j#                  d%«      D ]  }|j1                  d$«       Œ |j                  dd&¬'«      }	t        j<                  d(d"|	«      j%                  «       }	|D ]  \  }}|	j?                  |d"|› d"�«      }	Œ |	rtA        |	j%                  «       «      dk  rd)| › d*|xs d+› d,�}	|	|||fS # t
        $ r.}t        d|› �t        j                  ¬«       ddg dfcY d}~S d}~ww xY w)-u   èŽ·å�–è¯¦æƒ…é¡µæ­£æ–‡é   ©ÚheadersÚtimeoutúutf-8z  ERROR fetching detail: r   r'   Nr   zh1.ls-article-titleTr(   z-PubDate[^>]+content="(\d{4}-\d{1,2}-\d{1,2})"r.   r-   i¸  zdiv.j-fontContent.newscontnetz9#aa_tabs1 .j-fontContent, .ls-article-info .j-fontContentr"   )r$   r$   z\.(docx?|pdf|pptx?)($|\?)ú/éÿÿÿÿr*   )r/   Únameú[z](ú)ÚscriptÚstyle)r+   ÚfontÚbÚstrongÚiÚemÚuÚpr   z

Údivú
ÚbrF)Ú	separatorr)   z\n{3,}z<p><a href="z">u	   æ— æ­£æ–‡z</a></p>)!Úrequestsr6   ÚHEADERSÚencodingÚraise_for_statusÚ	Exceptionr1   r2   r3   r   Útextr0   r7   r   Úfinditerr   r:   r4   r)   r   Úsplitr8   r9   r   Úreplace_withÚstrr   Ú	decomposeÚunwrapÚinsertr   Úreplacer   )r/   ÚrÚer=   Ú
full_titleÚpub_dateÚh1r   rB   Úcontent_htmlÚbody_divÚattachmentsÚa_tagÚhÚfnameÚ
attach_urlÚmd_linkÚ	body_htmlÚtable_markersÚ	body_soupÚtagrW   ÚdrZ   r   Útbl_htmls                             r   Úget_contentr}   E   s™  € ðÜ�L‰L˜¤g°rÔ:ˆØˆŒ
Ø	×ÑÔô
 ˜Ÿ™ Ó/€DØ€JØ€Hð 
�‰Ð.Ó	/€BÙ	Ø—[‘[ t�[Ó,ˆ
ô �[‰[ÐIÈ1Ï6É6ÓRò ˆØ—7‘7˜1“:ˆÙðñ Ü�Y‰YÐ1°1·6±6¸%¸4°=ÓAˆÙØ—x‘x “{ˆHð €LØ�‰Ð>Ó?€HÙà—?‘?Ð#^Ó_ˆà€KÚà×&Ñ& s°Ð&Ó6ò 	,ˆEØ�f‘×#Ñ#Ó%ˆAÜ�y‰yÐ5°q¼"¿-¹-ÕHØŸ™¨T˜Ó2ÒF°a·g±g¸c³lÀ2Ñ6F�Ø"#§,¡,¨vÔ"6™Q¼x¸jÈÈÐ<L�
Ø×"Ñ"¨:¸uÑ#EÔFà˜e˜W B z l°!Ð4�Ø×"Ñ" 7Õ+ð	,ô ˜“Mˆ	Ü#5°iÓ#@Ñ ˆ	�=ô " )¨]Ó;ˆ	ð ×%Ñ% x°Ð&9Ó:ò 	ˆCØ�M‰M�Oð	ð ×%Ñ%Ò&UÓVò 	ˆCØ�J‰J�Lð	ð ×#Ñ# CÓ(ò 	ˆAØ�H‰H�Q˜ÔØ�H‰H�Jð	ð ×#Ñ# EÓ*ò 	ˆAØ�H‰H�Q˜ÔØ�H‰H�Jð	ð
 ×$Ñ$ TÓ*ò 	"ˆBØ�O‰O˜DÕ!ð	"ð !×)Ñ)°B¸eÐ)ÓDˆÜ—v‘v˜i¨°Ó>×DÑDÓFˆð +ò 	L‰MˆC�Ø'×/Ñ/°°t¸H¸:ÀTÐ5JÓK‰Lð	Lñ œ3˜|×1Ñ1Ó3Ó4°rÒ9Ø% c U¨"¨ZÒ-F¸;Ð,GÀxÐPˆà˜ ;°
Ð:Ð:øôc ò ÜÐ)¨!¨Ð-´C·J±JÕ?Ø�2�r˜2ˆ~Õûðús   ‚3M' Í'	NÍ0#NÎNÎNc                  óø  — t        j                  t        t        d¬«      } d| _        t        | j                  «      }t        dt        |«      › d�t        j                  ¬«       g }t        |«      D ]î  \  }}t        d|dz   › d	t        |«      › d
|d   d d › d�dt        j                  ¬«       t        |d   «      \  }}}}|d   xs |}	|xs |d   }
|j                  |
d d |d   ||	r|	d d ndt        |d   dt        j                   |d¬«      dœ«       t        dt        |«      › dt        |«      › d�t        j                  ¬«       t#        j$                  d«       Œð |st        dt        j                  ¬«       y dd l}d}|j)                  |d¬ «      }|j+                  d!«       |j+                  d"«       d}|D ]O  }	 |j+                  d#|d   d d |d$   d d% |d&   |d'   d d |d(   |d$   d|d)   f«       |j,                  dkD  r|dz  }ŒQ |j1                  «        |j+                  d+t        f«       |j1                  «        |j3                  «        t        d,|› d-t        |«      › d.�t        j                  ¬«       |D ]=  }t        j4                  |d)   «      |d)<   t        t        j                   |d¬«      «       Œ? y # t.        $ r)}t        d*|› �t        j                  ¬«       Y d }~�Œ4d }~ww xY w)/NrE   rF   rI   u   åˆ—è¡¨: u    æ�¡r   z  [r.   rJ   z] r&   é(   z...ú )Úendr   r/   r,   iô  r'   ÚsyncedF)Úensure_ascii)r&   Úpage_urlÚcontentÚpublish_dateÚ	site_nameÚ
source_urlÚstatusrq   z	OK (body:z
B, attach:rN   g      à?zno datar   z/root/search.dbé<   )rH   zPRAGMA journal_mode=WALzPRAGMA synchronous=OFFz‹INSERT OR IGNORE INTO gov_raw (title, page_url, content, publish_date, site_name, source_url, status, attachments) VALUES (?,?,?,?,?,?,?,?)r„   iè  r…   r†   r‡   rq   z  DB ERROR: a=  
        INSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary)
        SELECT r.rowid, r.title, r.site_name, substr(r.content, 1, 500)
        FROM gov_raw r
        WHERE r.site_name = ?
        AND r.content IS NOT NULL AND r.content != ''
        AND r.rowid NOT IN (SELECT rowid FROM gov_search)
    zDB: +z / z items)r\   r6   ÚLIST_URLr]   r^   rC   ra   r1   r   r2   r3   Ú	enumerater}   r   Ú	SITE_NAMEÚjsonÚdumpsÚtimeÚsleepÚsqlite3ÚconnectÚexecuteÚtotal_changesr`   ÚcommitÚcloseÚloads)rj   r<   Ú	all_itemsrT   Úitemr…   rm   rq   rl   r,   Ú	use_titler’   ÚDB_PATHÚdbÚaddedrk   s                   r   ÚmainrŸ   Ÿ   sí  € Ü�‰”X¤w¸Ô;€AØ€A„JÜ�q—v‘vÓ€EÜ	ˆH”S˜“Z�L Ð
%¬C¯J©JÕ7à€IÜ˜UÓ#ò ‰ˆˆ4Ü��A�a‘C�5˜œ#˜e›*˜ R¨¨W©°c°rÐ(:Ð';¸3Ð?ÀSÌsÏzÉzÕZÜ5@ÀÀeÁÓ5MÑ2ˆ�˜;¨
Ø�F‰|Ò'˜xˆØÒ/ $ w¡-ˆ	Ø×ÑØ˜t �_Ø˜U™ØÙ)-˜D  "™I°2Ü"Ø˜u™+ØÜŸ:™: kÀÔFñ	
ô 		ô 	�	œ#˜g›,˜ z´#°kÓ2BÐ1CÀ1ÐEÌCÏJÉJÕWÜ�
‰
�3�ð!ñ$ ÜˆiœcŸj™jÕ)Øó Ø€GØ	�‰˜¨"ˆÓ	-€BØ‡J�JÐ(Ô)Ø‡J�JÐ'Ô(à€EØò 7ˆð
	7Ø�J‰Jð ^Ø�g‘˜t Ð$ d¨:Ñ&6°u¸Ð&=¸tÀI¹Ø�nÑ% c rÐ*¨D°Ñ,=¸tÀJÑ?OØ˜4 Ñ.ð0ôð ×Ñ !Ò#Ø˜‘
�øð7ð ‡I�I„Kð ‡J�Jð ô ˆôð ‡I�I„KØ‡H�H„Jä	ˆE�%�˜œC 	›NÐ+¨6Ð
2¼¿¹ÕDàò 4ˆÜ"Ÿj™j¨¨mÑ)<Ó=ˆˆ]ÑÜŒd�j‰j˜¨EÔ2Õ3ñ4øô% ò 	7Ü�L  Ð$¬3¯:©:×6Ó6ûð	7ús   ÇAKË	K9ËK4Ë4K9Ú__main__ztime: z.1fÚsr   )Ú__doc__r2   Úosr   rŽ   r\   r�   Úbs4r   r9   r‹   r�   r]   r	   r
   r   rC   r}   rŸ   Ú__name__Út0r1   r3   © r   r   ú<module>r¨      s�   ðñ÷ )× (× (Ý à(€Ø=€Ø3€	àÐWÐ
X€àÐ ØÐ òò"ò6W;òtC4ðL ˆzÒØ	ˆ�‰‹€BÙ„FÙ	ˆF�9�4—9‘9“;˜r‘> #Ð& aÐ
(¨s¯z©zÖ:ð r   