猪比有个功能,就是给网页截图,然后发到群里。那么如何用强大的Python截图呢?这里就要用到著名的py模块selenium

2023更新:改用playwright了,更方便,但就是新版本要求的glibc版本太高了,我的机器上没有,更新还可能有风险。

Step: 1 安装Chrome

首先,要给网页截图,就难免要用到浏览器,那么安装Chrome就是一个重点。
在安装Chrome的同时,我们还需要ChromeDriver,注意这俩东西版本必须匹配,必须匹配!!!
至于chromedriver的话,可以去这里找:chromedriver地址
我先后在CentOSDebian上安装过,Ubuntu也可以借鉴Debian的安装方法:

CentOS

服务器是centos系统,centos包管理工具就是yum。但是添加yum源然后安装之后,我发现谷歌给的库里没有对应版本的chromedriver。
我又尝试给chrome降级,但是没有合适版本。
于是我开始在各大搜索引擎之间来回游走。最终在亲爱的谷歌里找到了一个不知名的Chrome下载站,找到了有对应版本的chromedriver。
大概这个站就像我的网站一样,根本就没被百度收录,不得不说还是谷歌靠谱。不过这个站是真的太xx了,下载等了我足足几个小时。
最终把rpm传到了服务器上,安装。又wget下来对应的chromedriver版本。安装成功!

这里把直接通过yum安装的方法放出来,可以先通过这个方法试一试:yum安装Chrome
本来想把我用的rpm都放上来,但是typecho不太给力,以后再说吧。

Debian

猪比移到docker容器里后,由于使用的Python3.8镜像,容器其实是个Debian系统,之前的rpm包已经不适用了,必须找个新的方法安装。
不过好在apt-get还是很给力的。这里放个连接,按照这个方法:apt-get安装Chrome(这里面说用gedit编辑,这边还是建议老牌的vim比较好用)
安装完毕后,看一下版本,然后去上面那个连接找对应版本wget下来安装即可

Step: 2 码代码

yum安装Chrome 这个文章里其实已经很详细了,包括乱码的处理方法。那这里我摆出猪比的截图代码,供大家参考:(建议用我这个)

options=webdriver.ChromeOptions()
# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument('--headless')
# 谷歌文档提到需要加上这个属性来规避bug
options.add_argument('--disable-gpu')
# 取消沙盒模式
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# 指定浏览器分辨率
options.add_argument('window-size=1920x1080')
# 应用设置
driver=webdriver.Chrome(options=options)
#网页地址
driver.get(网页地址)
#等待2秒再截图,如果网页渲染的慢截图的内容会有问题
time.sleep(2)
#截图
driver.get_screenshot_as_file(保存路径)
#退出
driver.close()

总结

本篇主要侧重点在于Chrome及ChromeDriver的安装,因为这个但是是着实废了我不少力的。
如果我说的有错误或有更好的方法和见解,请评论指出,谢谢支持!