本文档基于实际案例,演示如何使用 opencli browser 命令抓取网站内容。

环境准备

1. 安装 opencli

npm install -g jackwener/opencli

2. 启动 daemon 并检查状态

opencli daemon stop
opencli doctor

正常输出:

opencli v1.7.8 doctor (node v22.14.0)

[OK] Daemon: running on port 19825 (v1.7.8)
[OK] Extension: connected (v1.0.2)
[OK] Connectivity: connected in 2.7s

Everything looks good!

案例一:知乎搜索

打开知乎首页并搜索

# 打开知乎首页
opencli browser open "https://www.zhihu.com" && opencli browser wait selector "input" --timeout 10000

# 获取页面状态,找到搜索框的 ref 编号
opencli browser state

输入搜索关键词并执行搜索

# 使用 ref 编号 13 输入文字,然后点击搜索按钮 ref 15
opencli browser type 13 "两性" && opencli browser click 15

# 等待搜索结果加载
opencli browser wait time 3

# 获取搜索结果
opencli browser find --css ".List-item" --limit 15

从搜索结果提取文章

每次 find 会返回匹配项列表,每个条目包含:
- nth - 序号
- ref - 元素引用编号
- text - 文章摘要
- visible - 是否可见

示例输出:

{
  "nth": 0,
  "ref": 145,
  "tag": "div",
  "text": "关于两性关系,你曾有哪些「颠覆三观」的认知?3 回答 · 1004 浏览...",
  "visible": true
}

案例二:同花顺财经新闻

打开新闻页面

opencli browser open "https://tushare.pro/news/10jqka" --focus

# 等待页面加载
opencli browser wait time 3
opencli browser state

使用站内搜索

# 先获取搜索框 ref
opencli browser state

# 输入关键词并搜索
opencli browser type 25 "港股" && opencli browser click 26

# 等待搜索结果
opencli browser wait time 2

常用命令参考

页面操作

命令 说明
opencli browser open "<url>" 打开网址
opencli browser open "<url>" --focus 打开网址并聚焦窗口
opencli browser state 获取页面状态和元素列表
opencli browser wait time <秒> 等待指定秒数
opencli browser wait selector "<css>" 等待元素出现

元素交互

命令 说明
opencli browser type <ref> "<文本>" 向输入框输入文字
opencli browser click <ref> 点击元素
opencli browser keys Enter 按回车键
opencli browser scroll down 向下滚动

内容提取

命令 说明
opencli browser find --css "<css>" --limit N 查找元素
opencli browser extract --chunk-size N 提取页面正文
opencli browser get title 获取页面标题
opencli browser get url 获取当前URL

注意事项

  1. ref 编号是临时的 - 每次 state 后编号可能会变化,不要跨命令复用
  2. 等待页面加载 - 搜索后用 wait time 3 等待结果
  3. 使用 && 链式调用 - 保持同一会话,避免 ref 丢失
  4. 先 state 再操作 - 不确定元素位置时先获取页面状态

完整示例:抓取知乎两性话题

# 1. 打开知乎
opencli browser open "https://www.zhihu.com" && opencli browser wait selector "input" --timeout 10000

# 2. 获取页面状态
opencli browser state

# 3. 输入搜索词(假设搜索框是 ref 13)
opencli browser type 13 "两性" && opencli browser click 15

# 4. 等待结果
opencli browser wait time 3 && opencli browser state

# 5. 提取文章列表
opencli browser find --css ".List-item" --limit 15

常见错误处理

错误 原因 解决
invalid_selector CSS 选择器语法错误 使用数字 ref 而非 [13] 格式
selector_not_found 元素未找到 先执行 wait selector 再操作
not_found ref 已失效 重新执行 state 获取新 ref