安装 Scrapy

Scrapy 运行在 Python 2.7 和 Python 3.3 或更高版本上。

如果您使用的是 Anaconda 或 Miniconda,则可以从 conda-forge 通道安装软件包,该通道具有适用于 Linux,Windows 和 OS X 的最新软件包。

使用 conda 安装 Scrapy,运行:

conda install -c conda-forge scrapy

或者,如果您已经熟悉 Python 软件包的安装,可以从 PyPI 安装 Scrapy 及其依赖的库:

pip install Scrapy

请注意,有时需要根据您的操作系统解决某些 Scrapy 依赖库的编译问题,因此请务必查看特定平台的安装说明。

我们强烈建议您在专用的 virtualenv 中安装 Scrapy,以避免与系统包冲突。

下面是有关各种平台更详细的说明。

最好要知道的事

Scrapy 软件包全部是用 Python 语言编写的,并且依赖几个关键的 Python 库(以及其他):

  • lxml,一个高效的 XML 和 HTML 解析器
  • parsel,一个 HTML/XML 数据提取库,依赖 lxml 库
  • w3lib,用于处理 URL 和网页编码的多用途助手
  • twisted,一个异步网络框架
  • cryptography 和 pyOpenSSL,以处理各种网络安全需求

Scrapy 测试过的最低版本是:

  • Twisted 14.0
  • lxml 3.4
  • pyOpenSSL 0.14

这些库更低版本也可能使 Scrapy 正常工作,但在将来不能保证它继续工作,因为它们没有被测试。

其中一些软件包本身依赖非 Python 软件包,这可能需要额外的安装步骤,具体取决于您的平台。 请查看下面的平台安装指南。

如果这些依赖出现了问题,请参考各自的安装说明:

使用虚拟环境(推荐)

(太长,别看):我们建议在所有平台的虚拟环境中安装 Scrapy。

Python 软件包可以在全局(也称为系统范围)也可以在用户空间中进行安装。 我们不建议在系统空间中安装 Scrapy。

相反,我们建议您在“虚拟环境”(virtualenv)中安装 Scrapy。Virtualenvs 避免了与已经安装的 Python 系统软件包发生冲突(可能会破坏您的一些系统工具和脚本),并且仍然可以通过 pip 安装软件包(没有 sudo 等)。

要开始使用虚拟环境,请参阅 virtualenv 安装说明。

$ [sudo] pip install virtualenv

查看这个用户指南,了解如何创建 virtualenv。

注意

在 Linux 或 OS X 上,virtualenvwrapper 是一个创建 virtualenvs 的便利工具。

一旦创建了一个 virtualenv,就可以像其他 Python 软件包一样在其中安装 Scrapy。 (有关可能需要事先安装的非 Python 依赖关系,请参阅下面的针对特定平台的指南)。

默认情况下,可以创建 Python virtualenvs 以使用 Python 2,或者默认使用 Python 3。

  • 如果要在 Python 3 中使用 scrapy,请在 Python 3 virtualenv 中安装 scrapy。
  • 如果要在 Python 2 中使用 scrapy,请在 Python 2 virtualenv 中安装 scrapy。

具体平台安装说明

Windows

虽然可以使用 pip 在 Windows 上安装 Scrapy,但我们建议您安装 Anaconda 或 Miniconda,并使用 conda-forge 通道中的软件包以避免大多数安装问题。

安装 Anaconda 或 Miniconda 后,安装 Scrapy :

conda install -c conda-forge scrapy

Ubuntu 12.04 或更高版本

Scrapy 目前正在使用最新版本的 lxml,twisted 和 pyOpenSSL 进行测试,并且与最新的 Ubuntu 发行版兼容。 但它也支持较早版本的 Ubuntu,如 Ubuntu 12.04,尽管存在潜在的 TLS 连接问题。

不要使用 Ubuntu 提供的 python-scrapy 软件包,它们的版本通常太老了。要在 Ubuntu(或类 Ubuntu)系统上安装 scrapy,您需要安装这些依赖项:

sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
  • lxml 需要 python-dev, zlib1g-dev, libxml2-dev 和 libxslt1-dev
  • cryptography 需要 libssl-dev 和 libffi-dev

如果你想在 Python 3 上安装 Scrapy,你还需要 Python 3 开发头:

sudo apt-get install python3 python3-dev

在 virtualenv 中,您可以使用 pip 安装Scrapy:

pip install scrapy

注意

在 Debian Wheezy(7.0)及更高版本中安装 Scrapy 同样需要上文提到的非 Python 依赖关系。

Mac OS X

构建 Scrapy 的依赖项需要C编译器和开发头。 在 OS X 上,这通常由苹果的 Xcode 开发工具提供。 要安装 Xcode 命令行工具,打开终端窗口并运行:

xcode-select --install

有一个已知的问题阻止 pip 更新系统包。 必须解决这个问题才能成功安装 Scrapy 及其依赖关系。 以下是一些解决方案

  • (推荐)不要使用系统 Python,安装一个不会与系统其余部分冲突的最新版本。 以下是使用 homebrew 包管理器的方法:

    • 按照 http://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 绑定了 pip,因此您不需要单独安装它。 如果不是这样,升级 Python:
brew update; brew upgrade python
  • (可选)在独立的 Python 环境中安装 Scrapy。

