Ë
    ä({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mZ ddlm	Z	 ddl
mZmZ ddlZddlZdZdZdZeZd	Zd
ZdZej,                  j/                  dd«      Zej2                  j5                  ej2                  j7                  ej2                  j9                  e«      «      d«      ZdZdedœZ d„ Z!d„ Z"dd„Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)e*dk(  r e)«        yy)u¿  
æ¢§å·žä¸´æ¸¯ç»�æµŽåŒºç®¡ç�†å§”å‘˜ä¼š - é€šçŸ¥å…¬å‘Š (www.wuzhou.gov.cn/wzlgjjqglwyh/zfxxgk/fdzdgk_lg/wjzl_lg/tzgg/)
CMS: å¹¿è¥¿æ”¿åºœé›†çº¦åŒ–å¹³å�° (TRS) - ä¸Žè—¤åŽ¿ tengxian å�Œæ¬¾
åˆ—è¡¨: <ul class="more-list"><li><span>æ—¥æœŸ</span><a href="./tXXX.shtml" title="å®Œæ•´æ ‡é¢˜">æ ‡é¢˜</a></li>
      åˆ†é¡µ createPageHTML(æ€»é¡µæ•°, å½“å‰�, "index","shtml","æ€»æ�¡æ•°") â†’ index_N.shtml (æœ¬æ �ç›®å�•é¡µ12æ�¡)
è¯¦æƒ…: meta ArticleTitle / meta PubDate / div.article-con > div.trs_editor_view (æ­£æ–‡ HTML)
ç‰¹æ®Š: çº¯ PDF é™„ä»¶å…¬å‘Š(æ— è¯¦æƒ…é¡µ) â†’ æ­£æ–‡ = æ ‡é¢˜ + URL å†…åµŒæ®µ; å¤–é“¾(rsj.wuzhou.gov.cnç­‰)è·³è¿‡
ç”¨æ³•: python3 crawl_wuzhou_lg_tzgg.py [--pages=N | N] [--sync] [--sync-only]
é    N)Údatetime)Úurljoin)ÚThreadPoolExecutorÚas_completedu+   æ¢§å·žä¸´æ¸¯ç»�æµŽåŒºç®¡å§”ä¼š-é€šçŸ¥å…¬å‘Šzhttp://www.wuzhou.gov.cnzDhttp://www.wuzhou.gov.cn/wzlgjjqglwyh/zfxxgk/fdzdgk_lg/wjzl_lg/tzgg/zwww.wuzhou.gov.cnu   å¹¿è¥¿z
2020-01-01ÚDB_PATHz/root/search.dbzquality_results.dbé   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36)z
User-AgentÚRefererc                 ó°   — t        j                  dd| xs d«      } t        j                  dd| «      } t        j                  dd| «      j                  «       S )Nz$&middot;|&nbsp;|&#160;|\u200b|\ufeffÚ u   ^[â€¢Â·]\s*z\s+ú )ÚreÚsubÚstrip)Úts    ú)/root/gov_crawler/crawl_wuzhou_lg_tzgg.pyÚclean_titler   (   sG   € Ü
�‰Ð6¸¸AºGÀÓD€AÜ
�‰ˆ~˜r 1Ó%€AÜ�6‰6�&˜#˜qÓ!×'Ñ'Ó)Ð)ó    c                 óò   — t        j                  d| xs d«      }|r[t        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      «      }}}|d›d|d›d|d›�S y)	Nu-   (\d{4})[å¹´\-/. ](\d{1,2})[æœˆ\-/. ](\d{1,2})r   é   é   é   Ú04dú-Ú02d©r   ÚsearchÚintÚgroup)ÚsÚmÚyÚmoÚds        r   Únormalize_dater$   .   sk   € Ü
�	‰	ÐBÀAÂGÈÓL€AÙÜ�q—w‘w˜q“z“?¤C¨¯©°«
£O´S¸¿¹À»³_ˆqˆ2ˆØ�C�˜˜"˜S˜  1 S 'Ð*Ð*Ør   c                 ó  — t        |«      D ]C  }	 t        j                  | dt        ¬«      }d|_        |j
                  dk(  r|j                  c S ŒE y # t        $ r'}||dz
  k  rdd l}|j                  d«       Y d }~Œrd }~ww xY w)Né   )ÚtimeoutÚheaderszutf-8éÈ   r   r   r   )
ÚrangeÚrequestsÚgetÚHEADERSÚencodingÚstatus_codeÚtextÚ	ExceptionÚtimeÚsleep)ÚurlÚretriesÚiÚrespÚer2   s         r   Úfetchr9   6   s�   € Ü�7‹^ò 	ˆð	Ü—<‘< ¨R¼ÔAˆDØ#ˆDŒMØ×Ñ 3Ò&Ø—y‘yÒ ð 'ð		ð øô	 ò 	Ø�7˜Q‘;ŠÛØ—
‘
˜1”ÿøð	ús   �=AÁ	BÁA>Á>Bc                 ór   — t        j                  d| xs d«      }|rt        |j                  d«      «      S dS )NzcreatePageHTML\s*\(\s*(\d+)r   r   r   )Úhtmlr    s     r   Úget_page_countr<   D   s0   € Ü
�	‰	Ð0°$²*¸"Ó=€AÙŒ3ˆq�w‰w�q‹z‹?Ð& QÐ&r   c           
      óX  — g }| s|S t        «       }t        j                  d| t        j                  «      D ]ñ  }|j	                  d«      j                  «       |j	                  d«      j                  «       |j	                  d«      j                  «       }}}t        |«      }t        |«      xs/ t        t        j                  dd|j	                  d«      «      «      }	||v rŒ¬|j                  |«       |j                  d«      st        ||«      n|}
