小白学爬虫-在无GUI的CentOS上使用Selenium+Chrome

时间:2021-03-05 20:41:04

爬虫代理IP由芝麻HTTP服务供应商提供


各位小伙伴儿的采集日常是不是被JavaScript的各种点击事件折腾的欲仙欲死啊?好不容易找到个Selenium+Chrome可以解决问题!

但是另一个▄█▀█●的事实摆在面前,服务器都特么没有GUI啊··

 

好吧!咱们要知难而上!决不能被这个点小困难打倒·······

然而摆在面前的事实是····  他丫的各种装不上啊!坑爹啊!

那么我来拯救你们于水火之间了!

 

服务器如下:

[root@spider01 ~]# hostnamectl   
   Static hostname: spider01  
         Icon name: computer-vm  
           Chassis: vm  
        Machine ID: 1c4029c4e7fd42498e25bb75101f85b6  
           Boot ID: f5a67454b94b454fae3d75ef1ccab69f  
    Virtualization: kvm  
  Operating System: CentOS Linux 7 (Core)  
       CPE OS Name: cpe:/o:centos:centos:7  
            Kernel: Linux 3.10.0-514.6.2.el7.x86_64  
      Architecture: x86-64  

安装Chromeium: 

## 安装yum源  
[root@spider01 ~]# sudo yum install -y epel-release  
## 安装Chrome  
[root@spider01 ~]# yum install -y chromium  


去这个地方:https://sites.google.com/a/chromium.org/chromedriver/downloads 下载ChromeDriver驱动放在/usr/bin/目录下: 

完成结果如下: 

[root@spider01 ~]# ll /usr/bin/ | grep chrom  
-rwxrwxrwx. 1 root root   7500280 11月 29 17:32 chromedriver  
lrwxrwxrwx. 1 root root        47 11月 30 09:35 chromium-browser -> /usr/lib64/chromium-browser/chromium-browser.sh  

安装XVFB: 

[root@spider01 ~]# yum install Xvfb -y  
[root@spider01 ~]# yum install xorg-x11-fonts* -y  

新建在/usr/bin/ 一个名叫 xvfb-chromium 的文件写入以下内容: 

[root@spider01 ~]# cat /usr/bin/xvfb-chromium   
#!/bin/bash  
  
_kill_procs() {  
  kill -TERM $chromium  
  wait $chromium  
  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  
  
chromium --no-sandbox --disable-gpu$@ &  
chromium=$!  
  
wait $chromium  
wait $xvfb  

更改软连接 

## 更改Chrome启动的软连接  
[root@spider01 ~]# ln -s /usr/lib64/chromium-browser/chromium-browser.sh /usr/bin/chromium  
  
  
[root@spider01 ~]# rm -rf /usr/bin/chromium-browser  
  
[root@spider01 ~]# ln -s /usr/bin/xvfb-chromium /usr/bin/chromium-browser  
  
[root@spider01 ~]# ln -s /usr/bin/xvfb-chromium /usr/bin/google-chrome  
  
[root@spider01 ~]# ll /usr/bin/ | grep chrom*  
-rwxrwxrwx. 1 root root   7500280 11月 29 17:32 chromedriver  
lrwxrwxrwx. 1 root root        47 11月 30 09:47 chromium -> /usr/lib64/chromium-browser/chromium-browser.sh  
lrwxrwxrwx. 1 root root        22 11月 30 09:48 chromium-browser -> /usr/bin/xvfb-chromium  
-rwxr-xr-x. 1 root root     73848 12月  7 2016 chronyc  
lrwxrwxrwx. 1 root root        22 11月 30 09:48 google-chrome -> /usr/bin/xvfb-chromium  
-rwxrwxrwx. 1 root root       387 11月 29 18:16 xvfb-chromium  

来瞅瞅能不能用哦: 

>>> from selenium import webdriver  
>>> driver = webdriver.Chrome()  
>>> driver.get("http://www.baidu.com")  
>>> driver.find_element_by_xpath("./*//input[@id='kw']").send_keys("哎哟卧槽")  
>>> driver.find_element_by_xpath("./*//input[@id='su']").click()  
>>> driver.page_source  

No problem!!!! 

好了部署完了!当然Docker这么火贼适合懒人了!来来 看这儿 Docker版的 妥妥滴! 

docker pull thsheep/chromium-xvfb-py3:master  

做好了Python3.6.3和Chrome集成 

需要自己使用Dockerfile来重新打包安装你需要的Python包。 

顺便一提!!!!这个玩意儿从事Web测试工作的小伙伴可以用!!!!!!!!