前面已经介绍了通过selenium来模拟对浏览器的操作,但是必须依赖图形化才能实现。如果想在命令行页面的centos上实现爬取,就需要安装Pyvirtualdisplay来模拟。

环境安装

安装Chrome浏览器

  • 添加yum源 新建google-chrome.repo文件,放到对应目录下(/etc/yum.repos.d/)

    [google-chrome]
      name=google-chrome
      baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
      enabled=1
      gpgcheck=1
      gpgkey=https://dl.google.com/linux/linux_signing_key.pub
  • 更新和安装

    yum update
      yum install -y wget gcc zlib zlib-devel Xvfb
      yum -y install google-chrome-stable --nogpgcheck
      yum groupinstall "fonts"
  • 下载驱动文件

    Chrome驱动下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

    然后赋予执行权限,放到/usr/local/share目录下

  • 注意

    这里有一个坑,就是必须非root用户才能启动Chrome,不然会报错。我这这里折腾了好久。

安装selenium和Pyvirtualdisplay

这个比较简单,直接用pip安装

pip install selenium
pip install pyvirtualdisplay

使用

请参考下面代码

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
print(driver.title)
driver.quit()
display.stop()