本文档基于实际案例,演示如何使用 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 |
注意事项
- ref 编号是临时的 - 每次
state后编号可能会变化,不要跨命令复用 - 等待页面加载 - 搜索后用
wait time 3等待结果 - 使用 && 链式调用 - 保持同一会话,避免 ref 丢失
- 先 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 |