使用selenium保存页面中的图像

2023-11-26

我正在使用 Selenium 和 Google Chrome 驱动程序以编程方式打开页面。每个页面上都有一个我想下载的动态生成的图像。目前,我正在等待页面完成加载,然后获取图像 URL 并使用 System.Net.WebClient 下载它。

效果很好,只是我要下载图像两次 - 一次在浏览器中,一次使用 WebClient。问题是每个图像大约为 15MB,下载两次就会很快增加。

那么 - 是否可以直接从 Google Chrome 获取图像?


一种方法是使用 webdriver 执行的 javascript 获取图像的 Base64 字符串。然后您可以将图像的 base64string 保存到文件中。

基本上,如果你的图像是

<img id='Img1' src='someurl'>

然后你可以像这样转换它

var base64string = driver.ExecuteScript(@"
    var c = document.createElement('canvas');
    var ctx = c.getContext('2d');
    var img = document.getElementById('Img1');
    c.height=img.naturalHeight;
    c.width=img.naturalWidth;
    ctx.drawImage(img, 0, 0,img.naturalWidth, img.naturalHeight);
    var base64String = c.toDataURL();
    return base64String;
    ") as string;

var base64 = base64string.Split(',').Last();
using (var stream = new MemoryStream(Convert.FromBase64String(base64)))
{
    using (var bitmap = new Bitmap(stream))
    {
        var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ImageName.png");
        bitmap.Save(filepath, ImageFormat.Png);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用selenium保存页面中的图像 的相关文章

随机推荐

  • subprocess.Popen 的输出

    我一直在编写一些 python 代码 在我的代码中我使用了 命令 该代码按我的预期工作 但后来我在 Python 文档中注意到该命令已被弃用并将在 Python 3 中删除 我应该使用 subprocess 代替 好吧 我想 我不希望我的代
  • 将列表解压为变量

    我有一个清单 row Title url 33 title2 keyword 有没有一种更Pythonic的方法来解压这些值 例如 title url price title2 keyword row 0 row 1 row 2 row 3
  • weblogic.application.ModuleException:上下文路径 '' 已被模块使用:/应用程序:

    当我尝试运行 weblogic server 12c 时 它抛出此错误并且无法启动
  • 如何使用 ASP.NET 检测页面关闭事件

    我有一个带有 MasterPage 和内容页面的 ASP NET Web 应用程序 当我单击MenuItem打开一个新的 aspx 页面 如果我想关闭新的页面浏览器选项卡 我想显示一个弹出窗口或对话框 提醒用户他正在关闭浏览器选项卡 我不知
  • Bash printf %q 无效指令

    我想更改 bashrc 文件中的 PS1 我找到了一个使用 printf 和 q 指令来转义字符的脚本 bin bash STR printf q PS1 u h w sed i PS1 c STR bashrc 问题是我收到此错误 scr
  • Google 翻译活动不再起作用

    我编写了一个程序 通过调用 Google Translator android 应用程序Intent ACTION VIEW 问题是调用谷歌翻译应用程序不再起作用 尽管它曾经起作用过 该代码与此处给出的代码相同 从 Google Trans
  • Android LocationManager.isProviderEnabled() 始终返回 false

    我有一个使用网络提供商作为其位置的应用程序 每次应用程序启动时 它都会检查网络提供商是否已启用isProviderEnabled LocationManager 中的方法 如果返回 false 我会向用户发出警报以启用网络提供商 然后使用该
  • 寻找转换器:php 到 javascript [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想知道是否有任何可用的转换器 可以将 简单 php 代码转换为 javascript 我是什么not寻找的是 ajax 东西或模仿 php 功能的
  • 无限可枚举仍然是“可枚举的”吗?

    就像两条重叠的线段一样 我们可以找到无限的交点 列举所有这些点可能没有意义 我们可能只是想表明这个集合是无穷大的 浮点数已定义NegativeInfinity and PositiveInfinity 一个数字代表count or ordi
  • sql中查找同一个表中连续两行之间的时间差

    我被困住了 我一直在寻找答案 但似乎无法找到从同一张表的两个不同行中减去同一张表中适合的时间 我在执行以下查询时遇到困难 在下表中 我想区分一行的 TimeOut 和下一行的 TimeIn 请考虑在下表中查找第 1 行中的 TimeOut
  • 带有分支过滤器的 GitHub Actions 标签过滤器

    GitHub 操作允许使用分支和标签过滤器 但它们似乎不能一起工作 例如 此工作流在推送到 master 时运行or用标签推动 name npm Publish on push branches master tags v 我想设置一个发布
  • Excel 多个条件的中位数

    基本上在Excel中我想要一张表格 就像下面右边给出的那样 我的数据规模比给出的例子大得多 它有每个主题 每个条件的中位数 例如TADA TADP TPDA TPDP 理想情况下 我会使用数据透视表 但是 Excel 不会在数据透视表中执行
  • Python3双向串口通信:读入数据

    我正在尝试通过Python3建立双向通信 我的 USB 端口之一插入了一个激光测距仪 我想向其发送 接收命令 我有一张可以发送的命令以及它们将返回的内容 因此这部分已经存在 我需要的是一种实时方便的方法 到目前为止我有以下代码 import
  • GameKit 无线网络连接?

    我读到 从 iPhone OS 3 1 开始 GameKit 支持 wifi 连接 但文档指出 如果您的应用程序配置了 对等选择器允许互联网 连接 您的应用程序必须 还解雇同行选择器和 提供自己的配置界面 互联网连接 这还成立吗 如果是这样
  • 为什么我的类型化数据集不喜欢临时表?

    我正在尝试将表适配器添加到 SQL Server 2005 Express 中的存储过程 然而 存储过程使用一个名为 temp 的临时表 创建表适配器时 Visual Studio 抱怨 未知对象 temp 并表示存储过程返回 0 列 这是
  • 如何静音“其类型使用匿名命名空间 [-Werror]”gcc 版本 4.8.2

    在我的项目的一个头文件中 以下行包含在inline method typedef boost archive iterators transform width
  • Codeigniter/PHP 会话安全问题

    我正在使用 Codeigniter 开发一个 Web 应用程序 当用户通过我的网站进行身份验证时 我当前将他们的 用户标识符 存储在我的会话 cookie 中 我已启用加密 我的几个模型类使用会话 cookie 的 用户标识符 参数中的值来
  • 如何放大矩形中绘制的填充样式? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我正在使用 Net 绘图来绘制图表 它本质上是一个堆积条形图 我遇到的问题是 我想减少填充样式中的线条数量 以便在某种程度上放大它以使其更清晰 我环顾四周 但没有发现任何可以帮助我的东
  • 如何在 vtkStructuredGrid 上设置数据值

    我正在尝试用分析字段填充结构化网格 但是尽管阅读了 vtk 文档 我还没有找到如何在网格点实际设置标量值或设置网格的间距 原点信息 从下面的代码开始 我该如何 将空间信息与网格相关联 即单元格 0 0 0 位于坐标 0 0 0 每个方向的间
  • 使用selenium保存页面中的图像

    我正在使用 Selenium 和 Google Chrome 驱动程序以编程方式打开页面 每个页面上都有一个我想下载的动态生成的图像 目前 我正在等待页面完成加载 然后获取图像 URL 并使用 System Net WebClient 下载