我用 Python 构建了一个 Google 自动完成关键词工具(附源代码)
Source: Dev.to
请提供您想要翻译的完整文本(除代码块和 URL 之外),我将按照要求保持原有的 Markdown 格式并将内容翻译成简体中文。
为什么使用 Google 自动完成?
Google 自动完成是最诚实的关键词数据集之一。
- 每个建议都来自真实搜索
- 它反映用户意图
- 它提前展示长尾查询
在内部,大多数 SEO 工具调用相同的端点:
https://suggestqueries.google.com/complete/search
KeySage 直接连接它 —— 无需 API,无需身份验证。
高级架构
KeySage 是一个单进程桌面应用,带有后台抓取线程。
| 组件 | 技术 |
|---|---|
| UI 层 | Tkinter + ttkbootstrap |
| 网络 | requests |
| 并发 | threading + Event 标志 |
| 数据模型 | set + defaultdict |
| 导出 | TXT / CSV / JSON |
目标是保持简洁且易于改造。
抓取逻辑
每个基础关键词都会经过一个可配置的扩展流水线:
- 基础关键词输入
- 可选的前置/后置词
- 字符扩展:
a–z和a–z + 0–9 - Google 自动完成请求
- 去重
- 实时 UI 更新
示例请求
params = {
"client": "firefox",
"q": query,
"hl": language,
"gl": country
}
response = requests.get(
"https://suggestqueries.google.com/complete/search",
params=params
)
结果通过 app.after() 流式返回到 UI,以保持 Tkinter 线程安全。
在不冻结 UI 的情况下使用线程
Tkinter 是单线程的,因此爬取工作在后台线程中运行。
使用的关键模式:
threading.Thread(..., daemon=True)threading.Event()用于安全取消- 通过
app.after()将 UI 更新调度回主循环
这实现了:
- 实时关键字输出
- 即时取消
- UI 不会卡死
限速与稳定性
Google 不喜欢激进的抓取。KeySage 包含:
- 内置请求间延迟
- 可选代理支持
- 每个循环的安全停止执行
这些措施在不鲁莽的情况下保持应用可用。
自动关键词聚类
抓取后,关键词根据根词进行分组:
root = keyword.split()[0].lower()
clusters[root].append(keyword)
聚类在所有导出格式中保持不变。
导出数据(开发者友好)
支持的格式:
- TXT – 人类可读的聚类
- CSV – SEO 工具和电子表格
- JSON – 自动化和流水线
所有内容保持开放且可编辑。
UI: Tkinter,但不丑
界面使用 ttkbootstrap 来避免默认的 Tkinter 外观。
特性:
- 响应式布局
- 主题化小部件
- 可折叠的高级设置
- 实时滚动输出
- 内置帮助窗口
它是故意保持极简——不使用 Electron,也不使用 Web 堆栈。
EXE 与 源代码
提供以下三种选项:
| 选项 | 价格 | 描述 |
|---|---|---|
| Windows EXE | $7 | 立即运行,无需 Python |
| Full Source Code | $10 | 学习、修改、扩展 |
| EXE + Source | $12 | 两者兼顾 |
👉 在此获取 KeySage:
为什么要发布源代码?
开发者最擅长从真实工具中学习——而不是玩具示例。有了源码,你可以:
- 添加异步请求
- 改进聚类
- 添加新的导出格式
- 集成其他建议来源
- 将其转化为 CLI 或 API
该项目旨在作为基础。
最后思考
KeySage 并不打算取代企业级 SEO 平台。它是一个透明、可 hack 的关键词工具,使用以下技术构建:
- Python
- 常用库
- 简单的架构
- 无供应商锁定
如果你想要一个实际的真实世界爬取 + 桌面应用示例,或是一个你真的能用的工具——这就是为你准备的。
👉 购买 / 下载 KeySage: