Scrapy 入门学习 2 & 安装指南

安装Scrapy

Scrapy在CPython(默认Python实现)和PyPy(从PyPy 5.9开始)下运行Python 2.7和Python 3.4或更高版本。

如果您使用的是AnacondaMiniconda,则可以从conda- forge通道安装该软件包,该软件包含适用于Linux,Windows和OS X的最新软件包。
这里推荐使用Anaconda去配置和管理Python环境,安装Scrapy等其他库,无论在linux和windows都很好用。

要使用安装Scrapy conda,请运行:

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,用于处理各种网络级安全需求
Scrapy测试的最低版本是:
  • Twisted 14.0
  • lxml 3.4
  • pyOpenSSL 0.14

Scrapy可能适用于这些软件包的旧版本,但不保证它会继续工作,因为它没有针对它们进行测试。

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

如果与这些依赖关系有任何问题,请参阅各自的安装说明:

使用虚拟环境(非Ancoda)

Scrapy人员建议在所有平台的虚拟环境中去安装Scrapy
Python包可以全局安装(也称为系统范围),也可以安装在用户空间中,但是不建议直接安装Scrapy。
相反,官方更推荐您在所谓的“虚拟环境” (virtualenv)中安装Scrapy。
他可以帮你解决Python系统库中的冲突问题,并且让您仍然可以试用pip去安装您喜欢的包

要开始使用虚拟环境,请参阅virtualenv安装说明。要全局安装它(全局安装他是个不错的选择):

$ [sudo] pip install virtualenv

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

如果您使用Linux或OS X,virtualenvwrapper是一个创建virtualenvs的便利工具。

一旦你创建了virtualenv,就可以在其中安装scrapy pip,就像任何其他Python包一样。(有关 您可能需要事先安装的非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,但我们建议您安装AnacondaMiniconda并使用conda - forge通道中的软件包 ,这样可以避免大多数安装问题。

安装AnacondaMiniconda后,安装Scrapy:

conda install -c conda-forge scrapy

Ubuntu 14.04或以上

Scrapy目前正在使用最新版本的lxml,twisted和pyOpenSSL进行测试,并且与最近的Ubuntu发行版兼容。但它也应该支持旧版本的Ubuntu,比如Ubuntu 14.04,尽管可能存在TLS连接问题。
不要使用python-scrapyUbuntu提供的软件包,它们通常太旧而且速度慢,无法赶上最新的Scrapy。

要在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

Mac

创建Scrapy的依赖项需要存在C编译器和开发头文件。在OS X上,这通常由Apple的Xcode开发工具提供。要安装Xcode命令行工具,请打开终端窗口并运行:
xcode-select --install

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

(推荐) 不要使用系统python,安装一个不与系统其他部分冲突的新版本。以下是使用自制软件包管理器的方法:
  • 按照https://brew.sh/中的说明安装自制软件
  • 更新您的PATH变量以声明在系统软件包之前应该使用自制软件包(如果您使用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

PyPy

我们建议使用最新的PyPy版本。测试的版本是5.9.0。对于PyPy3,仅在Linux进行了测试安装。
Scrapy有很多依赖CPython的二进制库,但不适用于PyPy。这意味将在在安装期间构建这些依赖。
在OS X上,您可能会遇到构建加密依赖关系的问题,此处描述此问题的解决方案 ,即导出此命令建议的标志(仅在安装scrapy时需要)。除了安装构建依赖项之外,在Linux上安装没有特殊问题。在Windows上使用PyPy安装scrapy未经过测试。

brew install openssl

您可以通过运行检查scrapy是否已正确安装。如果此命令出现错误 ,则表示setuptools无法获取一个特定于PyPy的依赖项。要解决此问题,请运行。

scrapy benchTypeError: ... got 2 unexpected keyword argumentspip 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'

您遇到此异常的原因是您的系统或虚拟环境具有您的Twisted版本不支持的pyOpenSSL版本。
要安装您的Twisted版本支持的pyOpenSSL版本,请使用tls额外选项重新安装Twisted :

pip install twisted[tls]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容