Files
wiki/.claude/skills/policy-radar/tools/__pycache__/scrapers.cpython-312.pyc
T

150 lines
25 KiB
Plaintext
Raw Normal View History

Ë
Ï_jVãó°dZddlZddlZddlZddlZddlZddlmZdZ dZ
ej«Z de _
eje _d.dZdZd/d „Zd
Zd Zd Zd
ZdZdZdZdZdZd/dZdZd/dZdZdZ dZ!dZ"dZ#d/dZ$dZ%dZ&dZ'eedd œeed!d œeed"d œeed#d œeed$d œeed%d œe e!d&d œe"e#d'd œe$e%d(d œe&e'd)d œeed*d œd+œ Z(d,„Z)d-„Z*y)0uÊ
政策雷达 - 政府网站抓å–工具集
æ¯ä¸ªå‡½æ•°è¿”回标准化格å¼: {"title": str, "date": str, "url": str, "content": str}
列表函数返回: [{"title": str, "date": str, "url": str}, ...]
éN)ÚunescapezoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36éFcódti}|r|j|«tjj ||¬«}tjj |t t¬«5}|j«}ddd«dD]} j|«cSjdd¬«S#1swYŒ6xYw#t$rYŒBwxYw) u0通用 HTTP GET,返回解ç åŽçš„ HTML 文本z
User-Agent©Úheaders)ÚtimeoutÚcontextN)úutf-8ÚgbkÚgb2312r
Úreplace)Úerrors) Ú
USER_AGENTÚupdateÚurllibÚrequestÚRequestÚurlopenÚTIMEOUTÚ_SSL_CTXÚreadÚdecodeÚUnicodeDecodeError)ÚurlrÚhdrsÚreqÚrespÚrawÚencs ú|/root/multica_workspaces/8430d182-81f5-4bfe-9273-29fe4c36769e/c5505f5a/workdir/.claude/skills/policy-radar/tools/scrapers.pyÚ_fetchr!à œ*Ð %€DÙØ Ü
.‰.×
Ñ
 ¨dÐ
Ó
3€CÜ × Ñ  ¬W¼hÐ Ó GðÈ4Øi‰i‹kˆ÷àˆð Ø—:‘:˜c“?Ò ð
:‰:g iˆ:Ó ðûô
 Ù ð úsÁ'B-ÂB9Â-B6Â9 CÃCcótjd|tj«}g}|D]U}tjdd|«j «}t |«}|sŒ6t
