记录下最近用webmagic+selenium写了个爬虫,本地是在Windows上跑,后来要部署在linux服务器上,配置环境所踩过的坑。
首先:系统环境 (原本就有的环境)
CentOS 7
java (jdk1.8)
tomcat8.5
mysql5.7
在上有环境基础上进行操作:
1.安装 chrome
执行: yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
2.安装 chromedriver
在安装chromedriver之前,先查看自己系统装的chrome版本:
执行: google-chrome --version
现在最新的chromedriver 下载地址: ChromeDriver Latest Releases Versions Downloads - Chrome for Testing availability
执行: wget https://npm.taobao.org/mirrors/chromedriver/77.0.3865.40/chromedriver_linux64.zip(这是我对应的版本, 请更具自己的浏览器版本自行修改)
将下载的文件解压,放在如下位置:/usr/bin/chromedriver
执行:unzip chromedriver-linux64.zip 进行解压
执行: mv -f chromedriver /usr/bin/ 移动到/usr/bin/chromedriver
给予执行权限
执行:chmod +x /usr/bin/chromedriver
安装 XVFB
执行: yum install Xvfb -y
执行:yum install xorg-x11-fonts* -y
新建在/usr/bin/ 一个名叫 xvfb-chrom 的文件写入以下内容:
执行:vim /usr/bin/xvfb-chrome
复制下面内容:
#!/bin/bash
_kill_procs() {
kill -TERM $chrome
wait $chrome
kill -TERM $xvfb
}
# Setup a trap to catch SIGTERM and relay it to child processes
trap _kill_procs SIGTERM
XVFB_WHD=${XVFB_WHD:-1280x720x16}
# Start Xvfb
Xvfb :99 -ac -screen 0 $XVFB_WHD -nolisten tcp &
xvfb=$!
export DISPLAY=:99
chrome --no-sandbox --disable-gpu$@ &
chrome=$!
wait $chrome
wait $xvfb
添加执行权限
执行:chmod +x /usr/bin/xvfb-chrome
查看当前映射关系
执行:ll /usr/bin/ | grep chrom
更改Chrome启动的软连接
执行:
ln -s /etc/alternatives/google-chrome /usr/bin/chrome
- rm -rf /usr/bin/google-chrome
- ln -s /usr/bin/xvfb-chrome /usr/bin/google-chrome
查看修改后的映射关系
执行:ll /usr/bin/ | grep chrom
下面是demo:
public String test(){
ChromeOptions options = new ChromeOptions();
//chrome安装位置
System.setProperty("webdriver.chrome.bin", "/opt/google/chrome/chrome");
//chromederiver存放位置
System.setProperty("webdriver.chrome.driver",
"/usr/bin/chromedriver");
//无界面参数
options.addArguments("headless");
//禁用沙盒
options.addArguments("no-sandbox");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.baidu.com");
//打印百度的title
System.out.println(driver.getTitle());
return driver.getTitle();
}
下面是运行结果: