在 Python 中使用 Selenium Webdriver 下载图像

2023-12-23

我正在尝试使用 Python 中的 Selenium Webdriver 从 URL 下载图像。该站点受登录页面保护,因此不能仅使用请求保存 URL 内容。登录后我可以从网站获取文本,但我不知道如何保存图像。

登录该网站后,我可以执行以下操作browser.save_screenshot(filename + '.png')但该图像的尺寸与原始图像不正确。

我现在的代码是这样的:

browser = webdriver.Chrome('../chromedriver')
browser.get('www.example.com/login')
# send username and password, click submit

browser.get('www.example.com/123')
html = browser.page_source
printData(html)

# this url is an image file
browser.get('www.example.com/get_photo.php?id=123')
browser.save_screenshot(filename + '.png')

理想情况下我想更换save_screenshot()与类似的东西

with open(filename + '.jpeg', 'w') as img:
    img.write(browser.download_current_image())

甚至类似的东西,与弹出菜单交互

browser.right_click()
browser.down_arrow_key()
browser.return_key()

或模拟按键

browser.command_key()
browser.s_key()

This https://stackoverflow.com/questions/6813704/how-to-download-an-image-using-selenium-any-version问题给出了我想要的答案,但不适用于Python。如果有一种方法可以在 Python 中执行该问题中建议的任何操作(除了截图之外),那将是一个很好的解决方案。


以下是我用来从登录页面后面的 URL 下载图像的方法,方法是使用 Selenium Webdriver 登录,然后将 cookie 传递给保存图像的请求:

headers = {
"User-Agent":
    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
}
s = requests.session()
s.headers.update(headers)

for cookie in browser.get_cookies():
    c = {cookie['name']: cookie['value']}
    s.cookies.update(c)

r = s.get(imgurl, allow_redirects=True)
open(filename + '.jpeg', 'wb').write(r.content)

谢谢阿尔多·苏万迪 https://stackoverflow.com/users/2335360/aldo-suwandi向我展示如何做到这一点this https://stackoverflow.com/questions/32639014/is-it-possible-to-transfer-a-session-between-selenium-webdriver-and-requests-s邮政。我也用过this https://www.codementor.io/aviaryan/downloading-files-from-urls-in-python-77q3bs0un网站帮助我弄清楚如何使用请求下载图像。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中使用 Selenium Webdriver 下载图像 的相关文章

随机推荐

  • 使用 libgdx 在运行时用文本生成纹理

    我正在开发一个电话文字游戏 昨天 我决定使用 libgdx 切换到 OpenGL 以尝试提高图形性能和电池使用率 瞄准更多平台 字母图块在 2D 画布上绘图的方式是每个字母图块都会为自己创建一个位图 我会 从背景位图创建一个新的可变位图 在
  • 在不实际打开大写锁定的情况下打开键盘大写锁定指示灯的方法

    我正在编写一个程序 使用大写锁定 https en wikipedia org wiki Caps Lock作为拨动开关 如果能设置按键的 LED 来显示我的程序打开或关闭 就像 Caps Lock 键自然所做的那样 那就太好了 我知道我可
  • 使用 NSAttributedString 将 UILabel 中的文本居中

    对我正在开发的应用程序进行一些基本改进 对于 iOS 快速开发场景来说还是个新手 我认为代码中的文本行会自动居中 因为我将标签设置为居中 经过一番研究后 我发现事实并非如此 我如何将这样的代码对齐到中心 let atrString try
  • 如何抓取需要身份验证的 ASPX 页面

    使用 python 的库 Requests 我试图抓取一个 ASPX 网站 https cei bmfbovespa com br CEI Responsivo home aspx https cei bmfbovespa com br C
  • 如何在 Recharts 中为 YAxis 创建自定义垂直标签,该标签将缩放以适应标签太长的情况?

    我正在使用 Recharts 库和一些垂直标签构建一些组合图表YAxis太长并且被切断 我的标签被剪掉的照片 https i stack imgur com FUwrl png 我尝试使用自定义标签
  • “分支与起源是最新的”但实际上不是

    该消息是否有点误导 当结帐分支时 例如 b535 git 这样做并说 您的分支已更新为 origin b535 这听起来就像我当地分行的情况b535已是最新 git checkout b535 Previous HEAD position
  • 日期选择器的多个实例

    我如何能够使用日期选择器的多个实例 一个日期选择器正在工作 但日期选择器的下一个实例正在调用相同的弹出窗口 如何继续 任何人都可以给我您的电子邮件 ID 我会将整个代码邮寄给您 然后您将能够以更好的方式了解整个想法 http jsfiddl
  • Sequelize '自 v4.0.0 起需要显式提供方言'

    我需要在 node js 环境中运行第三方应用程序 但 Sequelize 抛出 自 v4 0 0 起需要显式提供方言 我在这里找到了类似的主题自 v4 0 0 起需要显式提供方言 https stackoverflow com quest
  • 打开活动而不显示 UIActivityViewController

    我希望能够在滚动视图中包含社交图标 当单击该图标时 其功能与我在呈现 UIActivityViewController 后单击它们时的功能相同 我不想呈现 UIActivityViewController 我知道这是不可能的 但是一个名为
  • CATransaction:图层更改但不动画

    我正在尝试在用户点击按钮时为 iPad 应用程序中的部分 UI 制作动画 我的操作方法中有这段代码 它的工作原理是 用户界面按照我的预期进行更改 但不会以动画方式进行更改 它只是立即改变 我肯定错过了什么 IBAction someActi
  • 可以从 (a,b) 移动到 (c,d)

    问题是输出是否可以从给定点移动 a b 达到目标 c d 我们仅限于正坐标 可以进行以下两种动作 a b gt a b b a b gt a b a 例如 1 1 to 5 4 is True您可以执行以下操作 使用第 2 步 3 次 1
  • 如何清空 JS 对象?

    我有一个像 var person id null name John Doe 将对象值插入数据库后 我将从服务器获取另一个对象 var personInDB id 1234 name John Doe 我用过angular merge使用更
  • 如何远程访问私有 docker-registry?

    我正在尝试使用来自以下位置的图像设置一个私有 docker 注册表 https github com docker docker registry https github com docker docker registry 只需运行 d
  • 使用 iTextSharp 将图像添加到 PDF 并正确缩放

    这是我的代码 它正确添加了我想要的图片并且一切正常except图像使用其原始分辨率 因此如果图像很大 则会被裁剪以适合页面 有没有什么方法可以让图片像缩放功能一样拉伸以适合 但又保持纵横比 那里一定有我想念的东西 P Here s a pi
  • R中的数据帧累积游程长度编码

    我有一个数据帧 其中包含与观察值 1 或 0 相关的值 我想计算 1 的连续出现次数 重置为 0 游程长度编码函数 rle 看起来它可以完成工作 但我无法将数据转换为所需的格式 我想尝试在不编写自定义函数的情况下执行此操作 在下面的数据中
  • 如何计算多边形的圆角?

    我正在寻找一种允许我从多边形创建圆角的算法 我有一个代表多边形的点数组 以红色轮廓 并且在输出时我想要一个代表带圆角的多边形 以黑色轮廓 的点数组 我还希望有一种方法来控制每个角的半径 我尝试使用贝塞尔曲线和细分 但这不是我想要的 贝塞尔曲
  • 从 avro 文件复制时导入 SUPER 列失败

    是否可以从 avro 文件复制到 SUPER 列 我正在使用以下查询来导入 copy small table from s3 xxxx redshift chunk 1782431332154490799 avro access key i
  • Ajax 控制台错误:ReferenceError:$ 未定义

    我的 html 页面上的一个小脚本有问题 它只是一个应该由 a 标记中的 onclick 方法调用的函数 它不起作用 每次我单击浏览器中的链接时 控制台都会显示 ReferenceError 未定义 并指向下面代码的第三行 您需要
  • 如何在 Elastic High Level Rest Client 中使用 search_after 进行分页

    我正在使用弹性 RestHighLevelClient 与 ES 对话 我能够查询基本查询 尽管我正在尝试使用 search after api 从我的前端查询中设计分页 api 尽管 query after 在 RestLowLevelC
  • 在 Python 中使用 Selenium Webdriver 下载图像

    我正在尝试使用 Python 中的 Selenium Webdriver 从 URL 下载图像 该站点受登录页面保护 因此不能仅使用请求保存 URL 内容 登录后我可以从网站获取文本 但我不知道如何保存图像 登录该网站后 我可以执行以下操作