我们在写爬虫的时候,偶尔会遇到一些内容是通过js获取,或者加密等一些情况,那么这种情况就必须要祭出大杀器了——selenium。
严格来讲,selenium是一个自动化测试的工具,不过用来做爬虫也是极好的。它可以获取到js加载后的页面,从而拿到直接请求拿不到的东西,实现“所见即所得”。
所谓“工欲善其事,必先利其器”。使用selenium最重要的是要先安装好浏览器的驱动,这样selenium才可以控制得到我们的浏览器。
selenium支持几乎市面上所有的主流浏览器,在这里就主要介绍常用的三款浏览器,chrome、firefox、PhantomJS的安装使用
1. 下载webdriver
注意:webdriver支持的版本必须与浏览器的版本一致,否则会报错
1. 谷歌浏览器 chromedriver
-
最新版chromedriver下载地址(支持Chrome v68-70):
http://chromedriver.chromium.org/downloads -
全部驱动下载地址:
https://chromedriver.storage.googleapis.com/index.html
如果这个网站访问不了,可以使用淘宝镜像下载:
https://npm.taobao.org/mirrors/chromedriver/
2. 火狐浏览器 geckodriver
-
火狐浏览器全部版本下载地址:
http://ftp.mozilla.org/pub/firefox/releases/
这篇文档里可以查到火狐浏览器版本所对应的驱动版本
https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/Support.html
3. PhantomJS
-
最新版本下载地址:
http://phantomjs.org/download.html
2. 配置环境
- 将刚刚下载下来的驱动文件解压出来,得到一个exe文件,例如:
chromedriver.exe
- 然后新建一个文件夹用来保存这些驱动文件,例如:
D:\webdriver
- 随后我们将该文件夹路径添加进系统的环境变量里:
我的电脑 —— 右键属性 —— 高级系统设置 —— 环境变量 —— 系统变量
找到path
值,将D:\webdriver
路径添加进去
- 此时
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秒之后,将会自动关闭,程序结束。
注意: phantomjs是一个无界面浏览器,因此在运行的时候是不会有浏览器窗口显示的。
4. 结束语
使用selenium来编写爬虫的优点很多,例如可以省略我们分析js和一些加密算法的时间,减小爬虫开发难度。不过缺点也十分明显,就是速度太慢,占用的资源多,效率不高。
因此在非必要的时候,尽量使用直接请求api的方式来编写爬虫。
网友评论