|«dkDsŒE|j|«ŒW|S)u*从 HTML 中æå–正文段è½ï¼ˆé€šç”¨ï¼‰z<p[^>]*>(.*?)</p>ú<[^>]+>Úé
)ÚreÚfindallÚDOTALLÚsubÚstriprÚlenÚappend)ÚhtmlÚ
paragraphsÚresultÚtexts r Ú_extract_paragraphsr2'sqäÐ0°$¼¿ ¹ ÓB€JØ
€FØ
ò ˆÜv‰vj " (×ܘ‹~ˆÚ ”C˜“I “NØ M‰M˜$Õ ð  ð
€Móc ó ddl}|jj|«}d|d|d}t|«} t j
|«}g}|jdi«jdi«jdi«}t|t«r|jd g«ng} | D}
tjd
d |
jd d ««j«} |
jd
d «} |
jd«r|
jdd «ddnd }
| sŒu| sŒx|j| |
| dœ«ŒŽ|S#tj $rgcYSwxYw)u
中国政府网 - æœç´¢ APIï¼ˆå¯æœç´¢æ–°é—»å‘布会等)
URL: https://sousuo.www.gov.cn/search-gov/data?t=zhengcelibrary&q=...
返回 JSONï¼ŒåŒ…å« title/url/summary
注æ„: 索引有 1-2 周延迟,最新内容å¯èƒ½å°šæœªæ”¶å½•
rNz=https://sousuo.www.gov.cn/search-gov/data?t=zhengcelibrary&q=z&p=z'&n=20&timetype=timeqb&mintime=&maxtime=ÚsearchVOÚcatMapÚzhengcelibraryÚlistVOr#r$ÚtitlerÚpubtimer%©r9Údater)Ú urllib.parseÚparseÚquoter!ÚjsonÚloadsÚJSONDecodeErrorÚgetÚ
isinstanceÚdictr&r)r*r,)ÚkeywordÚpagerÚapi_urlr-ÚdataÚresultsÚ
search_resultÚitemsÚitemr9rr<s r Ú
gov_searchrO7sNóØ ×ј7Ó#€Að ØˆSD Bð ô '?€DðÜz‰z˜$Óˆð€GØ—H‘H˜Z¨Ó¸>×BÐCSÐUWÓX€MÜ/9¸-ÌÔ/Nˆ Ñ ˜h¨Ô +ÐTV€EØòGˆÜz 2 t§x¡x°¸Ó'<Ó=×EˆØh‰hu˜bÓ!ˆØ/3¯x©x¸ Ô/Bˆtx‰x˜  & ÑˆÚ  N‰N U°DÀÑ Gð €Nøô × Ñ òØŠ ðúsµD5Ä5E
Å E
cóätd«}tjd|«}g}|D]G\}}}|j«}|sŒ|j d«rd|ddz}|j |||dœ«ŒI|S)
中国政府网 - 国务院政策文件库
URL: https://www.gov.cn/zhengce/
结构: æœåŠ¡ç«¯æ¸²æŸ“ï¼Œ<li><a href="...">标题</a><span>日期</span></li>
zhttps://www.gov.cn/zhengce/zM<li>\s*<a href="([^"]+)"[^>]*>\s*([^<]+)\s*</a>\s*<span>\s*([\d-]+)\s*</span>ú./éNr;©r!r&r'r*Ú
startswithr,)r-rMrKrr9r<s r Úgov_zhengce_listrUUs‰ô Ð 0€DÜ J‰JØ ó
€Eð€GØCшˆU
ˆÙØ Ø >‰>˜ Ø/°#°a°b°'Ñ9ˆCØ °¸
Cð €Nr3có>t|«}tjd|«}|r|jd«j «nd}tjd|«}|r|jd«j «nd}t |«}|||dj
|«dœS)um
中国政府网 - 政策文章正文
正文在 <div class="pages_content"> 内的 <p> 标签中
ú<title>([^<]+)</title>ér$u#å‘布时间[::]\s*([\då¹´\-./]+)ú
©r9r<rÚcontent©r!r&ÚsearchÚgroupr*r2Újoin©rr-Ú title_matchr9Ú
date_matchr<Ú
content_parass r Ú gov_articlerdksô
#;€Dä—)5°tÓ<€KÙ,7ˆK× Ñ ˜ × (¸R€EäÐAÀ4ÓH€JÙ*4ˆ:× Ñ ˜ × &¸"€DäÓ-€MàØØØ—;‘;˜}Ó ðr3cótd«}tjd|«}g}t«}|D]K\}}|j «}|sŒ||vsŒd|vsŒ#|j |«|j
|dd|zdœ«ŒM|S)u
国新办 - æ–°é—»å‘布会文字实录
注æ„: scio.gov.cn 有åçˆ¬ä¿æŠ¤ï¼Œæ­¤å¤„ä½¿ç”¨ PBC 站点作为镜åƒ
PBC çš„ "国新办举行新闻å‘布会" 系列完整ä¿ç•™äº†å›½æ–°åŠžåŽŸæ–‡
URL: https://www.pbc.gov.cn/goutongjiaoliu/113456/113469/index.html
ú>https://www.pbc.gov.cn/goutongjiaoliu/113456/113469/index.htmlú:<a[^>]*href="(/goutongjiaoliu/[^"]+)"[^>]*>([^<]{10,})</a>u 国新办r$úhttps://www.pbc.gov.cnr;©r!r&r'Úsetr*Úaddr,)r-rMrKÚseenÚhrefr9s r Úscio_press_listrns•ô Ø €Dô
J‰JØ ó
€Eð€GÜ ‹5€DØò
 ˆˆ
