重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在上一节我们了解了 ChromeDriver 的配置方法,配置完成之后我们便可以用 Selenium 来驱动 Chrome 浏览器来做相应网页的抓取。
那么对于 Firefox 来说,也可以使用同样的方式完成 Selenium 的对接,这时需要安装另一个驱动 GeckoDriver。
本节来介绍一下 GeckoDriver 的安装过程。
成都创新互联公司长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为崂山企业提供专业的网站制作、成都网站建设,崂山网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
brew install GeckoDriver
配置完成之后,就可以在命令行下直接执行 geckodriver 命令测试。
命令行下输入:
geckodriver
这时控制台应该有类似输出,如图 1-20 所示:
图 1-20 控制台输出
如果有类似输出则证明 GeckoDriver 的环境变量配置好了。
随后再在程序中测试,执行如下 Python 代码:
from selenium import webdriver
browser = webdriver.Firefox()
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
运行之后会弹出一个空白的 Firefox 浏览器,证明所有的配置都没有问题,如果没有弹出,请检查之前的每一步的配置。
如果没有问题,接下来我们就可以利用 Firefox 配合 Selenium 来做网页抓取了。
到现在位置我们就可以使用 Chrome 或 Firefox 进行网页抓取了,但是这样可能有个不方便之处,因为程序运行过程中需要一直开着浏览器,在爬取网页的过程中浏览器可能一直动来动去,着实不方便。目前最新的 Chrome 浏览器版本已经支持了×××面模式,但如果版本较旧就不支持。所以在这里还有另一种方便的选择就是安装一个×××面浏览器 PhantomJS,抓取过程会在后台运行,不会再有窗口出现,这样就方便了很多,所以在下一节我们再了解一下 PhantomJS 的相关安装方法。
如果我们使用 Chrome 或 Firefox 进行网页抓取的话,每次抓取的时候,都会弹出一个浏览器,比较影响使用。所以在这里再介绍一个×××面浏览器,叫做 PhantomJS。
PhantomJS 是一个×××面的,可脚本编程的 WebKit 浏览器引擎。它原生支持多种 web 标准:DOM 操作,CSS 选择器,JSON,Canvas 以及 SVG。
Selenium 支持 PhantomJS,这样在运行的时候就不会再弹出一个浏览器了,而且其运行效率也是很高的,还支持各种参数配置,使用非常方便,下面我们就来了解一下 PhantomJS 的安装过程。
brew cask install phantomjs
在 Selenium 中使用的话,我们只需要将 Chrome 切换为 PhantomJS 即可。
from selenium import webdriver
browser = webdriver.PhantomJS()
browser.get('https://www.baidu.com')
print(browser.current_url)
运行之后我们就不会发现有浏览器弹出了,但实际上 PhantomJS 已经运行起来了,在这里我们访问了百度,然后将当前的 URL 打印出来。
控制台输出如下:
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
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
如果没有错误报出,则证明库已经安装好了。
我们会在后面的实例中用到这个库,比如维护一个代理池,利用异步方式检测大量代理的运行状况,极大提高效率。