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

发布时间:2026/9/22 0:59:54

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),仅供参考

相关新闻

OpenHarmony上Flutter开发收支记录:从环境搭建到RK3568真机调试

OpenHarmony上Flutter开发收支记录:从环境搭建到RK3568真机调试

2026/9/22 0:59:45

写这篇的时候,我正坐在办公桌前对着 RK3568 开发板发呆。起因很简单:社团要做一个内部管理的 App,既要管成员信息,又要记收支账目,还要在 OpenHarmony 设备上跑起来。团队里有人提议用 ArkTS 从头写,有人提…

基于Qt的局域网通信工具开发实践:TCP/UDP、数据库与视频传输

基于Qt的局域网通信工具开发实践:TCP/UDP、数据库与视频传输

2026/9/9 22:54:38

简介:一份基于Qt的局域网通信项目源码,面向Qt网络编程学习者与毕业设计参考者,系统解决局域网环境下的用户注册登录、文字聊天、文件传输和视频通信四大需求。zip压缩包共二十四个文件,包含五个cpp与四个头文件构成的客户端/服务端…

get-shit-done 如何按运行时执行 --uninstall 彻底卸载并保留其他配置

get-shit-done 如何按运行时执行 --uninstall 彻底卸载并保留其他配置

2026/9/9 22:54:37

get-shit-done 如何按运行时执行 --uninstall 彻底卸载并保留其他配置 【免费下载链接】get-shit-done A light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TCHES. 项目地址: https://gitcode.com/Git…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/21 18:38:46

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/21 18:41:09

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/21 18:36:40

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/21 18:37:26

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/21 18:40:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/21 18:36:17

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/22 0:19:28

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/21 23:38:13

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/22 0:48:53

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…