安装指南¶
支持的 Python 版本¶
Scrapy 需要 Python 3.9+,可以是 CPython 实现(默认)或 PyPy 实现(参见 其他实现)。
安装 Scrapy¶
如果您使用的是 Anaconda 或 Miniconda,您可以从 conda-forge 频道安装软件包,该频道提供了针对 Linux、Windows 和 macOS 的最新软件包。
要使用 conda
安装 Scrapy,请运行
conda install -c conda-forge scrapy
或者,如果您已经熟悉 Python 包的安装,可以使用以下命令从 PyPI 安装 Scrapy 及其依赖项:
pip install Scrapy
我们强烈建议您在 专用的虚拟环境 中安装 Scrapy,以避免与系统软件包冲突。
请注意,有时这可能需要根据您的操作系统解决某些 Scrapy 依赖项的编译问题,因此请务必查看 平台特定的安装说明。
有关更详细和特定于平台的说明,以及故障排除信息,请继续阅读。
一些需要了解的事项¶
Scrapy是用纯 Python 编写的,并且依赖于一些关键的 Python 包(以及其他一些包)
lxml,一个高效的 XML 和 HTML 解析器
parsel,一个基于 lxml 的 HTML/XML 数据提取库,
w3lib,一个用于处理 URL 和网页编码的多用途助手
twisted,一个异步网络框架
cryptography 和 pyOpenSSL,用于处理各种网络安全需求
其中一些包本身依赖于非 Python 包,根据您的平台,这些包可能需要额外的安装步骤。请查看 下面的平台特定指南。
如果遇到与这些依赖项相关的任何问题,请参考其各自的安装说明
使用虚拟环境 (推荐)¶
一句话概括:我们建议在所有平台上都在虚拟环境中安装 Scrapy。
Python 包可以全局安装(也称为系统范围安装),也可以在用户空间安装。我们不建议全局安装 Scrapy。
相反,我们建议您在所谓的“虚拟环境”(venv
)中安装 Scrapy。虚拟环境允许您避免与已安装的 Python 系统包冲突(这可能会破坏某些系统工具和脚本),并且仍然可以使用 pip
(无需 sudo
等)正常安装包。
有关如何创建虚拟环境,请参见 虚拟环境和包。
创建虚拟环境后,您可以在其中使用 pip
安装 Scrapy,就像任何其他 Python 包一样。(有关可能需要预先安装的非 Python 依赖项,请参见 平台特定指南)。
平台特定的安装说明¶
Windows¶
尽管可以使用 pip 在 Windows 上安装 Scrapy,但我们建议您安装 Anaconda 或 Miniconda 并使用 conda-forge 频道中的软件包,这将避免大多数安装问题。
安装 Anaconda 或 Miniconda 后,使用以下命令安装 Scrapy:
conda install -c conda-forge scrapy
要使用 pip
在 Windows 上安装 Scrapy
警告
此安装方法需要“Microsoft Visual C++”来安装某些 Scrapy 依赖项,这比 Anaconda 需要更多的磁盘空间。
下载并执行 Microsoft C++ Build Tools 以安装 Visual Studio 安装程序。
运行 Visual Studio 安装程序。
在“工作负载”部分,选择“C++ 生成工具”。
检查安装详细信息,并确保选择以下软件包作为可选组件
**MSVC**(例如 MSVC v142 - VS 2019 C++ x64/x86 生成工具 (v14.23))
**Windows SDK**(例如 Windows 10 SDK (10.0.18362.0))
安装 Visual Studio 生成工具。
现在,您应该可以使用 pip 安装 Scrapy 了。
Ubuntu 14.04 或更高版本¶
Scrapy 目前已在足够新的 lxml、twisted 和 pyOpenSSL 版本上进行了测试,并且与最新的 Ubuntu 发行版兼容。但是它也应该支持旧版本的 Ubuntu,例如 Ubuntu 14.04,尽管可能会出现 TLS 连接问题。
**不要**使用 Ubuntu 提供的 python-scrapy
软件包,它们通常过于陈旧,无法赶上最新的 Scrapy 版本。
要在 Ubuntu(或基于 Ubuntu 的)系统上安装 Scrapy,您需要安装以下依赖项
sudo apt-get install python3 python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
python3-dev
、zlib1g-dev
、libxml2-dev
和libxslt1-dev
是lxml
所必需的libssl-dev
和libffi-dev
是cryptography
所必需的
在 虚拟环境 中,您可以在之后使用 pip
安装 Scrapy
pip install scrapy
注意
相同的非 Python 依赖项可用于在 Debian Jessie (8.0) 及更高版本中安装 Scrapy。
macOS¶
构建 Scrapy 的依赖项需要 C 编译器和开发头文件。在 macOS 上,这通常由 Apple 的 Xcode 开发工具提供。要安装 Xcode 命令行工具,请打开终端窗口并运行
xcode-select --install
存在一个 已知问题,它阻止 pip
更新系统软件包。必须解决此问题才能成功安装 Scrapy 及其依赖项。以下是一些建议的解决方案
(推荐) **不要**使用系统 Python。安装一个新的、更新的版本,该版本不会与系统中的其他部分冲突。以下是如何使用 homebrew 包管理器来执行此操作
按照 https://brew.sh.cn/ 中的说明安装 homebrew
更新您的
PATH
变量,以声明应在系统软件包之前使用 homebrew 软件包(如果您使用 zsh 作为默认 shell,请相应地将.bashrc
更改为.zshrc
)echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc
重新加载
.bashrc
以确保更改生效source ~/.bashrc
安装 python
brew install python
(可选) 在 Python 虚拟环境中安装 Scrapy。
此方法是上述 macOS 问题的解决方法,但它也是管理依赖项的总体良好实践,可以补充第一种方法。
经过上述任何解决方法后,您都应该能够安装 Scrapy
pip install Scrapy
PyPy¶
我们建议使用最新的 PyPy 版本。对于 PyPy3,仅测试了 Linux 安装。
大多数 Scrapy 依赖项现在都有针对 CPython 的二进制轮子,但没有针对 PyPy 的。这意味着这些依赖项将在安装过程中构建。在 macOS 上,您可能会遇到构建 Cryptography 依赖项的问题。该问题的解决方案 在此处 描述,即使用 brew install openssl
,然后导出此命令建议的标志(仅在安装 Scrapy 时需要)。在 Linux 上安装除了安装构建依赖项之外没有特殊问题。在 Windows 上使用 PyPy 安装 Scrapy 未经测试。
您可以通过运行 scrapy bench
来检查 Scrapy 是否已正确安装。如果此命令出现错误,例如 TypeError: ... got 2 unexpected keyword arguments
,则表示 setuptools 无法获取一个 PyPy 特定的依赖项。要解决此问题,请运行 pip install 'PyPyDispatcher>=2.1.0'
。
故障排除¶
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'
出现此异常的原因是您的系统或虚拟环境中 pyOpenSSL 的版本不受 Twisted 版本支持。
要安装 Twisted 版本支持的 pyOpenSSL 版本,请使用 tls
额外选项重新安装 Twisted
pip install twisted[tls]
有关详细信息,请参阅 Issue #2473。