我使用 Python 控制 PhantomJS 来进行整个网页的截图的时候发现,当网页的总长度超过 32767px 的时候,截到的图片能够显示出来的长度最多只能到 32767px,后来查到 32767 这个数字是整形的最大值,所以,这个 bug 应该有一定的依据 ,请问有人试过吗?知道其中的原理吗?
1
larendorrx 2018-04-29 18:24:23 +08:00
稍微搜了一下,14 年就有这个 bug 了,现在 issue 还是 open 的。。项目早就不维护了
|
2
infun 2018-04-29 18:44:55 +08:00 via iPhone
pyvirtualdisplay
|
3
terence4444 2018-04-29 18:59:15 +08:00 via iPhone
selenium 已经不打算继续支持 PhantomJS 了
|
4
zeyexe 2018-04-29 19:53:26 +08:00
换 Chrome headless 试试吧
|
5
LosLord 2018-04-29 20:04:16 +08:00 via Android
自从 Chrome headless 出来后,phantom 的维护者就说了不打算继续维护了
|
7
yh7gdiaYW 2018-04-29 22:44:30 +08:00
换 Puppeteer 试试?
|
8
murmur 2018-04-29 22:45:11 +08:00
32767px 是干嘛 压力测瀑布流么
|
11
cleveryun 2018-04-30 11:48:48 +08:00
去年上半年有弄过在 node 下用 PhantomJS 截取整个网页,不过没有试过这么长的网页,我当时记得特别清楚的是这样截图好像特别慢,当时是对有数学公司的网页进行截图,初中高中数学题库一共下来几万(几十万?)张网页,用服务器跑了两三天才截完图片,好像平均截一张图要 6s 钟左右,太慢了。
想问问楼主现在写的工具截图速度怎么样? |
12
zeyexe 2018-04-30 12:13:30 +08:00
@creedowl 根据我搜索的结果来看,应该是 selenium 并没有实现根据 DOM 截图的接口,现有的解决办法是算出要截图的 DOM 在网页中的位置,然后截取整个页面,然后用第三方工具裁剪。
|
14
lamCJ 2018-04-30 15:25:37 +08:00 via iPhone
这个问题我也遇到过 不是 phantomjs 的锅 同样的超长网页 我用专门浏览器截图插件 也截不完整甚至失败
应该是浏览器遵守了某个图片格式的像素上限 导致一系列工具截不了 SO 有个关于图片格式上限的讨论( 2 亿像素极限 一般程序能处理(误 <https://stackoverflow.com/q/4109447/4696448> |
15
Hopetree OP @cleveryun 我用的多进程,算下来平均每个网页要 10 秒,当然,这个跟网页的长度有关,我截的图都是比较长的,如果短的就比较快 Github 代码: https://github.com/Hopetree/MyTools/tree/master/ScreenShot
|