上一篇文章: Python3网络爬虫实战---一、请求库安装:Requests、Selenium、ChromeDriver
下一篇文章: Python3网络爬虫实战---三、解析库的安装:LXML、BeautifulSoup、PyQuery、Tesserocr
在上一节咱们了解了 ChromeDriver 的配置方法,配置完成以后咱们即可以用 Selenium 来驱动 Chrome 浏览器来作相应网页的抓取。
那么对于 Firefox 来讲,也可使用一样的方式完成 Selenium 的对接,这时须要安装另外一个驱动 GeckoDriver。
本节来介绍一下 GeckoDriver 的安装过程。html
brew install GeckoDriver
配置完成以后,就能够在命令行下直接执行 geckodriver 命令测试。
命令行下输入:
geckodriver
这时控制台应该有相似输出,如图 1-20 所示:python
图 1-20 控制台输出
若是有相似输出则证实 GeckoDriver 的环境变量配置好了。
随后再在程序中测试,执行以下 Python 代码:git
from selenium import webdriver browser = webdriver.Firefox()
运行以后会弹出一个空白的 Firefox 浏览器,证实全部的配置都没有问题,若是没有弹出,请检查以前的每一步的配置。
若是没有问题,接下来咱们就能够利用 Firefox 配合 Selenium 来作网页抓取了。github
到如今位置咱们就可使用 Chrome 或 Firefox 进行网页抓取了,可是这样可能有个不方便之处,由于程序运行过程当中须要一直开着浏览器,在爬取网页的过程当中浏览器可能一直动来动去,着实不方便。目前最新的 Chrome 浏览器版本已经支持了无界面模式,但若是版本较旧就不支持。因此在这里还有另外一种方便的选择就是安装一个无界面浏览器 PhantomJS,抓取过程会在后台运行,不会再有窗口出现,这样就方便了不少,因此在下一节咱们再了解一下 PhantomJS 的相关安装方法。web
若是咱们使用 Chrome 或 Firefox 进行网页抓取的话,每次抓取的时候,都会弹出一个浏览器,比较影响使用。因此在这里再介绍一个无界面浏览器,叫作 PhantomJS。
PhantomJS 是一个无界面的,可脚本编程的 WebKit 浏览器引擎。它原生支持多种 web 标准:DOM 操做,CSS 选择器,JSON,Canvas 以及 SVG。
Selenium 支持 PhantomJS,这样在运行的时候就不会再弹出一个浏览器了,并且其运行效率也是很高的,还支持各类参数配置,使用很是方便,下面咱们就来了解一下 PhantomJS 的安装过程。编程
brew cask install phantomjs
在 Selenium 中使用的话,咱们只须要将 Chrome 切换为 PhantomJS 便可。segmentfault
from selenium import webdriver browser = webdriver.PhantomJS() browser.get('https://www.baidu.com') print(browser.current_url)
运行以后咱们就不会发现有浏览器弹出了,但实际上 PhantomJS 已经运行起来了,在这里咱们访问了百度,而后将当前的 URL 打印出来。
控制台输出以下:api
https://www.baidu.com/
如此一来咱们便完成了 PhantomJS 的配置,在后面咱们能够利用它来完成一些页面的抓取。浏览器
以上三节咱们介绍了 Selenium 对应的三大主流浏览器的对接方式,在后文咱们会对 Selenium 及各个浏览器的对接方法进行更加深刻的探究。服务器
以前咱们介绍的 Requests 库是一个阻塞式 HTTP 请求库,当咱们发出一个请求后,程序会一直等待服务器的响应,直到获得响应后程序才会进行下一步的处理,其实这个过程是比较耗费资源的。若是程序能够在这个等待过程当中作一些其余的事情,如进行请求的调度、响应的处理等等,那么爬取效率必定会大大提升。
Aiohttp 就是这样一个提供异步 Web 服务的库,从 Python3.5 版本开始,Python 中加入了 async/await 关键字,使得回调的写法更加直观和人性化,Aiohttp的异步操做借助于 async/await 关键字写法变得更加简洁,架构更加清晰。使用异步请求库来进行数据抓取会大大提升效率,下面咱们来看一下这个库的安装方法。
推荐使用 Pip 安装,命令以下:
pip3 install aiohttp
另外官方还推荐安装以下两个库,一个是字符编码检测库 cchardet,另外一个是加速 DNS 解析库 aiodns,安装命令以下:
pip3 install cchardet aiodns
安装完成以后,能够在 Python 命令行下测试。
$ python3 >>> import aiohttp
若是没有错误报出,则证实库已经安装好了。
咱们会在后面的实例中用到这个库,好比维护一个代理池,利用异步方式检测大量代理的运行情况,极大提升效率。
上一篇文章: Python3网络爬虫实战---一、请求库安装:Requests、Selenium、ChromeDriver
下一篇文章: Python3网络爬虫实战---三、解析库的安装:LXML、BeautifulSoup、PyQuery、Tesserocr