|j                  |	|
||d	œ«       Œó |S )
ug   æ��å�– ul.more-list ä¸­çš„æ�¡ç›®ï¼ˆPC/ç§»åŠ¨ç«¯å�Œä»½åŽ»é‡�ï¼‰ã€‚è¿”å›ž [{title,url,pub_date,href_raw}]zV<li>\s*<span>([^<]*)</span>\s*<a[^>]*href="([^"]+)"[^>]*title="([^"]*)"[^>]*>(.*?)</a>r   r   r   ú<[^>]+>r   é   Úhttp)Útitler4   Úpub_dateÚhref_raw)Úsetr   ÚfinditerÚDOTALLr   r   r$   r   r   ÚaddÚ
startswithr   Úappend)r;   Úbase_urlÚitemsÚseenr    Údate_sÚhrefÚ
title_attrrB   rA   Ú
detail_urls              r   Úextract_list_itemsrQ   I   sÿ   € à€EÙØˆÜ‹5€DÜ�[‰[ØaØŒb�i‰ióò 
bˆð $%§7¡7¨1£:×#3Ñ#3Ó#5°q·w±w¸q³z×7GÑ7GÓ7IÈ1Ï7É7ÐSTË:×K[ÑK[ÓK]�j�ˆÜ! &Ó)ˆÜ˜JÓ'ÒZ¬;´r·v±v¸jÈ"ÈaÏgÉgÐVWËjÓ7YÓ+ZˆØ�4‰<ØØ�‰�ŒØ48·O±OÀFÔ4K”W˜X tÔ,ÐQUˆ
Ø�‰˜u¨ZÀXÐ[_Ñ`Õað
bð €Lr   c           	      óX
  ‡‡— t        | «      }|sy d}t        j                  d|«      }|rt        |j	                  d«      «      }|sVt        j                  d|t        j
                  «      }|r/t        t        j                  dd|j	                  d«      «      «      }|sdt        j                  d|t        j
                  «      }|r=t        t        j                  dd|j	                  d«      j                  «       «      «      }d}t        j                  d|«      }|rt        |j	                  d«      «      }|sVt        j                  d	|t        j
                  «      }|r/t        t        j                  dd|j	                  d«      «      «      }d }t        j                  d
|t        j
                  «      }|r’|j	                  d«      }|j                  d«      }t        j                  d|t        j
                  «      }|r|j	                  d«      Šn9t        j                  d|«      }	|	r|d |	j                  «       dz    n|d |dz    ŠndŠt        j                  dd‰t        j                  t        j                  z  ¬«      Št        j                  dd‰t        j                  t        j                  z  ¬«      Šg }
d}t        j                  d|t        j
                  «      }|r|j	                  d«      }‰dz   |z   }t        j                  d|«      D ]á  }|j	                  d«      j                  «       t        |j	                  d«      «      }}t        j                  d|t        j                  «      sd|v sŒf|j                  d«      r|n)|j                  d«      r	t        |z   nt!        t"        |«      Št%        ˆfd„|
D «       «      rŒ¸|
j'                  |xs |j)                  d«      d   ‰dœ«       Œã d„ }t        j                  d|‰«      Št        j                  d|‰«      Št        j                  d d‰t        j                  t        j                  z  ¬«      Št        j                  d!d‰«      Št        j                  d"d#‰«      Š|
rDt%        ˆfd$„|
D «       «      }|s.dj+                  d%„ |
D «       «      }‰j-                  «       dz   |z   Št/        t        j                  dd‰«      j                  «       «      }d&‰v }d'‰v xs d(‰v }|d)k  r|s|s	|
s|d|g d*œS |‰||
d*œS )+Nr   z/<meta\s+name="ArticleTitle"\s+content="([^"]*)"r   z-<div\s+id="NewsArticleTitle"[^>]*>(.*?)</div>r>   z<title>(.*?)</title>u   [-_â€”]\s*.*$z*<meta\s+name="PubDate"\s+content="([^"]*)"z.<div\s+id="NewsArticlePubDay"[^>]*>(.*?)</div>z-<div\s+class="trs_editor_view[^"]*"[^>]*>(.*)z</div>u"   (.*?)</div>\s*<!--\s*æ­£æ–‡e\s*-->zC</div>\s*</div>\s*<!--|</div>\s*</div>\s*<div class="(footer|share)é   z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>zB<div\s+id="(?:downloadfile|article-file|relfile)"[^>]*>(.*?)</div>ú
z,<a[^>]*href="([^"]+)"[^>]*>([^<]{0,120})</a>r   z0\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|7z|et|dps)$z/document/downloadr@   ú/c              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­w©r4   N© )Ú.0ÚaÚabs_urls     €r   ú	<genexpr>zparse_detail.<locals>.<genexpr>—   s   øè ø€ Ò9¨q�q˜‘x 7Õ*Ñ9ùs   ƒéÿÿÿÿ©Únamer4   c                 óÌ  — | j                  d«      j                  «       }|j                  d«      s"|j                  d«      s|j                  d«      r| j                  d«      S |j                  d«      r$| j                  d«      j                  |d|z   «      S | j                  d«      j                  ||j                  d«      rt        |z   «      S t        t        |«      «      S )	Nr   r@   Ú
javascriptú#r   z//zhttp:rV   )r   r   rH   ÚreplaceÚBASE_URLr   Ú	LIST_BASE)r    rN   s     r   Úabs_linkzparse_detail.<locals>.abs_link›   s°   € Ø�w‰w�q‹z×ÑÓ!ˆØ�?‰?˜6Ô" d§o¡o°lÔ&CÀtÇÁÐWZÔG[Ø—7‘7˜1“:ÐØ�?‰?˜4Ô Ø—7‘7˜1“:×%Ñ% d¨G°d©NÓ;Ð;Ø�w‰w�q‹z×!Ñ! $¸4¿?¹?È3Ô;O¬°4©ÓnÐnÔU\Ô]fÐhlÓUmÓnÐnr   zhref="([^"]+)"zsrc="([^"]+)"zI<div[^>]*class="[^"]*(share|ewm|qrcode|print|bshare)[^"]*"[^>]*>.*?</div>z
<p>\s*</p>z<p[^>]*>ú<p>c              3   ó,   •K  — | ]  }|d    ‰v –— Œ y­wrX   rY   )rZ   r[   Ú	body_htmls     €r   r]   zparse_detail.<locals>.<genexpr>¬   s   øè ø€ Ò:°�a˜‘h )Ô+Ñ:ùs   ƒc              3   ó`   K  — | ]&  }d |d   › dt        j                  |d   «      › d�–— Œ( y­w)z<p><a href="r4   ú">r`   ú</a></p>N)Úhtml_modÚescape)rZ   r[   s     r   r]   zparse_detail.<locals>.<genexpr>®   s3   è ø€ ÒmÐcd ¨a°©h¨Z°r¼(¿/¹/È!ÈFÉ)Ó:TÐ9UÐU]Ô^Ñmùs   ‚,.z<imgz<iframeÚvideor   ©rA   ÚcontentrB   Úattachments)r9   r   r   r   r   rF   r   r   r$   ÚfindÚstartÚSÚIrE   rH   re   r   rf   ÚanyrI   ÚsplitÚjoinÚrstripÚlen)r4   Ú	html_textrA   r    rB   Úbody_elÚrawÚendÚm2ÚcutÚattsÚatt_zoneÚm_zoneÚatt_sourcesrN   r`   rg   Úhas_attÚatt_htmlÚtext_lenÚhas_imgÚ	has_videor\   rj   s                         @@r   Úparse_detailrŒ   ]   sa  ù€ Ü�c“
€IÙØà€EÜ
�	‰	ÐDÀiÓP€AÙÜ˜AŸG™G A›JÓ'ˆÙÜ�I‰IÐFÈ	ÔSU×S\ÑS\Ó]ˆÙÜ¤§¡ z°2°q·w±w¸q³zÓ BÓCˆEÙÜ�I‰IÐ-¨y¼"¿)¹)ÓDˆÙÜ¤§¡Ð'7¸¸Q¿W¹WÀQ»Z×=MÑ=MÓ=OÓ PÓQˆEà€HÜ
�	‰	Ð?ÀÓK€AÙÜ! !§'¡'¨!£*Ó-ˆÙÜ�I‰IÐGÈÔTV×T]ÑT]Ó^ˆÙÜ%¤b§f¡f¨Z¸¸Q¿W¹WÀQ»ZÓ&HÓIˆHà€GÜ
�	‰	ÐBÀIÌrÏyÉyÓY€AÙà�g‰g�a‹jˆØ�h‰h�xÓ ˆä�Y‰YÐ<¸cÄ2Ç9Á9ÓMˆÙØŸ™ ›‰Iô —)‘)ÐbÐdgÓhˆCÙ25˜Ð-˜cŸi™i›k¨A™oÑ.¸3¸yÀÀqÁ¸>‰Iàˆ	ä—‘Ð3°R¸Ì"Ï$É$ÔQS×QUÑQUÉ+ÔV€IÜ—‘Ð1°2°yÌÏÉÌrÏtÉtÉÔT€Ið €DØ€HÜ�Y‰YÐ\Ð^gÔik×irÑirÓs€FÙØ—<‘< “?ˆØ˜dÑ" XÑ-€KÜ�[‰[ÐHÈ+ÓVò SˆØ—W‘W˜Q“Z×%Ñ%Ó'¬°Q·W±W¸Q³ZÓ)@ˆdˆÜ�9‰9ÐHÈ$ÔPR×PTÑPTÔUÐYmÐquÒYuØ"Ÿo™o¨fÔ5‘dÈtÏÉÐ_bÔOc¼HÀtºOÔipÔqzð  }Aó  jBˆGÜÓ9°DÔ9Õ9Ø—‘ TÒ%@¨T¯Z©Z¸«_¸RÑ-@ÈÑQÕRðSòoô —‘Ð(¨(°IÓ>€IÜ—‘Ð'¨°9Ó=€Iô —‘ÐcÐegÐirÔz|×z~Ñz~ô  BD÷  BFñ  BFñ  {Fô  G€IÜ—‘�} b¨)Ó4€IÜ—‘�{ E¨9Ó5€IáÜÓ:°TÔ:Ó:ˆÙØ—w‘wÑmÐhlÔmÓmˆHØ!×(Ñ(Ó*¨TÑ1°HÑ<ˆIä”2—6‘6˜* b¨)Ó4×:Ñ:Ó<Ó=€HØ˜	Ð!€GØ˜YÐ&Ò>¨'°YÐ*>€IØ�!‚|™G©I¹dØ¨2¸8ÐTVÑWÐWØ y¸hÐW[Ñ\Ð\r   c                 ó0  — t        j                  t        «      }|j                  d«       |j	                  «       }|j                  d«       d}| D ]Î  }	 |j                  d|j                  dd«      |j                  dd«      |j                  dd«      |j                  d	d«      |j                  d
d«      |j                  dd«      |j                  dd«      |j                  dd«      |j                  dd«      |j                  dd«      f
«       ||j                  z  }ŒÐ |j                  «        |j                  «        t        d|› dt        | «      |z
  › �«       |S # t        $ r,}t        d|j                  dd«      › d|› �«       Y d}~�Œ@d}~ww xY w)u%   æœ¬åœ° quality_results.dbï¼ˆå¹‚ç­‰ï¼‰úPRAGMA busy_timeout=300000aî  CREATE TABLE IF NOT EXISTS crawl_results (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        site_id INTEGER DEFAULT 0,
        title TEXT, url TEXT, content TEXT,
        publish_date TEXT, summary TEXT,
        domain TEXT, category TEXT DEFAULT '',
        content_hash TEXT, crawl_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        industry TEXT DEFAULT '', group_name TEXT DEFAULT '',
        script_name TEXT DEFAULT '', attachments TEXT DEFAULT '[]',
        UNIQUE(domain, url)
    )r   z¥INSERT OR IGNORE INTO crawl_results (domain, title, url, content, publish_date, summary, industry, group_name, script_name, attachments) VALUES (?,?,?,?,?,?,?,?,?,?)Údomainr   rA   r4   rr   rB   ÚsummaryÚindustryÚ
group_nameÚscript_namers   ú[]z  [push] ERR ú: Nz[push_local] new=z skip=)Úsqlite3ÚconnectÚ
QUALITY_DBÚexecuteÚcursorr,   Úrowcountr1   ÚprintÚcommitÚcloser|   )Úrecordsr“   ÚconnÚcurÚn_newÚrr8   s          r   Ú
push_localr¤   ¹   sp  € ä�?‰?œ:Ó&€DØ‡L�LÐ-Ô.Ø
�+‰+‹-€CØ‡K�Kð 
	ô 

