0%

[Python3网络爬虫开发实战] 1.8.2-Scrapy的安装

Scrapy 是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有 Twisted 14.0、lxml 3.4 和 pyOpenSSL 0.14。在不同的平台环境下,它所依赖的库也各不相同,所以在安装之前,最好确保把一些基本库安装好。本节就来介绍 Scrapy 在不同平台的安装方法。

1. 相关链接

  • 官方网站:https://scrapy.org
  • 官方文档:https://docs.scrapy.org
  • PyPI:https://pypi.python.org/pypi/Scrapy
  • GitHub:https://github.com/scrapy/scrapy
  • 中文文档:http://scrapy-chs.readthedocs.io

2. Anaconda 安装

这是一种比较简单的安装 Scrapy 的方法(尤其是对于 Windows 来说),如果你的 Python 是使用 Anaconda 安装的,或者还没有安装 Python 的话,可以使用此方法安装,这种方法简单、省力。当然,如果你的 Python 不是通过 Anaconda 安装的,可以继续看后面的内容。

关于 Anaconda 的安装方式,可以查看 1.1 节,在此不再赘述。

如果已经安装好了 Anaconda,那么可以通过conda命令安装 Scrapy,具体如下:

1
conda install Scrapy

3. Windows 下的安装

如果你的 Python 不是使用 Anaconda 安装的,可以参考如下方式来一步步安装 Scrapy。

安装 lxml

lxml 的安装过程请参见 1.3.1 节,在此不再赘述,此库非常重要,请一定要安装成功。

安装 pyOpenSSL

在官方网站下载 wheel 文件(详见https://pypi.python.org/pypi/pyOpenSSL#downloads)即可,如图 1-76 所示。

图 1-76 下载页面

下载后利用 pip 安装即可:

1
pip3 install pyOpenSSL-17.2.0-py2.py3-none-any.whl

安装 Twisted

http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted下载 wheel 文件,利用 pip 安装即可。

比如,对于 Python 3.6 版本、Windows 64 位系统,则当前最新版本为 Twisted‑17.5.0‑cp36‑cp36m‑win_amd64.whl,直接下载即可,如图 1-77 所示。

图 1-77 下载页面

然后通过 pip 安装:

1
pip3 install Twisted‑17.5.0cp36cp36mwin_amd64.whl

安装 PyWin32

从官方网站下载对应版本的安装包即可,链接为:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/,如图 1-78 所示。

图 1-78 下载列表

比如对于 Python 3.6 版本,可以选择下载 pywin32-221.win-amd64-py3.6.exe,下载完毕之后双击安装即可。

注意,这里使用的是 Build 221 版本,随着时间推移,版本肯定会继续更新,最新的版本可以查看https://sourceforge.net/projects/pywin32/files/pywin32/,到时查找最新的版本安装即可。

安装 Scrapy

安装好了以上的依赖库后,安装 Scrapy 就非常简单了,这里依然使用 pip,命令如下:

1
pip3 install Scrapy

等待命令结束,如果没有报错,就证明 Scrapy 已经安装好了。

4. Linux 下的安装

在 Linux 下的安装方式依然分为两类平台来介绍。

CentOS 和 Red Hat

在 CentOS 和 Red Hat 下,首先确保一些依赖库已经安装,运行如下命令:

1
2
sudo yum groupinstall -y development tools
sudo yum install -y epel-release libxslt-devel libxml2-devel openssl-devel

最后利用 pip 安装 Scrapy 即可:

1
pip3 install Scrapy

Ubuntu、Debian 和 Deepin

在 Ubuntu、Debian 和 Deepin 平台下,首先确保一些依赖库已经安装,运行如下命令:

1
sudo apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev

然后利用 pip 安装 Scrapy 即可:

1
pip3 install Scrapy

运行完毕后,就完成 Scrapy 的安装了。

5. Mac 下的安装

在 Mac 下,首先也是进行依赖库的安装。

在 Mac 上构建 Scrapy 的依赖库需要 C 编译器以及开发头文件,它一般由 Xcode 提供,具体命令如下:

1
xcode-select --install

随后利用 pip 安装 Scrapy 即可:

1
pip3 install Scrapy

6. 验证安装

安装之后,在命令行下输入scrapy,如果出现类似如图 1-79 所示的结果,就证明 Scrapy 安装成功了。

图 1-79 验证安装

7. 常见错误

在安装过程中,常见的错误汇总如下。

pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python3/dist-packages), Requirement.parse('six>=1.6.0'))

这是 six 包版本过低出现的错误。six 包是一个提供兼容 Python 2 和 Python 3 的库,这时升级 six 包即可:

1
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 下,直接执行如下命令即可:

1
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

在 CentOS 和 Red Hat 下,直接执行如下命令即可:

1
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 安装即可:

1
pip3 install cryptography
ImportError: No module named 'packaging'

这是因为缺少 packaging 包出现的错误,这个包提供了 Python 包的核心功能,此时利用 pip 安装即可。

ImportError: No module named '_cffi_backend'

这个错误表示缺少 cffi 包,直接使用 pip 安装即可:

1
pip3 install cffi
ImportError: No module named 'pyparsing'

这个错误表示缺少 pyparsing 包,直接使用 pip 安装即可:

1
pip3 install pyparsing appdirs