Python3网络爬虫实战---二、请求库安装:GeckoDriver、PhantomJS、Aiohttp

上一篇文章: Python3网络爬虫实战---一、请求库安装:Requests、Selenium、ChromeDriver
下一篇文章: Python3网络爬虫实战---三、解析库的安装:LXML、BeautifulSoup、PyQuery、Tesserocr

1.1.4 GeckoDriver的安装

在上一节咱们了解了 ChromeDriver 的配置方法,配置完成以后咱们即可以用 Selenium 来驱动 Chrome 浏览器来作相应网页的抓取。
那么对于 Firefox 来讲,也可使用一样的方式完成 Selenium 的对接,这时须要安装另外一个驱动 GeckoDriver。
本节来介绍一下 GeckoDriver 的安装过程。html

1. 相关连接

2. MAC安装方式

brew install GeckoDriver

3. 验证安装

配置完成以后,就能够在命令行下直接执行 geckodriver 命令测试。
命令行下输入:
geckodriver
这时控制台应该有相似输出,如图 1-20 所示:
clipboard.pngpython

图 1-20 控制台输出
若是有相似输出则证实 GeckoDriver 的环境变量配置好了。
随后再在程序中测试,执行以下 Python 代码:git

from selenium import webdriver
browser = webdriver.Firefox()

运行以后会弹出一个空白的 Firefox 浏览器,证实全部的配置都没有问题,若是没有弹出,请检查以前的每一步的配置。
若是没有问题,接下来咱们就能够利用 Firefox 配合 Selenium 来作网页抓取了。github

4. 结语

到如今位置咱们就可使用 Chrome 或 Firefox 进行网页抓取了,可是这样可能有个不方便之处,由于程序运行过程当中须要一直开着浏览器,在爬取网页的过程当中浏览器可能一直动来动去,着实不方便。目前最新的 Chrome 浏览器版本已经支持了无界面模式,但若是版本较旧就不支持。因此在这里还有另外一种方便的选择就是安装一个无界面浏览器 PhantomJS,抓取过程会在后台运行,不会再有窗口出现,这样就方便了不少,因此在下一节咱们再了解一下 PhantomJS 的相关安装方法。web

1.1.5 PhantomJS的安装

若是咱们使用 Chrome 或 Firefox 进行网页抓取的话,每次抓取的时候,都会弹出一个浏览器,比较影响使用。因此在这里再介绍一个无界面浏览器,叫作 PhantomJS。
PhantomJS 是一个无界面的,可脚本编程的 WebKit 浏览器引擎。它原生支持多种 web 标准:DOM 操做,CSS 选择器,JSON,Canvas 以及 SVG。
Selenium 支持 PhantomJS,这样在运行的时候就不会再弹出一个浏览器了,并且其运行效率也是很高的,还支持各类参数配置,使用很是方便,下面咱们就来了解一下 PhantomJS 的安装过程。编程

1. 相关连接

2. MAC安装

brew cask install phantomjs

3. 验证安装

在 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 的配置,在后面咱们能够利用它来完成一些页面的抓取。浏览器

4. 结语

以上三节咱们介绍了 Selenium 对应的三大主流浏览器的对接方式,在后文咱们会对 Selenium 及各个浏览器的对接方法进行更加深刻的探究。服务器

1.1.6 Aiohttp的安装

以前咱们介绍的 Requests 库是一个阻塞式 HTTP 请求库,当咱们发出一个请求后,程序会一直等待服务器的响应,直到获得响应后程序才会进行下一步的处理,其实这个过程是比较耗费资源的。若是程序能够在这个等待过程当中作一些其余的事情,如进行请求的调度、响应的处理等等,那么爬取效率必定会大大提升。

Aiohttp 就是这样一个提供异步 Web 服务的库,从 Python3.5 版本开始,Python 中加入了 async/await 关键字,使得回调的写法更加直观和人性化,Aiohttp的异步操做借助于 async/await 关键字写法变得更加简洁,架构更加清晰。使用异步请求库来进行数据抓取会大大提升效率,下面咱们来看一下这个库的安装方法。

1. 相关连接

2. 安装

推荐使用 Pip 安装,命令以下:

pip3 install aiohttp

另外官方还推荐安装以下两个库,一个是字符编码检测库 cchardet,另外一个是加速 DNS 解析库 aiodns,安装命令以下:

pip3 install cchardet aiodns

3. 测试安装

安装完成以后,能够在 Python 命令行下测试。

$ python3
>>> import aiohttp

若是没有错误报出,则证实库已经安装好了。

4. 结语

咱们会在后面的实例中用到这个库,好比维护一个代理池,利用异步方式检测大量代理的运行情况,极大提升效率。

上一篇文章: Python3网络爬虫实战---一、请求库安装:Requests、Selenium、ChromeDriver
下一篇文章: Python3网络爬虫实战---三、解析库的安装:LXML、BeautifulSoup、PyQuery、Tesserocr
相关文章
相关标签/搜索