Query Table
About
A financial web table crawler using Playwright that queries data from multiple websites with fallback switching.
Details
- Author
- wukan1986
- Categories
- Web Scraping, Automation, Other, Finance
Jump to
Setup
Install Query Table in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/wukan1986/mcp_query_table
Follow the installation instructions in the repository README, then restart your MCP client.
-
基于playwright实现的财经网页表格爬虫,支持Model Context Protocol (MCP)。目前可查询来源为
实盘时,如果某网站宕机或改版,可以立即切换到其他网站。(注意:不同网站的表格结构不同,需要提前做适配)
RooCode提供了Human Reply功能。但发现纳米搜索网页版复制时格式破坏,所以研发了此功能
pip install -i https://pypi.org/simple --upgrade mcp_query_table pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade mcp_query_table
import asyncio from mcp_query_table import * async def main() -> None: async with BrowserManager(endpoint="http://127.0.0.1:9222", executable_path=None, devtools=True) as bm: # 问财需要保证浏览器宽度>768,防止界面变成适应手机 page = await bm.get_page() df = await query(page, '收益最好的200只ETF', query_type=QueryType.ETF, max_page=1, site=Site.THS) print(df.to_markdown()) df = await query(page, '年初至今收益率前50', query_type=QueryType.Fund, max_page=1, site=Site.TDX) print(df.to_csv()) df = await query(page, '流通市值前10的行业板块', query_type=QueryType.Index, max_page=1, site=Site.TDX) print(df.to_csv()) # TODO 东财翻页要提前登录 df = await query(page, '今日涨幅前5的概念板块;', query_type=QueryType.Board, max_page=3, site=Site.EastMoney) print(df) output = await chat(page, "1+2等于多少?", provider=Provider.YuanBao) print(output) output = await chat(page, "3+4等于多少?", provider=Provider.YuanBao, create=True) print(output) print('done') bm.release_page(page) await page.wait_for_timeout(2000) if __name__ == '__main__': asyncio.run(main())
- 浏览器最好是Chrome。如一定要使用Edge,除了关闭Edge所有窗口外,还要在任务管理器关闭Microsoft Edge的所有进程,即taskkill /f /im msedge.exe
- 浏览器要保证窗口宽度,防止部分网站自动适配成手机版,导致表格查询失败
- 如有网站账号,请提前登录。此工具无自动登录功能
- 不同网站的表格结构不同,同条件返回股票数量也不同。需要查询后做适配
不同于requests,playwright是基于浏览器的,模拟用户在浏览器中的操作。
- 不需要解决登录问题
- 不需要解决请求构造、响应解析
- 可以直接获取表格数据,所见即所得
- 运行速度慢于requests,但开发效率高
- 类似于requests,需要做响应解析
- 灵活性差点,网站改版后,需要重新做适配
无头模式运行速度更快,但部分网站需要提前登录,所以,无头模式一定要指定user_data_dir,否则会出现需要登录的情况。
- endpoint=None时,headless=True可无头启动新浏览器实例。指定executable_path和user_data_dir,才能确保无头模式下正常运行。
- endpoint以http://开头,连接CDP模式启动的有头浏览器,参数必有--remote-debugging-port。executable_path为本地浏览器路径。
- endpoint以ws://开头,连接远程Playwright Server。也是无头模式,但无法指定user_data_dir,所以使用受限
- 参考:https://playwright.dev/python/docs/docker#running-the-playwright-server
Chrome新版的安全策略使用默认user_data_dir时将无法创建CDP服务,建议重新复制配置目录到其他地方
确保可以在控制台中执行python -m mcp_query_table -h。如果不能,可能要先pip install mcp_query_table
在Cline中可以配置如下。其中command是python的绝对路径,timeout是超时时间,单位为秒。 在各AI平台中由于返回时间常需1分钟以上,所以需要设置大的超时时间。
{ "mcpServers": { "mcp_query_table": { "timeout": 300, "command": "D:\\Users\\Kan\\miniconda3\\envs\\py312\\python.exe", "args": [ "-m", "mcp_query_table", "--format", "markdown", "--endpoint", "http://127.0.0.1:9222", "--executable_path", "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" ] } } }
python -m mcp_query_table --format markdown --transport sse --port 8000 --endpoint http://127.0.0.1:9222 --user_data_dir "D:\user-data-dir"
{ "mcpServers": { "mcp_query_table": { "timeout": 300, "url": "http://127.0.0.1:8000/sse" } } }
python -m mcp_query_table --format markdown --transport streamable-http --port 8000 --endpoint http://127.0.0.1:9222 --user_data_dir "D:\user-data-dir"
npx @modelcontextprotocol/inspector python -m mcp_query_table --format markdown --endpoint http://127.0.0.1:9222
打开浏览器并翻页是一个比较耗时的操作,会导致MCP Inspector页面超时,可以http://localhost:5173/?timeout=300000表示超时时间为300秒
-
2024年涨幅最大的100只股票按2024年12月31日总市值排名。三个网站的结果都不一样
- 同花顺:显示了2201只股票。前5个是工商银行、农业银行、中国移动、中国石油、建设银行
- 通达信:显示了100只股票,前5个是寒武纪、正丹股份,汇金科技、万丰奥威、艾融软件
- 东方财富:显示了100只股票,前5个是海光信息、寒武纪、光启技术、润泽科技、新易盛
大语言模型对问题拆分能力弱,所以要能合理的提问,保证查询条件不会被改动。以下推荐第2、3种
- 2024年涨幅最大的100只股票按2024年12月31日总市值排名
大语言模型非常有可能拆分这句,导致一步查询被分成了多步查询
分成两步查询,先查询板块,再查询股票。但最好不要全自动,因为第一步的结果它不理解“今日涨幅”和“区间涨幅”,需要交互修正
实现在同一页面中查询金融数据,并手工输入到AI中进行深度分析。参考streamlit目录下的README.md文件。
- Selenium webdriver无法附加到edge实例,edge的--remote-debugging-port选项无效
- https://github.com/AtuboDad/playwright_stealth/issues/31
- https://github.com/browser-use/browser-use/issues/1520
Query financial web tables from sources like iwencai, tdx, and eastmoney using Playwright.
A browser screenshot tool to capture scrolling screenshots of webpages using Playwright, with support for intelligent section identification and multiple output formats.
Take screenshots and read console logs from web pages using Playwright.
CloakBrowser MCP server for AI agents: Playwright-powered browsing, clean tool forwarding, Docker support, and multi-session HTTP transport.
Control a browser for web automation tasks using Playwright on Cloudflare Workers.
Control a browser for web automation tasks like navigation, typing, clicking, and taking screenshots using Playwright on Cloudflare Workers.
Fetch and extract web content using a Playwright headless browser, with support for intelligent extraction and flexible output.
A production-ready web scraping platform with ML-powered automation, browser automation via Playwright, and persistent caching.
Control a browser for automation and web scraping tasks using Playwright.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


