我们在写爬虫的时候,偶尔会遇到一些内容是通过js获取,或者加密等一些情况,那么这种情况就必须要祭出大杀器了——selenium。

严格来讲,selenium是一个自动化测试的工具,不过用来做爬虫也是极好的。它可以获取到js加载后的页面,从而拿到直接请求拿不到的东西,实现“所见即所得”。

所谓“工欲善其事,必先利其器”。使用selenium最重要的是要先安装好浏览器的驱动,这样selenium才可以控制得到我们的浏览器。

selenium支持几乎市面上所有的主流浏览器,在这里就主要介绍常用的三款浏览器,chrome、firefox、PhantomJS的安装使用

1. 下载webdriver

注意:webdriver支持的版本必须与浏览器的版本一致,否则会报错

这篇文档里可以查到火狐浏览器版本所对应的驱动版本
https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/Support.html

2. 配置环境

  • 将刚刚下载下来的驱动文件解压出来,得到一个exe文件,例如:
  • 然后新建一个文件夹用来保存这些驱动文件,例如:
  • 随后我们将该文件夹路径添加进系统的环境变量里:
  • 此时D:\webdriver文件夹目录的内容如下:
├─webdriver
│  ├─chromedriver.exe
│  ├─geckodriver.exe
│  ├─phantomjs.exe

3. selenium里使用webdriver

  • 完成了webdriver的安装配置只有,便可以通过selenium来控制浏览器了,示例代码:
    from selenium import webdriver
    import time
    open_driver = webdriver.Chrome()
    # open_driver = webdriver.Firefox()
    # open_driver = webdriver.PhantomJS()
    open_driver.get('https://www.baidu.com')
    time.sleep(5)
    open_driver.close()

运行这段代码,浏览器会打开百度首页,在等待5秒之后,将会自动关闭,程序结束。

4. 结束语

使用selenium来编写爬虫的优点很多,例如可以省略我们分析js和一些加密算法的时间,减小爬虫开发难度。不过缺点也十分明显,就是速度太慢,占用的资源多,效率不高。
因此在非必要的时候,尽量使用直接请求api的方式来编写爬虫。

10-03 10:18