python截长图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)

本文介绍了三种使用Python+Selenium截取页面指定元素长图的方法,包括利用html转canvas、截取全图后裁剪拼接以及PhantomJS全图截图后裁剪。针对不同WebDriver的实现差异,提供了相应的解决方案,并提到了滚动加载页面的截图策略。
摘要由CSDN通过智能技术生成

对WebElement截图

WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素。若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了。

WebDriver.PhantomJS自带的方法支持对整个网页截屏。

下面提供几种思路。

方式一

针对WebDriver.Chrome

通过WebDriver的js脚本注入功能,曲线救国。

注入第三方html转canvas的js库(见下方推荐)

获取元素html源码

将html转换为canvas

下载canvas

优点: 截取长图容易实现

缺点: 加载第三方库耗费时间,转换原理请参考这篇文章:

方式二

针对WebDriver.Chrome

截取全图,自行裁剪、拼接

获取元素位置、大小

获取窗口大小

截取包含元素的窗口

进行相应的裁剪和拼接。

具体算法思路很清晰,但需要注意的细节较多。这里就不在赘述。示例代码请移步:

优点: 不需太多js工作,python+少量js代码即可完成

缺点: 拼接等工作会被WebDriver的实现差异、图片加载速度等因素影响,需多加注意。 在保证截图质量的情况下,速度较慢

方式三

针对WebDriver.PhantomJS

由于接口实现的差异,PhantomJS相比于Chrome,可以截取到整个网页。所以获取指定元素的截图也就简单很多

截取网页全图

裁剪指定元素

driver = webdriver.Chrome()

driv

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值