公众号的文章也能抓:走 mp.weixin.qq.com 的 DOM(#js_content),
按 data-src 取图,不靠通用抽取器——它会把公众号的图全丢掉。
正文里的外链图下载进我们自己的存储(最多 12 张、单张 8 MB),
地址改成 /attachments/{id}/raw?签名:公众号那边一换图,外链就是一排红叉。
抓取入口谁都能触发,所以只允许公网地址(内网段、回环、链路本地、
保留段、解析不出的域名一律拒绝),否则就是个 SSRF 跳板。
抓不到要说人话:"这个链接没抓下来(原因)。想直接记成任务的话,
加「任务:」前缀再发一次。" 反爬验证页、SPA 空壳都走这条路。
- 新增 services/article.py:extract_url / parse / fetch / store_images / compose_body
- wechat_intake:整条消息是链接时走抓取,落知识草稿,回「已存成知识草稿:标题」
- 依赖 trafilatura==2.0.0(装法见 requirements.txt 注释:必须逐个装再 --no-deps)
- 测试 9 例:链接判定、公众号解析、验证页、通用页裁导航、SSRF 拒绝、图片本地化、失败提示
This commit is contained in:
@@ -21,4 +21,16 @@ httpx==0.28.1
|
||||
# 微信登录态加密(Fernet)与二维码渲染
|
||||
cryptography==50.0.2
|
||||
qrcode==8.2
|
||||
# 微信里发来链接时抓正文:trafilatura 的正文抽取在中文站上最稳,lxml 是它的解析底座;
|
||||
# lxml_html_clean 是 jusText(trafilatura 的回退抽取)还要的模块,lxml 6 起被拆成独立包。
|
||||
trafilatura==2.0.0
|
||||
lxml==6.1.3
|
||||
lxml_html_clean==0.4.6
|
||||
courlan==1.4.0
|
||||
htmldate==1.11.0
|
||||
jusText==3.0.2
|
||||
charset-normalizer==3.5.2
|
||||
urllib3==2.8.0
|
||||
tld==0.13.2
|
||||
dateparser==1.5.0
|
||||
ruff==0.8.4
|
||||
|
||||
Reference in New Issue
Block a user