背景:在centos7中运行selenium-wire爬虫,系统自带的Firefox浏览器不兼容,运行报错no attribute ‘set_preference’,应该是selenium-wire和Firefox的驱动不兼容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vGy4rXIu-1731727463780)(https://i-blog.csdnimg.cn/direct/b0150dc08aaa4127b68aa4dc8cf5a419.png)]
查了半天不知道怎么解决,就想在centos7上安装Chrome来跑爬虫,毕竟Chrome的资料多一点
在Centos7.9上安装python3.9
因为系统自带或者用yum直接install的python最高支持3.6,这个版本pip无法兼容安装selenium-wire,因为需要selenium>=4.0,想用上教新版本的就需要更新python
- 查询是否有其他python版本
python3 --version
- 卸载存在的python3版本
yum remove python3
-
在官网中找到需要的Python版本
https://www.python.org/ftp/python -
登录到centos7
# 使用命令将python安装包下载到centos7
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
# 如果未安装wget,使用命令进行安装
yum -y install wget
- 使用命令解压下载的Python安装包
tar -zxvf Python-3.9.0.tgz
- 使用命令准备编译环境
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
- 创建安装目录
mkdir -p /opt/python3.9
- 进入到解压后的安装包内
cd Python-3.9.0
指定安装目录执行
./configure --prefix=/opt/python3.9
- 编译安装
make && make install
- 创建软连接,依次执行以下代码
ln -s /opt/python3.9/bin/python3.9 /usr/bin/python3
ln -s /opt/python3.9/bin/pip3.9 /usr/bin/pip3
- 检验python
python3 --version
安装Chrome
选择了安装124版本,下载地址:
http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/google-chrome-stable-124.0.6367.118-1.x86_64.rpm
或选择自己想要的版本(过高版本可能会安装失败):
http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yDps1kqJ-1731727463782)(https://i-blog.csdnimg.cn/direct/63bd7c166e35458eb22af6278a0109a3.png)]
- 上传下载的chrom安装包
- 准备安装环境
yum -y install liberation-fonts
yum -y install libvulkan*
- 安装Chrome
rpm -ivh google-chrome-stable-124.0.6367.118-1.x86_64.rpm
- 启动
使用root用户启动需要使用
google-chrome --no-sandbox
下载对应Chrome版本的driver
地址:
https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.207/linux64/chromedriver-linux64.zip
或者最新驱动器的地址:
https://googlechromelabs.github.io/chrome-for-testing/
解压zip把驱动放到环境内
cp chromedriver-linux64/chromedriver /usr/local/bin/
安装selenium-wire
pip3 install selenium selenium-wire
pip3 install requests
基本使用
from seleniumwire import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
def my_get():options = Options()# 启用无头模式options.add_argument('--headless')# 关闭浏览器上部提示语:Chrome正在受到自动软件的控制options.add_experimental_option(name='excludeSwitches', value=['enable-automation'])options.add_experimental_option(name='useAutomationExtension', value=False)# options.add_argument("blink-settings=imagesEnabled=false") # 不加载图片, 提升速度,登陆时需要加载user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'options.add_argument(f'user-agent={user_agent}')drivers = webdriver.Chrome(options=options)drivers.set_window_size(1920, 1080)drivers.get("https://www.baidu.com/")drivers.implicitly_wait(5)