做调研最痛苦的不是”搜不到”,是”搜到的太散”。同一个关键词,你得在百度搜一遍、Google搜一遍、知乎搜一遍、B站搜一遍……最后手动合并去重,眼睛都花了。能不能让一个脚本帮你跑16个搜索引擎,自动聚合、自动去重、自动按重要性排序?能。
一、问题:单一搜索引擎的盲区
每个搜索引擎都有局限:
- 百度 —— 中文第一,但对英文查询不友好,结果常常是SEO堆砌的中文页面
- Google —— 全球最强,但国内经常CAPTCHA或被屏蔽
- DuckDuckGo —— 反爬最弱,但中文结果差
- Bing CN —— 国内能用,但覆盖度有限
- 垂直引擎(知乎/微博/抖音/B站)—— 内容不开放给通用搜索引擎,需要站内搜索
单一引擎的盲区让你漏掉20-40%的高质量结果。多源聚合能补盲——1个引擎找不到的内容,另外15个引擎可能找得到。
二、解决:16引擎聚合(9全球+7中文)
不靠API,靠URL pattern + CSS选择器。每个搜索引擎都有可预测的查询URL:
| 引擎 | URL Pattern |
|---|---|
google.com/search?q={q} | |
| Bing | bing.com/search?q={q} |
| DuckDuckGo HTML | duckduckgo.com/html/?q={q} |
| 百度 | baidu.com/s?wd={q} |
| 搜狗 | sogou.com/web?query={q} |
| 360 | so.com/s?q={q} |
| … | … |
完整16个引擎(9全球 + 7中文):Google、Bing、DuckDuckGo、Brave、Startpage、Qwant、Ecosia、Yahoo、Yandex + 百度、搜狗、360、Bing CN、神马、中国搜索、头条搜索。
用 Playwright 浏览器抓每个引擎的 SERP(搜索结果页),用 CSS 选择器提取 <h3><a> 标题链接 + <p> 摘要。
三、核心算法:跨引擎加权排序
抓完16个引擎的原始结果(动辄100-200条),怎么排序?3 步算法:
步骤1:URL 归一化
每个URL都得先归一化:
- 移除 fragment(
#xxx) - URL参数排序(
?a=1&b=2和?b=2&a=1归一为同一) - 域名小写
- 移除 utm 追踪参数(utm_source/utm_medium/utm_campaign)
让同一篇内容的不同分享链接被识别为同一条。
步骤2:跨引擎去重
URL完全相同(归一化后)只保留第一条;URL不同但hostname相同 + title高度相似(Levenshtein距离<20%),合并保留。
步骤3:加权排序
每条结果计算权重分:
score = 引擎内排名倒数 + 跨引擎出现次数 × 0.5 + 域名权威加权
= 1/rank_in_engine + 0.5 × (engines_count - 1) + domain_authority_bonus
域名权威加权:
| 域名后缀 | 加权 |
|---|---|
.gov.cn / .edu.cn | +2.0 |
wikipedia.org | +1.5 |
github.com | +1.0 |
.com.cn | +0.3 |
关键:同一URL在3个引擎出现,score自动 +1.0,权重自然高于只在1个引擎出现的URL。这就是”多源验证”在算法上的体现。
四、工作流:4步从 query 到 top 20
[输入:query + 可选 engines 列表]
↓
Step 1: 引擎选择
- 不指定 → 默认全16引擎
- engines=global → 只跑9个全球引擎
- engines=cn → 只跑7个中文引擎
- engines=google,baidu,ddg → 自定义子集
↓
Step 2: 抓取(推荐先串行,再并发)
- 串行(默认):~30秒/引擎 × 16 = 8分钟,最低反爬风险
- 小并发(4):~2分钟
- 大并发(8):~1分钟
↓
Step 3: 解析 + 归一化 + 去重
↓
Step 4: 加权排序 + 输出 top N(默认20)
每个引擎有独立的 CSS 选择器模板,详见 resources/engines.json。
五、反爬与降级:跑了没结果怎么办
3 层降级策略:
- 单引擎失败 2 轮 → 标记 failed → 跳过。结果里
engines_failed列出。 - CAPTCHA 触发 → 提示切换代理或休息 5 分钟。持续403/Captcha说明IP被临时封。
- DuckDuckGo HTML 是反爬最弱的(无需Playwright,纯HTTP)—— 默认作为 fallback,任何时候都能跑。
输出 JSON 示例:
{
"success": true,
"query": "本地大模型",
"engines_used": ["google", "baidu", "bing", "ddg"],
"engines_failed": ["brave"],
"total_results_raw": 156,
"total_results_deduped": 87,
"results": [
{
"rank": 1,
"title": "本地大模型部署指南",
"url": "https://github.com/user/repo",
"engines": ["google", "baidu", "bing"],
"engines_count": 3,
"score": 3.0
},
...
]
}
六、实战:3个真实场景怎么用
场景1:调研竞品 —— 查”AI编程助手”,一次性看到 GitHub 上的开源项目、知乎的专业评测、36氪/虎嗅的商业分析、小红书的用户反馈。
场景2:SEO 关键词覆盖度检查 —— 写完一篇关于”AI财务自动化”的文章,跑16个引擎搜主关键词,看自己排第几、竞品排第几、哪些长尾关键词没覆盖。
场景3:技术问题多角度验证 —— 报”Python asyncio 内存泄漏”这种bug,stackoverflow、github issues、CSDN、掘金各搜一遍,聚合去重后看真实情况。
场景4(隐藏):找稀缺资料 —— 有些技术资料只在垂直论坛或小众博客有,通用引擎搜不到。多源聚合能把这些”长尾”内容挖出来。
想直接抄作业?
把这套方法的完整资料打包好了:SKILL.md 完整方法论 + multi_search.py(Playwright Python 实现,支持16引擎串行/并发)+ ddg_search.py(DuckDuckGo 纯HTTP fallback,反爬最弱)+ engines.json(16引擎URL pattern + CSS选择器)+ 域名权威加权表 + utm参数剥离表。即开即用,pip install playwright && playwright install chromium 就能跑。
📦 资料包下载链接:https://v.v8l.cn/s/vtDwRoX
单一引擎的盲区让你漏掉20-40%的高质量结果。多源聚合 + 跨引擎加权 = 用算法替代人工合并去重。调研效率提升10倍不夸张——你省下的不是搜索时间,是”看到不同来源后重新建立判断”的时间。
#AI搜索 #多引擎聚合 #调研 #SEO #AI工具 #内容创作
本文由 AI 辅助创作,方法论与脚本为原创,配图/排版由人工完成。