安装指南

支持的 Python 版本

Scrapy 需要 Python 3.9+,可以是 CPython 实现(默认)或 PyPy 实现(参见 其他实现)。

安装 Scrapy

如果您使用的是 AnacondaMiniconda,您可以从 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,一个异步网络框架

  • cryptographypyOpenSSL,用于处理各种网络安全需求

其中一些包本身依赖于非 Python 包,根据您的平台,这些包可能需要额外的安装步骤。请查看 下面的平台特定指南

如果遇到与这些依赖项相关的任何问题,请参考其各自的安装说明

平台特定的安装说明

Windows

尽管可以使用 pip 在 Windows 上安装 Scrapy,但我们建议您安装 AnacondaMiniconda 并使用 conda-forge 频道中的软件包,这将避免大多数安装问题。

安装 AnacondaMiniconda 后,使用以下命令安装 Scrapy:

conda install -c conda-forge scrapy

要使用 pip 在 Windows 上安装 Scrapy

警告

此安装方法需要“Microsoft Visual C++”来安装某些 Scrapy 依赖项,这比 Anaconda 需要更多的磁盘空间。

  1. 下载并执行 Microsoft C++ Build Tools 以安装 Visual Studio 安装程序。

  2. 运行 Visual Studio 安装程序。

  3. 在“工作负载”部分,选择“C++ 生成工具”。

  4. 检查安装详细信息,并确保选择以下软件包作为可选组件

    • **MSVC**(例如 MSVC v142 - VS 2019 C++ x64/x86 生成工具 (v14.23))

    • **Windows SDK**(例如 Windows 10 SDK (10.0.18362.0))

  5. 安装 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-devzlib1g-devlibxml2-devlibxslt1-devlxml 所必需的

  • libssl-devlibffi-devcryptography 所必需的

虚拟环境 中,您可以在之后使用 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