此方法是上述 OS X 问题的解决方法,它是管理依赖关系的良好做法,可以补充第一种方法。

virtualenv 是一个可以用来在 python 中创建虚拟环境的工具。 我们推荐阅读 http://docs.python-guide.org/en/latest/dev/virtualenvs/ 这样的教程来了解它。

使用任一上述解决方法后,您应该能够安装 Scrapy:

pip install Scrapy

Scrapy 1.4 文档 02 安装指南的更多相关文章

  1. Scrapy 1.4 文档 03 Scrapy 教程

    在本教程中,我们假设您已经安装了Scrapy.如果没有,请参阅安装指南. 我们将要抓取 quotes.toscrape.com,一个列出著名作家的名言(quote)的网站. 本教程将引导您完成以下任务 ...

  2. Scrapy 1.4 文档 01 初窥 Scrapy

    初窥 Scrapy Scrapy 是用于抓取网站并提取结构化数据的应用程序框架,其应用非常广泛,如数据挖掘,信息处理或历史存档. 尽管 Scrapy 最初设计用于网络数据采集(web scraping ...

  3. Scrapy 1.4 文档 05 命令行工具

    在系统命令行中,使用 scrapy 命令可以创建工程或启动爬虫,它控制着 Scrapy 的行为,我们称之为 Scrapy 命令行工具(command-line tool)或 Scrapy 工具(Scr ...

  4. Scrapy 1.4 文档 04 例子

    最好的学习方法是举例说明,Scrapy也不例外. 因此,我们有一个名为 quotesbot 的 Scrapy 项目,您可以通过它来学习更多关于 Scrapy 的知识. 它包含两个用于http://qu ...

  5. 李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档

    李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档 SDK 2.x 至 3.0 升级指南 环信 SDK 3.0 升级文档 3.0 中的核心类为 EMClient 类,通过 EMCl ...

  6. Mongodb 笔记02 创建、更新和删除文档

    创建.更新和删除文档          1. 插入并保存: 1). 单条插入,insert : db.foo.insert({"bar":"baz"}) 2). ...

  7. JavaSE学习笔记02运算符、帮助文档生成与Scanner输入

    1. 运算符 1. 算术运算符:+,-,*,/,%,++,-- //二元运算符 int a = 10; int b = 20; int c = 25; int d = 25; System.out.p ...

  8. 阳明-K8S训练营全部文档-2020年08月11日14:59:02更新

    阳明-K8S训练营全部文档 Docker 基础 简介 安装 基本操作 Dockerfile Dockerfile最佳实践 Kubernetes 基础 简介 安装 资源清单 Pod 原理 Pod 生命周 ...

  9. C#向PPT文档插入图片以及导出图片

    PowerPoint演示文稿是我们日常工作中常用的办公软件之一,而图片则是PowerPoint文档的重要组成部分,那么如何向幻灯片插入图片以及导出图片呢?本文我将给大家分享如何使用一个免费版Power ...

随机推荐

  1. "《算法导论》之‘队列’":队列的三种实现(静态数组、动态数组及指针)

    本文有关栈的介绍部分参考自网站数据结构. 1. 队列  1.1 队列的定义 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front) ...

  2. 【52】java多线程剖析

    线程的状态: 线程共有下面4种状态: 新建状态(New): 新创建了一个线程对象,当你用new创建一个线程时,该线程尚未运行. 就绪状态(Runnable): 线程对象创建后,其他线程调用了该对象的s ...

  3. PS 图像特效-非线性滤波器

    利用非线性滤波器,使图像的色彩凝块,形成一种近似融化的特效. clc; clear all; addpath('E:\PhotoShop Algortihm\Image Processing\PS A ...

  4. ELF 动态链接 so的动态符号表(.dynsym)

    静态链接中有一个专门的段叫符号表 -- ".symtab"(Symbol Table), 里面保存了所有关于该目标文件的符号的定义和引用. 动态链接中同样有一个段叫 动态符号表 - ...

  5. iframe局部刷新的二种实现方法

    需求描述: 当页面有一部分是不变的或整个页面的图片很多时,可以考虑使用局部刷新,以提高整体的下载速度与用户体验.   1,iframe实现局部刷新的方法一 复制代码代码示例: <script t ...

  6. HashMap 实现原理

    深入Java集合学习系列:HashMap的实现原理   参考文献 引用文献:深入Java集合学习系列:HashMap的实现原理,大部分参考这篇博客,只对其中进行稍微修改 自己曾经写过的:Hashmap ...

  7. 详解URL的组成

    很久很久以来,我对浏览器地址栏的信息了解的甚少,只知道域名(估计不知道是这么叫).唉...真是很汗颜啊!在软件专业都混了两年了,还是个菜鸟.说真的,有的时候觉得计算机这个领域真的真的有太多的东西要学了 ...

  8. Open Source BI Platform List

    资源入口: awesome-business-intelligence https://github.com/thenaturalist/awesome-business-intelligence h ...

  9. 基于RecyclerView的瀑布流实现

    fragment的布局: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  10. var $this = $(this)是什么意思?

    var $this = $(this) 声明一个变量,$this 是变量名,加$说明是jquery对象. 给声明的变量赋值,赋的值是将this元素转换为jQuery对象.