phantomjs+python截图乱码及其截图分辨率的解决办法

本来在centos上用的好好的python+selenium+phantomjs,需要搬迁到ubuntu上面。
搭环境的时候确实比较容易踩着坑,搞了半天终于全装上了。
跑一下吧,然后发现截图怎么分辨率这么低,而且汉字全是小框框。

查了下,应该是没有安装字体
在centos中执行:
yum install bitmap-fonts bitmap-fonts-cjk

在ubuntu中执行:
sudo apt-get install xfonts-wqy

ubuntu亲测可行,而且安装的很干脆,没出现什么别的幺蛾子。

然后开始解决分辨率的问题,明明已经是maximize_window()了啊,为毛还是这么小,而且在centos上没问题,我一直认为是系统的差异导致的,找了半天ubuntu和phantomjs之间的问题。

然而老大说是分辨率,让我去查查,还真的是。其实和大牛的差距就是能够准确的定位问题。。。

搞了一圈,发现python的木有

driver = webdriver.PhantomJS('phantomjs')                  
driver.viewportSize={'width':1024,'height':800} #重要这句!
driver.maximize_window()
driver.get('http://www.baidu.com')

后面我就不写了,加上定义分辨率的语句果然截图是我期待的。
你可以试试调节参数,来模拟手机上,平板上的显示效果。

2017.4.21
哈哈哈,搞到centos这坑里了。

自带2.6的python ,截图都是方框,这问题轻车熟路,装字体。
再截图,汉字是正常了,一些数字“10分钟”的10不显示。百度也百度的不到,都是众所周知的上面安装字体。

于是我开始分析。
放到另一台centos上截图没问题。那么看看phantomjs的版本一致么
phantomjs -v 都是2.1.1
看看python版本不一致升级python 2.7
然后升级了一个2.7.3,不行,再换了一个小版本号,跟另一台机器一致2.7.11.

还是他妈的不行,草。

然后我仔细对比两个截图,发现这个汉字的字体还真的有点点不一样呢。。。

想着看看字体吧。
主要ttf文件存储在
/usr/share/fonts/
然后我进去一看才两种字体,我又去另一台截图正常的机器去看,结果尼玛20多种字体。。。
全部copy 过来,管他的

中间还看到有个类似
/usr/share/fontconfig
看名字像是配置文件,也不能放过。全部copy过来。

运行,截图,好了。白白浪费我2小时升级乱七八糟的东西。

百度不到的话,还是结合现象好好分析,刚开始是怨我瞎,我服。。。

参考资料
[1]http://blog.sina.com.cn/s/blog_736f1c5901013g94.html

没有更多推荐了,返回首页