ˆÚ T Ò%¨+¸Ò*>Ø H‰HTŒNØ N‰NàØ3°dÑõ
ð
ð €Nr3cóptd«}d}tj||«}g}t«}|D]\}}|j «}|sŒ||vsŒ|j |«tj d|«}d}|r$|jd«} | ddd| dd d| d d
}|j|||d œ«Œƒ|S) u8
æ–°åŽç¤¾ - å—æƒå‘布/时政
注æ„: 使用 www.news.cn(新域å),旧 xinhuanet.com åªæœ‰ 2021 å¹´æ—§æ•°æ®
URL: https://www.news.cn/
结构: æœåŠ¡ç«¯æ¸²æŸ“ï¼Œæ ‡é¢˜åœ¨ <div class="tit"><a href="URL">标题</a></div>
文章链接格å¼: /{channel}/{YYYYMMDD}/{32-hex}/c.html
zhttps://www.news.cn/zz<div class="tit"[^>]*><a[^>]*href=[\'"](https?://www\.news\.cn/[^"\']+/20\d{6}/[a-f0-9]{32}/c\.html)[\'"][^>]*>([^<]+)</a>ú /(20\d{6})/r$rXúér;) r!r&r'rjr*rkr]r^r,)
r-ÚpatternrMrKrlrr9rbr<Úds
r Úxinhuanet_listrwŸô Ð )€DðL€GÜ J‰JÓ %€EØ€GÜ ‹5€DØò G
ˆˆ
ˆÚ ’_Ø H‰HSŒMÜŸ >°3Ó7ˆJ؈Ø×$ 'ؘB˜Q˜%˜  ! A a & ¨¨1¨Q¨q¨6¨(Ð3Ø N‰N U°DÀÑ  Gð €Nr3có¢t|«}tjd|tj«}|stjd|«}|r|j d«j «nd}tjd|tj«}|r|j d«}t
|«}n t
|«}|d|dj|«dœS)u
æ–°åŽç¤¾ - 文章正文
标题: <h1><span class="title">...</span></h1>
正文: <div id="detailContent"> 内的 <p> 标签
z3<h1[^>]*>.*?<span class="title"[^>]*>([^<]+)</span>rWrXr$z1id="detailContent"[^>]*>(.*?)</div>\s*(?:<div|</)rYrZ)r!r&r]r(r^r*r2r_)rr-rar9Ú
content_matchÚ content_htmlrcs r Úxinhuanet_articler{¹ô #‹;€DÜ—)RÐTXÔZ\×ZcÑZcÓd€KÙ Ü—i‘iÐ 9¸4Ó Ù,7ˆK× Ñ ˜ × (¸R€Eä—IRÐTXÔZ\×ZcÑZcÓd€MÙØ*¨1Ó Ü+¨LÓ9‰
ä+¨DÓ1ˆ
àØØØ—;‘;˜}Ó ðr3cótd«}tjd|«}g}t«}|D]“\}}|j «}|sŒ||vsŒt |«dkDsŒ-|j
|«tjd|«}d}|r$|jd«}|ddd |dd
d |d
d }|j||d |zd
œ«Œ•|S)
中国人民银行 - è´§å¸æ”¿ç­–/公告/沟通
URL: https://www.pbc.gov.cn/goutongjiaoliu/113456/113469/index.html
结构: æœåŠ¡ç«¯æ¸²æŸ“ï¼Œ<a href="/goutongjiaoliu/...">标题</a>
rfrgéz/(20\d{6})\d{11}/r$rXNrqrrrsrtrhr;)
r!r&r'rjr*r+rkr]r^r,) r-rMrKrlrmr9rbr<rvs r Úpbc_listr~×ô Ø €Dô
J‰JØ ó
€Eð€GÜ ‹5€DØò ˆˆeØ
ˆÚ Ò%¬#¨e«*°q«.Ø H‰HTŒNäŸÐ#7¸Ó>ˆJ؈DÙØ×$ 'ؘB˜Q˜%˜  ! A a & ¨¨1¨Q¨q¨6¨(Ð3Ø N‰Nà Ø3°dÑõ
ðð" €Nr3cóÌt|«}tjd|«}|r|jd«j «nd}t |«}|d|dj
|«dœS)u>中国人民银行 - 文章正文(正文在 <p> 标签中)rWrXr$rYrZr\©rr-rar9rcs r Ú pbc_articlerúóbä #‹;€DÜ—)5°tÓ<€KÙ,7ˆK× Ñ ˜ × (¸R€EÜÓ-€MàØØØ—;‘;˜}Ó ðr3có†td«}tjd|tj«}g}t «}|D]\}}}|j «}|sŒ||vsŒ|j
|«|jd«s|jd«rd|jdd«z}|j||xsd|dœ«Œ|S)u­
财政部 - 财政新闻/政策
URL: https://www.mof.gov.cn/zhengwuxinxi/caizhengxinwen/
结构: æœåŠ¡ç«¯æ¸²æŸ“ï¼Œ<a href="t202607...">标题</a> + 日期
z3https://www.mof.gov.cn/zhengwuxinxi/caizhengxinwen/z^href="([^"]*t2026[^"]+\.htm)"[^>]*>\s*([^<]{10,80})\s*</a>\s*(?:.*?(\d{4}[-/]\d{2}[-/]\d{2}))?rQÚt20r$r;)
r!r&r'r(rjr*rkrTr
r,)r-rMrKrlrr9r<s r Úmof_listr…ô Ð H€DÜ J‰JØ Ü
‰ ó
€Eð
€GÜ ‹5€DØMшˆU
ˆÚ ’_Ø H‰HSŒMØ~‰~˜# s§~¡~°eÔ'<ØKÈcÏkÉkÐZ^Ð`bÓNcÑcØ N‰N U°D²J¸BÀsÑ
Mð €Nr3có>t|«}tjd|«}|r|jd«j «nd}tjd|«}|r|jd«j «nd}t |«}|||dj
|«dœS)u财政部 - 文章正文rWrXr$u#å‘布日期[::]\s*([\då¹´\-./]+)rYrZr\r`s r Ú mof_articler‡ sä #‹;€DÜ—)5°tÓ<€KÙ,7ˆK× Ñ ˜ × (¸R€EÜÐAÀ4ÓH€JÙ*4ˆ:× Ñ ˜ × &¸"€DÜÓ-€MàØØØ—;‘;˜}Ó ðr3có|dk(rd}n d|dz
d}t|«}tjd|«}g}|D]G\}}}|j«}|sŒ|j d«rd|ddz}|j |||d œ«ŒI|S)
呿”¹å§” - 产业政策/规划
URL: https://www.ndrc.gov.cn/xxgk/
结构: æœåŠ¡ç«¯æ¸²æŸ“ï¼Œ<ul class="u-list"><li><a>标题</a><span>日期(YYYY/MM/DD)</span></li></ul>
分页: index_{page-1}.html
rXzhttps://www.ndrc.gov.cn/xxgk/z#https://www.ndrc.gov.cn/xxgk/index_z.htmlzN<a[^>]*href="([^"]+)"[^>]*>\s*([^<]{10,})\s*</a>\s*<span>\s*([\d/]+)\s*</span>rQzhttps://www.ndrc.gov.cnNr;rS)rGÚlist_urlr-rMrKrr9r<s r Ú ndrc_listrŠ0ð ˆq‚yØ2‰àÀ¹¸
À%ÐÜ  €DÜ J‰JØ ó
€Eð€GØCшˆU
ˆÙØ Ø >‰>˜ Ø+¨c°!°"¨gÑ5ˆCØ °¸SÑ
Cð €Nr3cóPt|«}tjd|«}|r|jd«j «nd}tjd|tj
«}|rt
|jd««}n t
|«}|d|dj|«dœS)u:呿”¹å§” - 文章正文(正文在 div.TRS_Editor 内)rWrXr$z'class="TRS_Editor"[^>]*>(.*?)</div>\s*<rYrZ©r!r&r]r^r*r(r2r_)rr-rar9Ú editor_matchrcs r Ú ndrc_articlerŽKsä #‹;€DÜ—)5°tÓ<€KÙ,7ˆK× Ñ ˜ × (¸R€EÜ—9ÌrÏyÉyÓY€LÙÜ+¨L×,>Ñ,>¸qÓ,AÓB‰
ä+¨DÓ1ˆ
àØØØ—;‘;˜}Ó ðr3có
d}d|d|}t|«}tjd|«}g}t«}|D]F\}}|j «}|sŒ||vsŒ|j |«|j
|dd|zdœ«ŒH|S)u"
è¯ç›‘会 - 主席讲è¯/政策公告
URL: https://www.csrc.gov.cn/csrc/c100028/
结构: HTML 页é¢ï¼ˆAPI 返回空结果,需用 common/searchList 获å HTML)
HTML URL: /common/searchList/{channelid}?_isAgg=true&_isJson=true&_pageSize=18&_template=index&page={N}
Úc100028z*https://www.csrc.gov.cn/common/searchList/z<?_isAgg=true&_isJson=true&_pageSize=18&_template=index&page=zF<a[^>]*href="(/csrc/c100028/c\d+/content\.shtml)"[^>]*>([^<]{10,})</a>r$zhttps://www.csrc.gov.cnr;ri) rGÚ
channel_idrr-rMrKrlÚpathr9s r Ú csrc_listr“]s­ð€JØ 6°z°lÐB~ð@DðEð F€CÜ #‹;€DÜ J‰JØ ó
€Eð€GÜ ‹5€DØò
 ˆˆ
ˆÚ Ò H‰HTŒNØ N‰NàØ4°tÑõ
ð