上一篇文章: Python3网络爬虫实战---九、APP爬取相关库的安装:Appium的安装
下一篇文章: Python3网络爬虫实战---十一、爬虫框架的安装:ScrapySplash、ScrapyRedis
咱们直接用 Requests、Selenium 等库写爬虫,若是爬取量不是太大,速度要求不高,是彻底能够知足需求的。可是写多了会发现其内部许多代码和组件是能够复用的,若是咱们把这些组件抽离出来,将各个功能模块化,就慢慢会造成一个框架雏形,长此以往,爬虫框架就诞生了。html
利用框架咱们能够不用再去关心某些功能的具体实现,只须要去关心爬取逻辑便可。有了它们,能够大大简化代码量,并且架构也会变得清晰,爬取效率也会高许多。因此若是对爬虫有必定基础,上手框架是一种好的选择。python
本书主要介绍的爬虫框架有PySpider和Scrapy,本节咱们来介绍一下 PySpider、Scrapy 以及它们的一些扩展库的安装方式。git
PySpider 是国人 binux 编写的强大的网络爬虫框架,它带有强大的 WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时它支持多种数据库后端、多种消息队列,另外它还支持 JavaScript 渲染页面的爬取,使用起来很是方便,本节介绍一下它的安装过程。github
PySpider 是支持 JavaScript 渲染的,而这个过程是依赖于 PhantomJS 的,因此还须要安装 PhantomJS,因此在安装以前请安装好 PhantomJS,安装方式在前文有介绍。web
推荐使用 Pip 安装,命令以下:数据库
pip3 install pyspider
命令执行完毕便可完成安装。segmentfault
Windows 下可能会出现这样的错误提示:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vXo1W3/pycurl
这个是 PyCurl 安装错误,通常会出如今 Windows 下,须要安装 PyCurl 库,下载连接为:http://www.lfd.uci.edu/~gohlk...,找到对应 Python 版本而后下载相应的 Wheel 文件。
如 Windows 64 位,Python3.6 则下载 pycurl‑7.43.0‑cp36‑cp36m‑win_amd64.whl,随后用 Pip 安装便可,命令以下:后端
pip3 install pycurl‑7.43.0‑cp36‑cp36m‑win_amd64.whl
Linux 下若是遇到 PyCurl 的错误能够参考本文:https://imlonghao.com/19.htmlxcode
Mac遇到这种状况,执行下面操做:浏览器
brew install openssl openssl version 查看版本 find /usr/local -name ssl.h 能够看到形如: usr/local/Cellar/openssl/1.0.2s/include/openssl/ssl.h 添加环境变量 export PYCURL_SSL_LIBRARY=openssl export LDFLAGS=-L/usr/local/Cellar/openssl/1.0.2s/lib export CPPFLAGS=-I/usr/local/Cellar/openssl/1.0.2s/include pip3 install pyspider
安装完成以后,能够直接在命令行下启动 PySpider:
pyspider all
控制台会有相似以下输出,如图 1-75 所示:
图 1-75 控制台
这时 PySpider 的 Web 服务就会在本地 5000 端口运行,直接在浏览器打开:http://localhost:5000/ 便可进入 PySpider 的 WebUI 管理页面,如图 1-76 所示:
图 1-76 管理页面
若是出现相似页面那证实 PySpider 已经安装成功了。
在后文会介绍 PySpider 的详细用法。
这里有一个深坑,PySpider在Python3.7上运行时会报错
File "/usr/local/lib/python3.7/site-packages/pyspider/run.py", line 231 async=True, get_object=False, no_input=False): ^ SyntaxError: invalid syntax
缘由是python3.7中async已经变成了关键字。所以出现这个错误。
修改方式是手动替换一下
下面位置的async改成mark_async /usr/local/lib/python3.7/site-packages/pyspider/run.py 的231行、245行(两个)、365行 /usr/local/lib/python3.7/site-packages/pyspider/webui/app.py 的95行 /usr/local/lib/python3.7/site-packages/pyspider/fetcher/tornado_fetcher.py 的81行、89行(两个)、95行、117行
Scrapy 是一个十分强大的爬虫框架,依赖的库比较多,至少须要依赖库有 Twisted 14.0,lxml 3.4,pyOpenSSL 0.14。而在不一样平台环境又各不相同,因此在安装以前最好确保把一些基本库安装好。本节介绍一下 Scrapy 在不一样平台的安装方法。
在 Mac 上构建 Scrapy 的依赖库须要 C 编译器以及开发头文件,它通常由 Xcode 提供,运行以下命令安装便可:
xcode-select --install
随后利用 Pip 安装 Scrapy 便可,运行以下命令:
pip3 install Scrapy
运行完毕以后便可完成 Scrapy 的安装。
安装以后,在命令行下输入 scrapy,若是出现相似下方的结果,就证实 Scrapy 安装成功,如图 1-80 所示:
图 1-80 验证安装
pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python3/dist-packages), Requirement.parse('six>=1.6.0'))
six 包版本太低,six包是一个提供兼容 Python2 和 Python3 的库,升级 six 包便可:
sudo pip3 install -U six
c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
这是在 Linux 下常出现的错误,缺乏 Libffi 这个库。什么是 libffi?“FFI” 的全名是 Foreign Function Interface,一般指的是容许以一种语言编写的代码调用另外一种语言的代码。而 Libffi 库只提供了最底层的、与架构相关的、完整的”FFI”。
安装相应的库便可。
Ubuntu、Debian:
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
CentOS、RedHat:
sudo yum install gcc libffi-devel python-devel openssl-devel
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build/cryptography/
这是缺乏加密的相关组件,利用Pip 安装便可。
pip3 install cryptography
ImportError: No module named 'packaging'
缺乏 packaging 这个包,它提供了 Python 包的核心功能,利用 Pip 安装便可。
ImportError: No module named '_cffi_backend'
缺乏 cffi 包,使用 Pip 安装便可:
pip3 install cffi
ImportError: No module named 'pyparsing'
缺乏 pyparsing 包,使用 Pip 安装便可:
pip3 install pyparsing appdirs
上一篇文章: Python3网络爬虫实战---九、APP爬取相关库的安装:Appium的安装
下一篇文章: Python3网络爬虫实战---十一、爬虫框架的安装:ScrapySplash、ScrapyRedis