- 概述
使用selenium爬取网页数据,运行平台是centos7,除安装selenium外,必须做一些环境配置。
1. 安装
pip install selenium
2. 安装google-chrome
首先下载安装包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
然后使用yum安装刚下载的安装包
yum install google-chrome-stable_current_x86_64.rpm
安装之后,会显示当前安装的版本,如图
可以看到我的版本是 90.0.4430.212-1,后面的.212-1不用理会
linux(centos)查看chrome版本号
google-chrome --version
3. 安装对应版本的chromedriver (必须与google-chrome版本对应)
进入 https://chromedriver.chromium.org/downloads (需要翻墙,如不能翻墙,请寻找国内镜像)选择 对应的版本,或者使用https://chromedriver.storage.googleapis.com/index.html,如下图
点击后,进入下一个页面,选择linux版本,并右键复制地址
wget https://chromedriver.storage.googleapis.com/90.0.4430.24/chromedriver_linux64.zip
下载完成后,解压
将 chromedriver添加到环境变量即可,由于我得目录是 /envConfig, 所以在/etc/profile末尾添加
#添加chromedriver
export PATH=$PATH:/envConfig/
即可。也可将其移动到/usr/bin目录下
mv chromedriver /usr/bin
4. 验证
随后进入 python 环境
实验一
from selenium import webdriver, common
url = 'https://chromedriver.chromium.org/downloads'
# 使用headless无界面浏览器模式
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless') #//增加无界面选项
chrome_options.add_argument('--disable-gpu') #//如果不加这个选项,有时定位会出现问题
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(url)
实验二:
from selenium import webdriver, common
url = 'http://www.nmc.cn/publish/typhoon/typhoon_new.html'
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(url)
print(browser.page_source)
browser.quit()
5. docker 运行 selenium 报错
5.1 文件权限问题
WebDriverException: Message: ‘chromedriver‘ executable may have wrong permissions.
出现这种问题,一般四种情况
- 1、没装chromedriver
版本号一定要对应上,查看一下你的chrome版本,对应好 - 2、没有执行权限
大多数人如果是做项目的话,爬虫一般都在服务器上,本地上传的时候没给权限
ls -l
这里赋予可执行权限
chmod -R 777 chromedriver
image.png
5.2 环境配置问题
报错:
docker Message: 'chromedriver' executable needs to be in PATH.
以前配置时,chromedriver将放入到/envConfig 内,然后通过配置文件配置,可行;但是在docker 内同样的配置出错。
后来将 chromedriver 放入到 /usr/bin/ 下
成功解决。
5.3 装了Chrome 后,yum 无法安装安装包啦
安装Chrome 后,yum install unzip 都报错:
failure: repodata/primary.xml.gz from google-chrome: [Errno 256] No more mirrors to try.
解决方法:
需要到/etc/yum.repos.d目录下,找到chrome的repo,也就是google-chrome.repo, 删除掉或者mv到别的地方,然后yum clean all, 就能解决。
主要是因为这个chrome的源没法用
cd /etc/yum.repos.d
rm -rf google-chrome.repo
yum clean all
网友评论