我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python selenium保存图片最好的两种方法分别是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python selenium保存图片最好的两种方法分别是什么

今天给大家介绍一下python selenium保存图片最好的两种方法分别是什么。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。

    selenium爬取页面时经常遇到要保存图片的需求,通常的做法是获取链接后用 requests 下载,但这种方法脱离了selenium环境,如遇到有校验的情况还需要绕过校验。

    下面介绍两种直接通过selenium保存图片的方法:

    1. 通过抓包

    selenium-wire 是selenium扩展,它可以对所有请求抓包,同时还可以修改请求头,请求body,请求返回值等,功能非常强大。

    selenium-wire 的使用和selenium一样,你只从seleniumwire导入webdriver就行,对于其他包还是从selenium导入

    from selenium.webdriver.chrome.options import Optionsfrom seleniumwire.webdriver import Chromedriver = Chrome(options= Options())

    下载图片有两种方法:

    1-1.通过拦截器

    通过拦截器预先把所有图片保存下来,要用到时在缓存目录中找

    def get_img_path_from_url(url):    # 自行实现    return urldef response_interceptor(request, response):    t=response.headers['Content-Type']    if request.host=='xxx' and t and 'image' in t:        with open(get_img_path_from_url(request.url), 'wb') as f:            f.write(response.body)            driver.response_interceptor = response_interceptordriver.get('...')class="lazy" data-src=driver.find_element_by_tag_name('img').get_attribute('class="lazy" data-src')img_path=get_img_path_from_url(class="lazy" data-src)

    1-2. 请求后在所有请求中获取

    这种方法有个缺点,浏览器会自动缓存图片,如果之前已经缓存过这张图片是不会有网络请求的

    # 下载前先清理数据,不然请求太多del driver.requestsdriver.get('...')class="lazy" data-src=driver.find_element_by_tag_name('img').get_attribute('class="lazy" data-src')</code><code>for r in driver.iter_requests():    if r.url==class="lazy" data-src:        with open('img', 'wb') as f:            f.write(r.response.body)

    2. 通过canvas

    使用js把图片放到canvas中,然后获取base64字符串,再保存

    import base64import osimport refrom io import BytesIOfrom PIL import Imagedef base64_to_image(base64_str):    base64_data = re.sub('^data:image/.+;base64,', '', base64_str)    byte_data = base64.b64decode(base64_data)    image_data = BytesIO(byte_data)    img = Image.open(image_data)    return imgjs = "let c = document.createElement('canvas');let ctx = c.getContext('2d');" \     "let img = document.getElementsByTagName('img')[0];  " \     "c.height=img.naturalHeight;c.width=img.naturalWidth;" \     "ctx.drawImage(img, 0, 0,img.naturalWidth, img.naturalHeight);" \     "let base64String = c.toDataURL();return base64String;"     base64_str = driver.execute_script(js)img = base64_to_image(base64_str)img.save('xx.png')

    python是什么意思

    Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

    以上就是python selenium保存图片最好的两种方法分别是什么的全部内容了,更多与python selenium保存图片最好的两种方法分别是什么相关的内容可以搜索编程网之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下编程网!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    python selenium保存图片最好的两种方法分别是什么

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    python selenium保存图片最好的两种方法分别是什么

    今天给大家介绍一下python selenium保存图片最好的两种方法分别是什么。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。selenium爬取页面时经常遇
    2023-06-29

    3种编写Python的好方法分别是什么

    今天就跟大家聊聊有关3种编写Python的好方法分别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。这里小芯就给大家推荐3种编写Python的好方法,它们能帮你成为更好的程序员。
    2023-06-05

    JfreeChart生成图片的几种方式分别是什么

    JfreeChart生成图片的几种方式分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面主要介绍JfreeChart生成图片的几种方式。先从网上找点介绍。一、简介
    2023-06-17

    java图片保存到数据库的方法是什么

    Java中将图片保存到数据库的方法有多种,以下是一种常见的方法:1. 将图片转换为字节数组:```javaFile imageFile = new File("path/to/image.jpg");byte[] imageData = F
    2023-09-27

    cc攻击防御的两种方法分别是什么

    cc攻击防御的两种方法分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ddos攻击是互联网使用过程中黑客攻击方式中使用频率最多的手段,cc攻击是ddos攻击其中的一
    2023-06-07

    debian7更换gcc版本的两种方法分别是什么

    debian7更换gcc版本的两种方法分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 方法一:安装gcc4.4和g++4.4代码如下:sudo apt-get i
    2023-06-13

    Linux两种光驱自动挂载的方法分别是什么

    Linux两种光驱自动挂载的方法分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。环境:CentOS6.4 西昆云服务器方式一 修改fstab文件/etc/fstab是
    2023-06-05

    Windows Server 2008 禁用本地端口的两种方法分别是什么

    今天就跟大家聊聊有关Windows Server 2008 禁用本地端口的两种方法分别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Windows系统默认情况下很多端口都是开放
    2023-06-03

    C语言实现猜数字游戏的两种方法分别是什么

    C语言实现猜数字游戏的两种方法分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏,下面我将详细
    2023-06-26

    降低win7系统内存占用的四种方法分别是是什么

    今天就跟大家聊聊有关降低win7系统内存占用的四种方法分别是是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。方法一、禁用自动更新1、点击“开始”打开“控制面板”。2、点击“Win
    2023-06-05

    在ABAP里取得一个数据库表记录数的两种方法分别是什么

    本篇文章给大家分享的是有关在ABAP里取得一个数据库表记录数的两种方法分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。方法1:使用函数EM_GET_NUMBER_OF_
    2023-06-04

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录