ð €EØò :ˆð
	:Ø�K‰Kð xØ—‘�x Ó$ a§e¡e¨G°RÓ&8¸!¿%¹%ÀÀrÓ:JØ—‘�y "Ó% q§u¡u¨Z¸Ó'<¸a¿e¹eÀIÈrÓ>RØ—‘�z 2Ó&¨¯©¨l¸BÓ(?Ø—‘�} bÓ)¨1¯5©5°ÀÓ+EðGôð �S—\‘\Ñ!‰Eð:ð 	‡K�K„MØ‡J�J„LÜ	Ð˜e˜W F¬3¨w«<¸Ñ+=Ð*>Ð
?Ô@Ø€Løô ò 	:Ü�M !§%¡%¨¨b£/Ð!2°"°Q°CÐ8×9Ò9ûð	:ús   ÁCE Å 	FÅ)!FÆFc                  ó¼  — 	 t        j                  t        «      } | j                  d«       | j                  dt        f«      j                  «       }| j                  «        |st        d«       yt        j                  t        d¬«      }|j                  d«       |j                  d«       d	x}}	 |D ]Â  }|\	  }}}	}
}}}}}|j                  d
|f«      }|j                  «       }	 |rF|j                  d||	xs ddd |
xs d|xs ddd |xs d|xs d|xs d|xs d|d	   f	«       |dz  }nH|j                  d|||	xs ddd |
xs d|xs ddd |xs d|xs d|xs d|xs dt        |f«       |dz  }ŒÄ |j                  «        |j                  dt        f«       |j                  «        |j                  dt        f«      j                  «       d	   }|j                  «        t        d|› d|› d|› d�«       y# t        $ r}t        d|› �«       Y d}~yd}~ww xY w# t        $ r}t        d|› d|› �«       Y d}~�ŒŽd}~ww xY w# |j                  «        w xY w)u;   quality_results.db â†’ /root/search.db gov_raw + gov_searchrŽ   z�SELECT title, url, content, publish_date, summary, industry, group_name, script_name, attachments FROM crawl_results WHERE domain=? ORDER BY idz[sync] local read ERR: Nu   [sync] æœ¬åœ°æ²¡æœ‰æ•°æ�®i,  )r'   zPRAGMA journal_mode=WALr   z'SELECT id FROM gov_raw WHERE page_url=?zƒUPDATE gov_raw SET title=?, content=?, publish_date=?, summary=?, industry=?, group_name=?, script_name=?, attachments=? WHERE id=?r   i ¡ r”   r   z«INSERT INTO gov_raw (title, page_url, content, publish_date, summary, industry, group_name, script_name, attachments, site_name, source_url) VALUES (?,?,?,?,?,?,?,?,?,?,?)z  [sync] ERR r•   z±INSERT INTO gov_search(rowid,title,site_name,summary) SELECT r.id,r.title,r.site_name,r.summary FROM gov_raw r WHERE r.id NOT IN (SELECT rowid FROM gov_search) AND r.site_name=?z.SELECT COUNT(*) FROM gov_raw WHERE site_name=?z[sync] OK updated=z
 inserted=u    DBå…±õ   æ�¡)r–   r—   r˜   r™   ÚDOMAINÚfetchallrž   r1   rœ   r   ÚfetchoneÚ	SITE_NAMEr�   )r    Úrowsr8   ÚdstÚupdÚinsr£   rA   r4   rr   rB   r�   ÚindÚgrpÚsnÚattr¡   ÚrowÚtotals                      r   Úsync_to_serverrµ   Ü   s‘  € ð
