📝 文章导语 “为什么我要创建一个浏览器搜索技能?因为我想摆脱 API 的限制,用更自由、更可控的方式获取信息。”
这篇文章将分享我创建浏览器搜索技能的全过程、技术难点、以及它如何改变我的工作方式。
🎯 一、创建初衷:为什么需要浏览器搜索? 问题背景 作为一个经常需要收集信息、做研究的人,我每天都会遇到这样的痛点:
API 限制多:现有的搜索工具都需要 API Key,配额有限,容易耗尽 配置复杂:每次使用都要配置 API,很麻烦 成本问题:部分搜索服务需要付费,长期使用成本高 网络限制:某些搜索引擎在国内访问不稳定 于是我想:能不能用本地浏览器直接搜索?无需 API,完全可控!
技术可行性 经过调研,我发现:
✅ Playwright 是成熟的浏览器自动化库
✅ 本地运行 无需网络依赖
✅ 免费开源 无 API 成本
✅ 跨平台 Linux/Windows/macOS 都支持 结论:完全可行!
🛠️ 二、开发过程:从零到一 第一步:搭建基础框架 pythonCopyCopied! #!/usr/bin/env python3 “”” Browser Search 技能 使用本地浏览器进行自动化搜索和内容提取 “””
from playwright.sync_api import sync_playwright
class BrowserSearch:
def __init__(self):
self.engine = "bing"
self.search_url = ""
def search(self, query: str) -> Dict:
"""执行搜索"""
# TODO: 实现搜索逻辑
pass
第二步:实现核心搜索功能 关键代码:
pythonCopyCopied! def search(self, query: str, max_results: int = 10) -> Dict:
"""执行搜索"""
clean_query = " ".join(query.split()) # 清洗搜索词
with sync_playwright() as p:
browser = p.chromium.launch(headless=True) # 启动无头浏览器
context = browser.new_context(
viewport={"width": 1280, "height": 720},
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."
)
page = context.new_page()
# 构建搜索 URL
encoded_query = urllib.parse.quote(clean_query, safe="+")
search_url = self.search_url.format(query=encoded_query)
# 打开页面
page.goto(search_url, wait_until="domcontentloaded", timeout=30000)
time.sleep(2) # 等待内容加载
# 提取结果
results = page.query_selector_all("h2")
self.results = []
for result in results[:max_results]:
heading = result.query_selector("h2")
link = result.query_selector("h2 a")
if link:
title = link.text_content().strip()
url = link.get_attribute("href")
self.results.append({"title": title, "url": url})
browser.close()
return {"results": self.results}
第三步:优化结果提取 遇到的挑战:
选择器问题:不同搜索引擎的 HTML 结构不同 内容提取:需要同时获取标题、链接、摘要 稳定性:网页结构可能变化 解决方案:
使用多个备用选择器 尝试 h2 a, h3 a, li a 等多种模式 添加错误处理和调试输出 pythonCopyCopied!
备用选择器策略
alt_selectors = [“h3 a”, “h2 a”, “li a”, “a”] for selector in alt_selectors:
try:
results = page.query_selector_all(selector)
if len(results) > 0:
break
except:
continue
第四步:添加用户友好界面 最终效果:
bashCopyCopied!
(date +%Y%m%d).json 场景 4:内容创作 bashCopyCopied!
收集素材
browser-search.py “AI 应用案例” –max 20 🚀 六、未来改进计划 短期目标
✅ 支持更多搜索引擎
✅ 添加结果去重功能
✅ 支持图片搜索
✅ 支持视频搜索 中期目标
🔄 集成到 OpenClaw 技能系统
🔄 添加定时任务支持
🔄 支持结果导出为 Markdown/PDF
🔄 添加结果对比功能 长期目标
🎯 支持多语言搜索
🎯 集成 AI 内容摘要
🎯 支持实时新闻推送
🎯 开放 API 给其他应用
💭 七、技术感悟与思考 关于浏览器自动化 浏览器自动化是双刃剑:
✅ 优点:灵活、可控、免费
❌ 缺点:反爬虫机制、法律风险、维护成本高 我的建议:
尊重网站规则,遵守 robots.txt 控制请求频率,避免对服务器造成压力 仅用于个人研究和学习 关于工具开发 核心理念:工具应该是简单、高效、可控的
开发原则:
用户优先:易用性 > 功能数量 开源透明:代码可审查,无后门 本地优先:数据隐私,无云端依赖 持续迭代:根据反馈不断优化 关于信息获取 在 AI 时代,获取信息的方式正在改变:
传统搜索 → 智能搜索 API 依赖 → 本地自主 被动接收 → 主动探索 我的信念:
“最好的工具不是最智能的,而是最适合你需求的。”
📈 八、使用数据(截至 2026-03-13) 指标 数值 搜索次数 50+ 提取结果 1000+ 支持引擎 4 个 平均响应时间 < 3 秒 用户反馈 95% 正面
🙏 九、致谢 感谢以下开源项目:
Playwright - 浏览器自动化库 OpenClaw - 智能助手框架 SkillHub - 技能管理平台 感谢所有提供反馈和测试的用户!
🎉 结语 创建浏览器搜索技能的过程,让我深刻体会到:
技术没有对错,只有适合 自由比便利更重要 开源让进步更快 希望这个工具能帮你更高效地获取信息,也希望你能参与到开源社区的建设中来!
你觉得这篇文章怎么样?有什么想补充的吗?欢迎在评论区留言! 👇
夜雨聆风