硒基于公益诉讼实现拼接滚动截图的方法

  介绍

这篇文章主要讲解了硒基于公益诉讼实现拼接滚动截图的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

硒默认的截图save_screenshot只支持对当前窗口内容进行截的图,当如果你想要截取整个网页,那么,可以明确的告诉你。
硒做不到。

你可以手工使用开发者工具Ctrl + Shift + p调出命令行菜单,执行捕获完整截图命令进行截的图,如下图图:

硒基于公益诉讼实现拼接滚动截图的方法

也可以通过

硒Webdriver的execute_cdp_cmd()来调用一下铬DevTools协议提供的方法。但是,很遗憾,没有全屏截图的方法。

Selenium2时,还可以使用Firefox全屏截图.Selenium3之后,所有浏览器不再支持。

一种方式是使用aShot,一个jar包,这显然是Java派的解决方案。

另外如果对样式没有强迫症的话,可以通过滚动页面截取多张+公益诉讼图片拼接的方式实现全屏的截的图。

示例代码:

进口睡眠时间
  从公益诉讼导入图像
  进口numpy np
  从硒进口webdriver
  
  司机=webdriver.Chrome ()
  driver.fullscreen_window() #全屏窗口
  driver.get (& # 39; https://www.qq.com/& # 39;)
  window_height=driver.get_window_size()[& # 39;高度# 39;]#窗口高度
  
  page_height=driver.execute_script(& # 39;返回document.documentElement.scrollHeight& # 39;) #页面高度
  driver.save_screenshot (& # 39; qq.png& # 39;)
  
  如果page_height比;window_height:
  n=page_height//window_height #需要滚动的次数
  base_mat=np.atleast_2d (Image.open (& # 39; qq.png& # 39;)) #打开截图并转为二维矩阵
  
  因为我在范围(n):
  driver.execute_script (f # 39; document.documentElement.scrollTop={window_height * (i + 1)}; & # 39;)
  睡眠(5)
  driver.save_screenshot (f # 39; qq_{我}. png # 39;) #保存截的图
  垫=np.atleast_2d (Image.open (f # 39; qq_{我}. png # 39;)) #打开截图并转为二维矩阵
  base_mat=np。追加(base_mat、垫、轴=0)#拼接图片的二维矩阵
  Image.fromarray (base_mat) .save (& # 39; hao123.png& # 39;)
  
  driver.quit () 

需要安装公益诉讼和numpy: pip安装公益诉讼numpy

上例中,全屏窗口以获得最大展示范围,通get_window_size()作为捕获到过获取屏幕高度,通过执行js,获取页面高度。
相除后获得滚动次数。

每次滚动后,截图保存,然后使用形象打开转换为二维矩阵拼接到上一个图片的二维矩阵中。

循环完,最后再将拼接的二维矩阵输出成图片。

效果展示,如下图:

硒基于公益诉讼实现拼接滚动截图的方法

注意:如果是流式加载的页面,页面高度是不断变长的,非固定为第一次获取到的page_height的值,需要另外处理

看完上述内容,是不是对硒基于公益诉讼实现拼接滚动截图的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

硒基于公益诉讼实现拼接滚动截图的方法