Ü�‰œzÓ*ˆØ�‰Ð1Ô2Ø�|‰|ð ^ÜˆIó
÷ ‰(‹*ð 	ð 	�
‰
Œñ ÜÐ)Ô*ØÜ
�/‰/œ'¨3Ô
/€CØ‡K�KÐ)Ô*Ø‡K�KÐ,Ô-Ø€M€Cˆ#ðØò 	2ˆAØHIÑEˆE�3˜ ¨7°C¸¸bÀ#Ø—+‘+ÐGÈ#ÈÓPˆCØ—,‘,“.ˆCð2ÙØ—K‘Kð ^Ø ¢¨B°°Ð 8¸(º.ÀbÈ7Ê=ÐVXÐZ^Ð[^ÐJ_Øš  C¢I¨2¨rªx°R¸ºÀÀcÈ!ÁfðNôOð ˜1‘H‘Cà—K‘Kð FØ  g¢m°°W°fÐ%=¸xº~È2ÐPWÒP]Ð[]Ð_cÐ`cÐOdØš  C¢I¨2¨rªx°R¸ºÀÄiÐQTðVôWð ˜1‘H�Cøð!	2ð& 	�
‰
ŒØ�‰ðQô ˆLô		ð
 	�
‰
ŒØ—‘ÐLÌyÈlÓ[×dÑdÓfÐghÑiˆà�	‰	ŒÜ	Ð˜s˜e :¨c¨U°&¸¸¸sÐ
CÕDøôQ ò ÜÐ'¨ sÐ+Ô,Üûðûô8 ò 2Ü˜ c U¨"¨Q¨CÐ0×1Ò1ûð2ûð 	�	‰	�úsP   ‚AG= Â14I	 Ã&BH!Å6A!I	 Ç=	HÈHÈHÈ!	IÈ*IÈ;I	 ÉIÉI	 É	Ic                  ó~
  — dt         j                  v } d }dt         j                  v }t         j                  dd  D ]O  }|j                  d«      r 	 t        |j	                  dd«      d   «      }Œ4|j                  «       sŒEt        |«      }ŒQ t        d|› d| › �«       | rt        «        y t        t        «      }|st        d«       y t        |«      }|r||kD  r|}t        d	|› �«       g }t        |«      D �]
  }|d
