鱼C论坛

 找回密码
 立即注册
查看: 3429|回复: 3

Selenium+PhantomJS网页截图BUG

[复制链接]
发表于 2017-4-13 09:34:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 gopythoner 于 2017-4-13 11:46 编辑

之前工作原因,需要给一些网页进行整改页面的截图并保存
然后用Python写了一个批量自动化截图工具
# 使用Selenium+PhantomJS进行整个网页的截图,发现一个BUG:图片能够显示的最大长度是有限的。

具体情况如下:

为了能够看清楚浏览器是否全部加载,首先使用Chrome作为浏览器显示,经过测试,能够清楚的看到页面已经全部滑到网页最下端,所有图片完全加载完毕,并且用Chrome可以截图到最下端的页面。

由于Chrome无法截取完整的网页(个人无法实现,不知道是否有途径能够实现整个网页截图,后续可以查找这方面方法)只能截图到最底端的一页,因此实际截图使用PhantomJS来进行整个网页的截图。但是有个问题,就是截图的图片一直看不到网页最下面的部分。开始一直以为是自己的加载没有完全到网页底端,直到我把图片放在PS里面显示才发现原来是图片是完整的截取了,但是后面有一部分无法显示出来,PNG的格式是显示的透明,JPG的格式是显示的黑色。
具体图片是这样的
4874687-3d07c25e8373aea0.png
然后我查看了图片大小,发现是整个网页的长度,如图
4874687-c8e972716dd22d5a.png
也就是说,网页是整个截图了,但是显示出来的并不完整,为了验证这个是不是每次都会这样,我试过很多次,发现的确每次都是这样,然后我找到了这个最大显示长度,如图,这个是把透明部分去掉之后的长度,每次只要网页超过这个值就会变成透明无法显示图片
4874687-84fd06249d0d3ddc.png

为了验证这个32767是否就是截图的图片能够显示的最大长度,继续做了测试,换了一个更长的网页来截图,发现最终能够显示的部分都是32767,因此推断,使用PhantomJS进行网页截图是有最大长度的限制的。而这个限制就是图片能够显示的部分长度只有32767像素。

经过百度32767这个数字,发现原来这是int(32位)也就是整形的最大值,虽然不知道到底代表什么,但是这个特殊的值足以说明PhantomJS截图的这个问题应该不是一个BUG,而是某种特殊的原因所致。

我的问题是,有没有什么办法能够解决这个截图最大长度的限制问题?曲线救国的方法也行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-13 11:46:25 | 显示全部楼层
已经解决,曲线救国方法,等比例缩小网页在截图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-13 11:58:12 | 显示全部楼层
因为网页为了速度都是通过AJAX技术分段显示的,没办法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-13 12:02:13 | 显示全部楼层
alltolove 发表于 2017-4-13 11:58
因为网页为了速度都是通过AJAX技术分段显示的,没办法

不是,这个跟网页的加载没关系,我已经让网页全部加载完毕了,通过谷歌浏览器能看到已经到底了,这个截图不完整的原因还是因为32767像素的限制,这个值是32位int的最大值,这不是偶然事件,虽然我不明白到底为什么,但是可以确定的是,这个跟计算机底层有关
暂时也只能想到利用缩小网页比例再截图这种方式了,缩放位80%的话可以截图到40000像素,而且影响也不大
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-6 02:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表