searchlisted
Install: claude install-skill CookieMoonPie/google-scholar-lab
# 检索(CDP 通道)
用确认后的关键词跑 `scripts/cdp_search.py`。
## 前置
- Chrome 已按 `docs/SETUP.md` 以持久 profile + 调试端口 9222 启动。
- `websocket-client` 已装(`python -c "import websocket"` 通过即可)。
## 期刊目录(可选)
- 若用户给定了期刊目录(如"只检索 TR-B / TS / EJOR"),把期刊名写进 `journals.txt`(一行一个),检索时加 `--journals journals.txt`,脚本会用 Scholar 的 `source:"期刊名"` 操作符**限定在目录内各期刊**。
- 若用户没给目录,**默认检索全部期刊**(不加 `--journals`)。
- 注意:`source:` 是模糊子串匹配,个别结果可能串刊,manage 步会再按期刊名复核。
## 时间范围(可选)
- 若用户给定了时间范围(如"近三年""2023 至今"),检索时加 `--from-year 2023 --to-year 2026`(对应 Scholar 的 `as_ylo`/`as_yhi`,可只给一端)。
- 若没给,**默认检索全部文献**(不加年份参数)。
## 步骤
1. 把用户确认后的检索式写进 `queries.json`(字符串数组,或 `[{"q":"...","pages":3}]` 指定每条页数)。
2. (若有期刊目录)把期刊名写进 `journals.txt`。
3. 运行:
```bash
# 无目录、无年份(全部期刊、全部文献)
python scripts/cdp_search.py --queries queries.json --out results.jsonl --pages 2
# 限定目录 + 限定年份
python scripts/cdp_search.py --queries queries.json --out results.jsonl --pages 2 \
--journals journals.txt --from-year 2023 --to-year 2026
```
- `--pages N`:每条检索式翻几页(每页 10 条);默认 2,总请求数 = 检索式数 × 期刊数 × N(目录大时请减少检索式或页数)。
- `--throttle S`:相邻请求间隔秒数,默认 8(太密会触发验证码)。
- `--profile DIR` / `--port 9222`:对应 SETUP.md 里启动 Chrome 的参数。
4. 若脚本打印 `[captcha]`:让用户在 Chrome 窗口里手动过验证码,脚本会自动继续等待(默认最多 240s)。
5. 脚本输出 `results.jsonl`,每行一条:`title / meta / citedby / snippet / href / cid / query / page / journal`。
## 注意
- 若 Chrome 没启动,脚本会报错并提示先按 SETUP.md 启动。
- 检索式之间脚本自动去重(按 Scholar 的 cluster id)。