【Selenium学习笔记】网页截图实践

缘由

    我们有一个产品牵扯到核查数据,在核查数据过程中会发现有一些违规网站,这一些违规网站我们要进行截图保留证据。如果是人工截图就非常麻烦,需要截图之后上传到系统,增加了大家的工作量,我们就想着试着程序自动化截图

解决方案

    由于我们爬虫都使用的python selenium 调用的chrome无头浏览器,所以我们依然选择了selenium调用chrome进行截图。截图核心代码如下,非常简单

###核心代码如下
driver.get( url )

#初始化一个屏幕大小
driver.set_window_size(1400, 900)

##通过脚本获取页面宽和高,设置窗口大小
width = driver.execute_script("return document.documentElement.scrollWidth")
height = driver.execute_script("return document.documentElement.scrollHeight")
driver.set_window_size(width, height)
time.sleep(2)
##保存截图
driver.save_screenshot( file_path )

    上面截图之后发现有一些小的瑕疵,就是只有图片也不知道网址和截图时间,所以我们要对图片进行打水印,水印代码如下

##在图片上写字也就是打水印

img = Image.open(file_path)
# add watermark
font_path = app.config.get('FONT_PATH') + "/SIMHEI.TTF"
font = ImageFont.truetype(font_path, 32)
# 添加画板
drawing = ImageDraw.Draw( img )
##红色字体
color = (0,0,255)
drawing.text( (5, 5),  DateHelper.getCurrentTime() , fill= color , font=font)
drawing.text( (5, 30),  url , fill= color , font=font)
##单独保存一个新图片
img.save( watermark_file_path )