Skip to content

03xiaoyuhe/Smart-Spider

Repository files navigation

Spider(Playwright 爬虫工具集)

面向需要 扫码登录/复杂交互 的网站:先用工具稳定拿到会话(cookies/storage_state),再验证选择器,最后用可配置 workflow 执行抓取动作与提取。

安装

python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
python -m playwright install

1) 登录并保存会话(扫码)

python -m spider login --url "https://目标网站/login" --state sessions/site.json

可选:如果你知道“登录成功后一定出现的元素”,用 --wait-selector 自动判断:

python -m spider login --url "..." --state sessions/site.json --wait-selector "css=.avatar"

2) 验证选择器是否正确(工具)

python -m spider selectors --url "https://目标网站/某页" --state sessions/site.json --selector "css=.item"
python -m spider selectors --url "..." --state sessions/site.json --selector "css=a" --attr href --limit 10

需要分析“页面真实请求了哪些接口”时,可以顺便导出 HAR:

python -m spider selectors --url "..." --state sessions/site.json --selector "css=body" --har artifacts/network.har

进入 Playwright Inspector(更适合“现场试选择器”):

set PWDEBUG=1
python -m spider inspect --url "https://目标网站/某页" --state sessions/site.json

3) 导出/查看 cookies(工具)

python -m spider cookies show --state sessions/site.json
python -m spider cookies export --state sessions/site.json --out cookies.json
python -m spider cookies header --state sessions/site.json --url "https://目标网站/某页"

如果你已经在浏览器里复制了 Cookie 请求头(例如开发者工具里看到的 Cookie: a=b; c=d),可以直接生成 storage_state.json

python -m spider cookies from-header --url "https://目标网站/" --cookie "a=b; c=d" --out sessions/site.json --validate

4) 运行一个可配置 workflow(抓取骨架)

编辑 examples/workflow.example.yaml,然后:

python -m spider run --config examples/workflow.example.yaml --state sessions/site.json

workflow 详细写法与动作说明见:docs/workflow.md

全量操作文档(含所有命令/参数/动作/调试流程):docs/operations.md

常见提示

  • 会话文件(sessions/*.jsonstorage_state.jsoncookies.json)是敏感信息,已在 .gitignore 中忽略。
  • 复杂网站常需要额外等待:优先用 wait_for(等待某个元素出现),其次再用 sleep

反爬/风控(以及“反反爬”)说明

本项目定位是“在你有权访问的站点上,把登录会话与抓取流程自动化/固化”,不提供也不鼓励绕过验证码、人机验证、访问控制、封禁策略等行为。

如果你遇到 403/429、频繁跳登录、人机验证等拦截:

  • 先确认是否 会话失效(重新 login 保存新的 sessions/*.json
  • inspect / selectors + --har 把“页面真实请求的接口”分析清楚,尽量走站点允许的数据获取方式(如官方 API/导出)
  • 降低访问频率、做缓存/增量,避免给目标站点造成压力

更完整的排错与边界说明见:docs/operations.md

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages