Playwright数据提取代理

使用Playwright进行浏览器自动化的数据抓取和提取工具,支持SJSU爬虫和MCP服务器两种运行方式。

  • by ekant1999
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ekant1999/Playwright-MCP-Agent

使用说明

#剧作家MCP代理

使用以下工具进行刮擦和数据提取 剧作家 (浏览器自动化)。两种跑步方式: SJSU履带式 (CLI)和 MCP 服务器 (用于提取的剧作家工具)。


刮削技术

SJSU爬虫(LibGuides+Primo)

  • 爬行:基于堆栈的DFS优于LibGuides。对于每个URL: page.goto(url) → 在浏览器中提取→ 跟踪范围内的链接。内容仅取自主栏(#s-lg-content 或 body):标题、元描述、全文、标题、, .s-lib-box 章节、段落、表格、链接、图像。输出:1 PageRecord 每页。
  • 指南从图书馆网站获取研究指南列表;可选地 --full-content 抓取每个指南(与上述提取相同)并下载链接资源。
  • 搜索:基于浏览器的OneSearch(Primo)。Playwright打开Primo(或图书馆主页),找到搜索输入(包括在iframe中),提交查询,然后从DOM中提取结果列表(标题、链接、元数据)。可选PDF下载。

MCP服务器(通用提取)

Playwright用于加载页面,然后:

  1. 挑战处理:检测Cloudflare/bot挑战并等待。
  2. 内容稳定:提取前等待JS水合。
  3. 懒加载:当初始内容太短时滚动(例如文章页面)。
  4. 提取:浏览器内JS(可读风格)或服务器端BeautifulSoup;主要内容+元数据(作者、日期、描述)。
  5. 表格: extract_table 将HTML表解析为JSON/CSV。

工具: get_content (文本/标记/HTML), extract_table, screenshot, execute_script。由代理(桥+UI)用于任意URL。


数据提取剧作家

何处 如何使用剧作家
SJSU爬行 crawler.py 推出Chromium; extractor.py 在浏览器上下文中运行:限制为 #s-lg-content,然后评估标题、章节、表格、链接、图像的选择器。收益结构 PageRecords
SJSU搜索 search_flow.py 导航到Primo,定位搜索输入(页面+iframe),填写并提交;从加载的DOM解析结果列表。
MCP提取 mcp_server/tools/extraction.py:通过导航 browser_manager那么 get_content / extract_table 在页面JS和/或服务器端解析中使用。

除非另有配置,否则所有运行都是无头Chromium(config.yaml SJSU,MCP的env)。


如何运行

从项目根,安装了具有依赖项的Python env和Playwright(pip install -r requirements.txt, playwright install chromium).

SJSU爬虫(CLI)

# Full-site DFS crawl → JSON and/or Postgres (crawl_pages)
python3 -m sjsu_crawler crawl
python3 -m sjsu_crawler --config sjsu_crawler/config.yaml crawl

# Research Guides list → output/guides_<query>.json and/or research_guides
python3 -m sjsu_crawler guides
python3 -m sjsu_crawler guides --query all --full-content --no-db

# OneSearch (Primo) → output/search_<query>.json and/or library_search_results
python3 -m sjsu_crawler search "your query"
python3 -m sjsu_crawler search "machine learning" --scope "San Jose State Collections" --download-dir search_pdfs --no-db

全局选项 --config 必须来 之前 子命令。

MCP服务器(代理+剧作家提取)

要通过代理使用Playwright提取工具(浏览器启动、导航、get_content、extract_table等):

  1. 奥拉玛: ollama serve 和 ollama pull qwen2.5
  2. 桥: cd bridge_server && npm install && npm start
  3. 用户界面: cd ui && npm install && npm run dev → open http://localhost:5173

然后,代理根据自然语言请求调用Playwright工具(包括提取)。


期待什么

SJSU履带式

命令 输出(启用时) Postgres表(启用时
crawl JSON数组位于 config.output_json crawl_pages (按范围前缀+url追加)
guides output/guides_<query>.json research_guides
search output/search_<query>.json library_search_results
  • 重新 更新插入 (无重复行);时间戳(crawled_at / fetched_at)显示最后一次运行。
  • 搜索PDF:下 output/<download-dir>/ 当 --download-dir 已设置。
  • 配置: sjsu_crawler/config.yaml (start_url、scope_prefix、max_depth、max_pages、postgres、output_json等)。

MCP提取

  • 下载的文件(如PDF、截图): mcp_server/downloads/.
  • 提取的内容将在代理响应中返回(除非工具写入下载,否则没有文件路径)。

需求

  • Python 3.11+

  • 剧作家+铬

  • 对于SJSU Postgres输出: postgres.enabled: true 并且有效 postgres.url 在配置中;第一次运行时创建的表。