龙叔python-selenium加chromedriver实现自动浏览器截图

作为运维,很多时候是需要定时发一些巡检报告的,巡检内容需要包含一些监控图,但如果手动截图整理后去发,会比较繁琐,所以自动截图就很有必要,自动截取想要的监控图保存成图片,然后自动用图片组成巡检报告定时发出,省时省力

这里的自动截图方案 是用的selenium

环境安装

windows和linux安装环境有些不一样,可恶意参考下面的方法,但是代码都是一样的

下载chromedriver.exe地址(下载对应自己chrome版本的,也有windows和linux版本的,代码要指定该驱动的路径)
http://npm.taobao.org/mirrors/chromedriver  

windows环境

【1】要有chrome浏览器

【2】根据自己浏览器版本在上面的地址下载对应版本的驱动

liinux环境

安装chrome

yum makecache
yum install google-chrome-stable -y

安装chromedriver驱动

查看当前chrome版本:

google-chrome --version

下载对应版本驱动:

wget  http://npm.taobao.org/mirrors/chromedriver/87.0.4280.88/chromedriver_linux64.zip

将包放在指定位置

# 创建存放目录
mkdir -p /opt/driver/bin
# 解压zip包
unzip chromedriver_linux64.zip -d /opt/driver/bin/

配置环境变量

vim /etc/profile
...
# 添加内容
export DRIVER=/opt/driver
export PATH=$PATH:$DRIVER/bin

然后source /etc/profile 生效修改

确认安装成功

chromedriver --version

需要安装的python包

【1】selenium:浏览器自动化测试框架,也是用来操作浏览器的,支持无头启动浏览器

pip install selenium

【2】PIL:图像处理标准库,这里是用来对截取的网页托图片做加工

pip3 install Pillow

代码

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import time
from PIL import Image
save_path = "./"
class MyChrome():
    def __init__(self,chromedriver_path):
        chromedriver = chromedriver_path
        os.environ["webdriver.chrome.driver"] = chromedriver
        chrome_options = Options()
        chrome_options.add_argument('--no-sandbox')
        chrome_options.add_argument('--headless')
        chrome_options.add_argument('--disable-gpu')
        self.driver = webdriver.Chrome(chromedriver,chrome_options=chrome_options)

    def screen_shot(self,shot_url:str,shot_left:int,shot_top:int,shot_right:int,shot_bottom:int,sleep_time:int):
        # 打开页面
        self.driver.get(shot_url)
        time.sleep(sleep_time)

        # js获取页面的宽高
        width = self.driver.execute_script("return document.documentElement.scrollWidth")
        height = self.driver.execute_script("return document.documentElement.scrollHeight")

        #设置浏览器的宽和高为页面的宽和高
        self.driver.set_window_size(width, height)
        time.sleep(sleep_time)

        #截图并关掉浏览器
        pic_name = r'tmp.png'
        self.driver.save_screenshot(pic_name)
        self.driver.close()

        # 截取指定区域的截图
        photo = Image.open(pic_name)
        photo = photo.crop((shot_left, shot_top, shot_right, shot_bottom))

        png_path = save_path+str(time.time())+'.png'
        photo.save(png_path)

        return png_path

if __name__ == '__main__':
    my_chrome = MyChrome('/opt/driver/bin/chromedriver')
    my_chrome.screen_shot('https://blog.csdn.net/github_30641423?spm=1010.2135.3001.5343',100,80,400,220,1)

效果展示

截取的整个页面,作为裁剪的基础图

裁剪的指定区域的截图

推荐公众号:龙叔18岁

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙叔运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值