k(  r|}n-t        › d|› d�}	t        |	«      }|st        d|dz   › d�«        nÕt        |t        «      }
g }|
D ]€  }|d   j                  d«      r&t        |d   vrt        d|d   d d › d|d   › �«       Œ=t!        j"                  d|d   t         j$                  «      rd|d<   nd|d<   |j'                  |«       Œ‚ t        d|dz   › dt)        |
«      › dt)        |«      › d�«       |j+                  |«       �Œ t-        «       }g }|D ]/  }|d   |v rŒ|j/                  |d   «       |j'                  |«       Œ1 t        dt)        |«      › d�«       g }t1        t2        ¬«      5 }|D �ci c].  }|j5                  d«      rŒ|j7                  t8        |d   «      |“Œ0 }}t;        |«      D �]  }||   }|j=                  «       }|€!t        d |d   d d › �«       |d   d!|d"   g d#œ}|d"   r'|d"   t>        k  rt        d$|d"   › d%|d   d d › �«       Œht        t@        |d   xs |d   |d   |d&   |d"   xs |d"   t!        jB                  d'd!|d&   «      d d( d!tD        tF        jH                  jK                  t         j                  d
   «      |d)   rtM        jN                  |d)   d¬*«      nd+d,œ}|j'                  |«       �Œ 	 d d d «       |D ]â  }|j5                  d«      sŒ|d   }|d   xs |j	                  d-«      d.   }d/tQ        jR                  |d   «      › d0|› d1tQ        jR                  |«      › d2�}|j'                  t        t@        |d   |||d"   |d   d!tD        tF        jH                  jK                  t         j                  d
   «      tM        jN                  ||d3œgd¬*«      d,œ«       Œä t        d4t)        |«      › �«       |rHtU        |tF        jH                  jK                  t         j                  d
   «      «       |rt        «        y y y # t
        $ r Y �Œïw xY wc c}w # 1 sw Y   �ŒhxY w)5Nz--sync-onlyz--syncr   z--pages=ú=z[WuzhouLG] max_pages=z sync_only=u   [list] æ— æ³•èŽ·å�–åˆ—è¡¨é¡µu   [list] æ€»é¡µæ•°=r   Úindex_z.shtmlz[list] Pu    èŽ·å�–å¤±è´¥r4   r@   u     [skipå¤–é“¾] rA   é(   z -> z"\.(pdf|doc|docx|xls|xlsx|zip|rar)$rC   TÚis_attachmentFu   : åŽŸå§‹u
   æ�¡ ä¿�ç•™r¦   u   [total] åˆ—è¡¨åŽ»é‡�å�Ž u    æ�¡)Úmax_workersz	  [fail] r   rB   rq   z  [cutoff] r   rr   r>   r)   rs   )Úensure_asciir”   )r�   Ú	site_namerA   r4   rr   rB   r�   r‘   r’   r“   rs   rV   r^   rh   z</p>
