尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Scrapling DynamicFetcher 如何通过 cdp_url 连接远程或已运行的浏览器

Scrapling DynamicFetcher 如何通过 cdp_url 连接远程或已运行的浏览器 Scrapling DynamicFetcher 如何通过 cdp_url 连接远程或已运行的浏览器【免费下载链接】Scrapling️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling当你要抓取的动态页面需要借助一个已经跑起来的浏览器——比如本机带着调试端口启动的 Chrome或者托管浏览器服务商提供的远程实例——而不是让 Scrapling 在本地再拉起一个 Chromium 时DynamicFetcher的cdp_url参数就是完成这件事的入口。指定该参数后Scrapling 不再启动新的浏览器实例而是通过 Chrome DevTools ProtocolCDP连接并控制这个已有的浏览器。本文覆盖从环境准备、本地/远程两种连接方式到会话复用与结果验证的完整操作路径。准备条件Scrapling 要求 Python 3.10 或更高版本。使用DynamicFetcher需要先安装 fetchers 扩展再安装浏览器依赖pip install scrapling[fetchers] scrapling install # normal install scrapling install --force # force reinstallscrapling install会下载所有浏览器以及它们的系统依赖项和 fingerprint 处理依赖。连接方式本身没有额外的本地浏览器要求既然浏览器已经在运行cdp_url指向它即可。cdp_url的取值必须满足 CDP URL 校验规则——必须以ws://、wss://、http://或https://开头且必须包含有效主机名否则抛出ValueError具体校验逻辑见 scrapling/engines/_browsers/_validators.py。连接自启动的本地浏览器在终端中用远程调试端口启动 Chromechrome --remote-debugging-port9222该端口的 HTTP 地址就是cdp_url的取值。若浏览器在另一台机器上运行则换成对应主机的地址from scrapling.fetchers import DynamicFetcher page DynamicFetcher.fetch(https://example.com, cdp_urlhttp://localhost:9222)异步版本同理将fetch换成async_fetch并用await调用。连接托管服务商的 WebSocket 端点如果浏览器由托管服务商管理服务商提供的是 WebSocket 端点ws:///wss://直接把它传给cdp_urlpage DynamicFetcher.fetch(https://example.com, cdp_urlws://localhost:9222)两种端点形态ws:///wss://与http:///https://均可使用区别只在于浏览器的来源前者是服务商分配的端点后者通常是你自己带调试端口启动的浏览器。用会话复用同一个远程浏览器需要连续抓取多个页面时把cdp_url放到会话级配置DynamicSession/AsyncDynamicSession接受与fetch相同的全部参数所有请求会在远程浏览器上复用同一配置from scrapling.fetchers import DynamicSession with DynamicSession(cdp_urlhttp://localhost:9222) as session: page1 session.fetch(https://example1.com) page2 session.fetch(https://example2.com) page3 session.fetch(https://dynamic-site.com) # 所有请求复用同一浏览器实例如果远程页面依赖 JavaScript 渲染可以在会话或单次请求上叠加network_idleTrue网络空闲至少 500 ms 才视为完成、wait_selector.quote等等待参数用法与本地模式完全一致参数含义参考 docs/fetching/dynamic.md 的完整参数表。验证连接是否成功请求返回的是一个Response对象与本地模式没有区别。判断连接成功的路径是fetch未抛出异常并返回页面后按常规方式提取内容。例如下载文件时body属性总是返回bytespage DynamicFetcher.fetch(https://raw.githubusercontent.com/D4Vinci/Scrapling/main/docs/assets/main_cover.png, cdp_urlhttp://localhost:9222) with open(filemain_cover.png, modewb) as f: f.write(page.body)或者用 CSS 选择器确认动态内容已加载page DynamicFetcher.fetch( https://example.com/dynamic, cdp_urlhttp://localhost:9222, network_idleTrue, wait_selector.content ) content page.css(.content)提取到目标内容即说明 CDP 连接与页面抓取均正常。哪些参数在 CDP 模式下不生效由于浏览器已经在运行只在启动浏览器时才生效的选项会被忽略headless、real_chrome、executable_path文档在 docs/ai/mcp-server.md 的 Connecting to Remote Browsers 一节对此有说明且底层实现中启动参数也仅在未设置cdp_url时才拼接见 scrapling/engines/_browsers/_base.py。其余参数仍然有效例如locale、useragent、proxy、cookies、timezone_id因为每个会话会在远程浏览器上创建自己的浏览器上下文。可选分支MCP Server 的 open_session如果你通过 Scrapling 的 MCP Server 使用浏览器工具open_session同样接受 CDP 地址支持dynamic与stealthy两种会话类型返回的session_id再传给 fetch 和 screenshot 工具使用wss://服务商端点与http://localhost:9222自启动端点的用法和上文一致详见 docs/ai/mcp-server.md。相关文档docs/fetching/dynamic.mdDynamicFetcher全部参数与示例docs/fetching/stealthy.mdStealthyFetcher同样支持cdp_url并在此之外提供反检测选项docs/ai/mcp-server.mdMCP Server 连接远程浏览器的说明【免费下载链接】Scrapling️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表