安装指南

支持的Python版本

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

安装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

要在Windows上使用pip安装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-dev, zlib1g-dev, libxml2-devlibxslt1-devlxml 所需的

  • libssl-devlibffi-devcryptography 所需的

virtualenv中, 你可以使用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/中的说明安装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' 对象没有属性 '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