<p><a href="rl   rm   r_   z[total] valid=)+ÚsysÚargvrH   r   ry   Ú
ValueErrorÚisdigitrœ   rµ   r9   ÚLIST_URLr<   r*   rf   rQ   r§   r   r   rw   rI   r|   ÚextendrD   rG   r   ÚMAX_WORKERSr,   ÚsubmitrŒ   r   ÚresultÚCUTOFFrª   r   ÚGROUPÚosÚpathÚbasenameÚjsonÚdumpsrn   ro   r¤   )Ú	sync_onlyÚ	max_pagesÚdo_syncr[   r}   Útotal_pagesÚ	all_itemsÚpgÚ	page_htmlÚpage_urlrK   ÚkeptÚitrL   ÚuniqÚvalidÚexecutorÚfut_mapÚfutÚdetÚrecÚatt_urlÚatt_nameÚbodys                           r   Úmainrâ     sS  € Ø¤§¡Ð)€IØ€IØœ#Ÿ(™(Ð"€GÜ�X‰X�a�bˆ\ò ˆØ�<‰<˜
Ô#ðÜ §¡¨¨Q£°Ñ 2Ó3‘	ð �Y‰Y�[Ü˜A›‰Iðô 
Ð! ) ¨K¸	°{Ð
CÔDÙÜÔØä”h“€IÙÜÐ,Ô-ØÜ  Ó+€KÙ�[ 9Ò,ØˆÜ	Ð˜k˜]Ð
+Ô,à€IÜ�KÓ ó ˆØ�Š7Ø!‰Iä#˜ F¨2¨$¨fÐ5ˆHÜ˜h›ˆIÙÜ˜  A¡  mÐ4Ô5ÙÜ" 9¬iÓ8ˆàˆØò 	ˆBØ�%‰y×#Ñ# FÔ+´¸bÀ¹iÑ0GÜ˜¨¨7©°C°RÐ(8Ð'9¸¸bÀ¹i¸[ÐIÔJØÜ�y‰yÐ>ÀÀ:ÁÔPR×PTÑPTÔUØ&*��?Ò#à&+��?Ñ#Ø�K‰K˜�Oð	ô 	�˜˜A™˜˜h¤s¨5£z l°*¼SÀ»Y¸KÀsÐKÔLØ×Ñ˜Öð-ô0 ‹5€DØ€DØò ˆØˆe‰9˜ÑØØ�‰��E‘ÔØ�‰�B�ð	ô
 
Ð$¤S¨£Y K¨tÐ
4Ô5à€EÜ	¬Ô	4ð ¸ØJNÖnÀBÐVX×V\ÑV\Ð]lÕVm�8—?‘?¤<°°E±Ó;¸RÑ?ÐnˆÐnÜ Ó(ó 	ˆCØ˜‘ˆBØ—*‘*“,ˆCØˆ{Ü˜	 " W¡+¨c¨rÐ"2Ð!3Ð4Ô5Ø " 7¡¸ÈÈ:ÉÐgiÑj�Ø�:Š 3 z¡?´VÒ#;Ü˜ C¨
¡OÐ#4°A°c¸'±lÀ3ÀBÐ6GÐ5HÐIÔJØä Ü&Ø˜W™Ò4¨¨G©Ø˜%‘yØ˜y™>Ø 
™OÒ=¨r°*©~ÜŸ6™6 *¨b°#°i±.ÓAÀ$À3ÐGØÜ#Ü!Ÿw™w×/Ñ/´·±¸±Ó<ØUXÐYfÒUgœtŸz™z¨#¨mÑ*<È5ÕQÐmqñˆCð �L‰L˜Öñ-	÷ð6 ò ˆØ�6‰6�/Õ"Ø˜‘iˆGØ˜'‘{Ò< g§m¡m°CÓ&8¸Ñ&<ˆHØœŸ™¨¨G©Ó5Ð6Ð6HÈÈ	ÐQSÔT\×TcÑTcÐdlÓTmÐSnÐnvÐwˆDØ�L‰LÜ Ü&Ø˜G™ØØØ˜z™NØ˜g™;ØÜ#Ü!Ÿw™w×/Ñ/´·±¸±Ó<Ü#Ÿz™z°HÀWÑ+MÐ*NÐ]bÔcñõ ðô& 
ˆNœ3˜u›:˜,Ð
'Ô(ÙÜ�5œ"Ÿ'™'×*Ñ*¬3¯8©8°A©;Ó7Ô8ÙÜÕð ð øôI ò Úðüòl o÷ñ ús7   ÁTÉ.T2É3T-Ê
T-Ê&D%T2Ô	T*Ô)T*Ô-T2Ô2T<Ú__main__)r   )+Ú__doc__r   r¾   rÉ   rÌ   r;   rn   r   Úurllib.parser   Úconcurrent.futuresr   r   r+   r–   rª   re   rÂ   rf   r§   rÈ   rÇ   Úenvironr,   r   rÊ   rz   ÚdirnameÚabspathÚ__file__r˜   rÄ   r-   r   r$   r9   r<   rQ   rŒ   r¤   rµ   râ   Ú__name__rY   r   r   ú<module>rì      sï   ðñó 
Û 
Û 	Û Û Ý Ý  ß ?Û Û à9€	Ø%€ØQ€Ø€	Ø	€Ø€Ø	€Ø
�*‰*�.‰.˜Ð$5Ó
6€Ø�W‰W�\‰\˜"Ÿ'™'Ÿ/™/¨"¯'©'¯/©/¸(Ó*CÓDÐFZÓ[€
Ø€ð DØñ€ò*òóò'ò
ò(Y]òx òF2Eòjoðd ˆzÒÙ…Fð r   