零、安装 Scrapy
Scrapy 必须运行在 CPython 或 PyPy 下的 Python 2.7 或 Python 3.5 及以上平台。如果您使用的是 Anaconda 或 Miniconda ,则可以从 conda-forge 安装该软件包,它包含适用于 Linux 、 Windows 和 OS X 的最新软件包。
如果要使用 conda
命令安装 Scrapy 只需运行以下命令:
conda install -c conda-forge scrapy
当你熟悉 Python 软件包的安装,则可以使用以下方法从PyPI安装Scrapy及其依赖项:
pip install Scrapy
- 注意
这里需要注意的是 Scrapy 是用 Python 编写的,因此依赖于一些 Python 包,主要依赖如下:
- lxml,高效的XML和HTML解析器;
- parsel,是在lxml之上编写的HTML / XML数据提取库;
- w3lib,一个用于处理URL和网页编码的多功能助手;
- twisted,异步网络框架;
- cryptography 和 pyOpenSSL,用于处理各种网络级安全需求;
运行 Scrapy 所需依赖包的最低版本如下:
- Twisted 14.0
- lxml 3.4
- pyOpenSSL 0.14
注意: Scrapy 虽然可以使用这些软件包的老旧版本,但不能保证它将继续工作。
一、特定平台说明
- Windows
尽管可以使用 pip 在 Windows 上安装 Scrapy ,但建议安装 Anaconda 或 Miniconda 并使用 conda-forge 中的软件包,可以避免大多数安装问题。使用以下命令安装 Scrapy :
conda install -c conda-forge scrapy
- Ubuntu
Scrapy 目前使用的是新版本的 lxml 、twisted 和 pyOpenSSL ,并与最新的 Ubuntu 发行版兼容。在 Ubuntu 系统上安装 scrapy ,需要安装如下依赖:
sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
如果要在Python 3上安装scrapy,则还需要Python 3开发标头:
sudo apt-get install python3 python3-dev
在 virtualenv 内部,可以使用 pip 安装 Scrapy :
pip install scrapy
注意:不要使用 python-scrapy Ubuntu 提供的软件包,它不是最新的软件包,而且存在兼容性问题。
- Mac OS
Scrapy 需要依赖 C 编译器。在 OS X上,通常由 Xcode 开发工具提供。要安装 Xcode 命令行工具,在命令行中输入如下命令:
xcode-select --install
目前存在一个已知问题,无法通过 pip 更新系统软件包。必须解决此问题才能成功安装 Scrapy 及其依赖项。以下是一些建议的解决方案:
- 不要使用系统自带 python,安装新的更新版本,该版本应与系统的其余部分不冲突;
- 在虚拟环境中安装 Scrapy 。
二、故障排除
- AttributeError: ‘module’ object has no attribute ‘OP_NO_TLSv1_1’
在安装或升级 Scrapy、Twisted、pyOpenSSL 之后,可能会收到带有以下异常:
[…]
File "[…]/site-packages/twisted/protocols/tls.py", line 63, in <module>
from twisted.internet._sslverify import _setAcceptableProtocols
File "[…]/site-packages/twisted/internet/_sslverify.py", line 38, in <module>
TLSVersion.TLSv1_1: SSL.OP_NO_TLSv1_1,
AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'
出现此异常的原因是您的系统或虚拟环境具有 Twisted 版本不支持的 pyOpenSSL 版本。秩序输入如下命令即可解决:
pip install twisted[tls]
的 pyOpenSSL 版本。秩序输入如下命令即可解决:
pip install twisted[tls]