CentOS7安装playwright终极指南
系统环境为CentOS Linux release 7.9.2009 (Core) 最小安装,考虑到playwright的安装需要 python3.7+
,本次直接选择安装python3.8。
升级libstdc++
cd /opt
yum -y install wgetwget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zipfind /usr -name "libstdc++.so.*"
cd /usr/lib64
ll libstdc++.so.6
mv libstdc++.so.6 libstdc++.so.6.bakcp /opt/libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6
升级glibc
下载并解压 glibc-2.28
cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzvf glibc-2.28.tar.gz
cd glibc-2.28
### 创建临时文件
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin### 这一步时, 发生了错误, 提示大致为
*** These critical programs are missing or too old: compiler python
*** Check the INSTALL file for required versions.
升级 gcc 版本
yum -y install centos-release-scl
yum -y install devtoolset-8*rpm -ivh http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
yum -y install devtoolset-8-runtime
yum -y install devtoolset-8# 启用工具
scl enable devtoolset-8 bash# 安装GCC-8
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils bison# 直接替换旧的gcc
旧的gcc是运行的/usr/bin/gcc
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++gcc --version
g++ --version
升级 make
cd /opt
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz
cd make-4.3/#安装到指定目录
./configure --prefix=/usr/local/make
make
make install# 创建软链接
cd /usr/bin/
mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make
继续编译 glibc
# 进入之前的 `glibc-2.28/build`目录下
cd /opt/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/binmake
make install
查询libc版本
strings /lib64/libc.so.6 | grep GLIBC
设置(en_US.UTF-8)
vi /etc/environment
输入:
LANG=en_US.UTF-8
LC_ALL=
存盘,然后输入:source /etc/environment
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
安装python 3.8
Centos 7操作系统上默认安装了python 2.7.5版本,但是python 2即将成为历史,python 3才是未来的主流,本文记录了笔者在Centos 7上安装python 3.8的过程
下载python 3.8压缩包
使用如下命令下载python 3.8:
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
解压缩安装包
通过以下命令解压缩下载的文件:
cd /opt
tar zxvf Python-3.8.0.tgz
解压后进入Python-3.8.0目录:
cd /opt/Python-3.8.0
安装前准备工作
因为编译 Python 源代码需要依赖于很多工具,所以得先准备一下,依次执行以下命令:
yum update -yyum groupinstall -y 'Development Tools'yum install -y gcc openssl-devel bzip2-devel libffi-devel
安装python 3.8
现在我们就可以安装python 3.8了,首先执行以下命令(注意,一定要在Python-3.8.0目录下执行该命令):
cd /opt/Python-3.8.0
./configure --prefix=/usr/local/python3 --enable-optimizations
📝注意:
--prefix
选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin
,库文件默认放在/usr/local/lib
,
配置文件默认放在/usr/local/etc
,其它的资源文件放在/usr/local/share
,比较凌乱.如果配置
--prefix
,如:./configure --prefix=/usr/local/python3
可以把所有资源文件放在/usr/local/python3
的路径中,不会杂乱.用了--prefix
选项的另一个好处是卸载软件或移植软件.当某个安装的软件不再需要时> ,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个相同的操作系统机器即可.当然要卸载程序,也可以在原来的make 目录下用一次make uninstall
,但前提是make文件指定过uninstall.
./configure
命令执行完毕之后创建一个文件 Makefile, 供下面的make命令使用,执行make install
之后就会把程序安装到我们指定的文件夹中去.
make && make install
那么现在就安装好python 3了吗?很遗憾,答案是没有.因为系统默认使用的还是python 2.
修改 python 2 链接
我们首先查看一下 Python 可执行文件的位置:
which python
然后切换到相应的目录:
cd /usr/bin
查看相关的python信息:
ls -la python*
发现当我们执行 python
命令时,系统指向python 2,然后python 2指向python 2.7,所以系统默认使用的python版本仍然是python 2.
首先将python 改名为 python.bak
mv python python2.bak
再次查看python相关信息:
修改yum配置文件
进入目录 /usr/bin
,查看有关yum的文件:
ls -la yum*
使用 vi
进入文本编辑器(如果有多个yum配置文件,都要进去修改):
vi yum
点击i进入编辑模式之后将 #!/usr/bin/python
改为 #!/usr/bin/python2
,按ESC退出编辑模式,输入 :wq!
保存修改退出.
同样进入文件 /usr/libexec/urlgrabber-ext-down
做同样修改.
配置python 3软链接
进入 /usr/bin
目录,配置软链接.在我看来,其实软链接就像Windows操作系统里的快捷方式,比如现在桌面上有一个图标叫python,现在你双击打开它,发现它打开的是Python 2,所以我们要配置其指向python 3.
ln -s /usr/local/python3/bin/python3.8 /usr/bin/pythonln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip
📝注意: 如果提示
/usr/bin/pip
已经存在,可以使用rm删除,然后再进行配置.
当然,也可以配置一个pip3软链接.
rm -f /usr/bin/pip3
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
验证python版本
输入 python --version
和 pip -V
,查看
yum安装依赖和中文字体
yum -y install libXcomposite libXtst gtk3 atk at-spi2-atk cups-libs libxkbcommon libXdamage libXrandr mesa-libgbm alsa-lib-develyum -y install fontconfig
yum -y install cjkuni-ukai-fonts cjkuni-uming-fonts
安装playwright
rm -rf ~/.cache/ms-playwright/pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m playwright install
测试脚本
# 导入
from playwright.sync_api import Playwright, sync_playwright# 创建浏览器
def run (playwright: Playwright) -> None:# 创建浏览器browser = playwright.chromium.launch(headless=True)# 使用 selenium 如果要打开多个网页,需要创建多个浏览器,但是 playwright 中只需要创建多个上下文即可# 例如:content1 = browser.new_context()、content2 = browser.new_context() 分别去访问网页做处理content = browser.new_context()# 每个 content 就是一个会话窗口,可以创建自己的页面,也就是浏览器上的 tab 栏,在每个会话窗口中,可以创建多个页面,也就是多个 tab 栏# 例如:page1 = content.new_page()、page2 = content.new_page() 封面去访问页面page = content.new_page()# 页面打开指定网址page.goto('https://www.baidu.com')print(page.title())page.screenshot(path="screenshot.png",full_page=True)# page.wait_for_timeout(1000)# 使用完成关闭上下文(也就是会话窗口)content.close()# 关闭浏览器browser.close()# 调用
with sync_playwright() as playwright:run(playwright)
存为
/opt/test_playwright.py
运行测试:python ./test_playwright.py
<<完毕>>