#!/usr/bin/env python3 """搜狗微信搜索抓取文章摘要与正文缓存""" import re, subprocess url = "https://weixin.sogou.com/weixin?type=2&query=Harness+%E5%B7%A5%E7%A8%8B+%E8%87%AA%E6%88%91%E6%94%B9%E8%BF%9B%E4%B8%8D%E4%BB%8E%E6%A8%A1%E5%9E%8B%E5%BC%80%E5%A7%8B" r = subprocess.run(["curl", "-sL", url, "-H", "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "--max-time", "25", "-o", "/tmp/sogou.html"], capture_output=True, timeout=40) raw = open("/tmp/sogou.html", encoding="utf-8", errors="ignore").read() print("len:", len(raw)) items = re.findall(r"

(.*?)

", raw, re.S) for it in items[:3]: txt = re.sub(r"<[^>]+>", "", it).strip() print("·", txt[:80]) # 摘要 sps = re.findall(r'class="txt-info"[^>]*>(.*?)

', raw, re.S) for s in sps[:3]: t = re.sub(r"<[^>]+>", "", s).strip() print("摘要:", t[:220]) # 找目标文章的跳转链接(搜狗转链) links = re.findall(r'href="(/link\?url=[^"]+)"', raw) print("links:", len(links)) if links: # 抓第一个link(通常就是最新相关文章) 跟踪跳转拿正文 follow = "https://weixin.sogou.com" + links[0].replace("&", "&") r2 = subprocess.run(["curl", "-sL", "-v", follow, "-H", "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) MicroMessenger/8.0.49", "-H", "Referer: https://weixin.sogou.com/", "--max-time", "25", "-o", "/tmp/sogou-art.html"], capture_output=True, timeout=40, text=True) import os if not os.path.exists("/tmp/sogou-art.html"): print("抓取失败, curl stderr尾部:", (r2.stderr or "")[-300:]) else: art = open("/tmp/sogou-art.html", encoding="utf-8", errors="ignore").read() print("art len:", len(art)) print("含js_content:", "js_content" in art, "| 含环境异常:", "环境异常" in art) m = re.search(r'id="js_content"[^>]*>(.*)$', art, re.S) if m: seg = m.group(1) text = re.sub(r"]*>.*?", "", seg, flags=re.S) text = re.sub(r"<[^>]+>", "\n", text) text = re.sub(r"\n\s*\n+", "\n", text).strip() print("正文长度:", len(text)) open("/tmp/wx-article.txt", "w", encoding="utf-8").write(text) print(text[:1000])