第2章 入门之Scrapy的安装

Scrapy可以运行在Python3.5及以上。

如果你使用Anaconda或者Miniconda,你可以使用conda命令进行安装。

如果想通过conda命令安装Scrapy,可以运行以下命令:

conda install -C conda-forge scrapy

当然,如果你熟悉Python包的安装方式,你可以通过PyPI安装Scrapy和Scrapy的依赖:

pip install Scrapy

但是这样可能会需要你根据不同的系统安装响应的依赖。

我强烈建议你将Scrapy安装到一个隔离的虚拟环境中,避免与系统中的包冲突。

Scrapy用到的依赖

Scrapy使用纯Python写成,依赖于以下几个Python包:

  • lxml,一个高效的XML和HTML解析器
  • parsel,一个基于lxml的HTML/XML数据抽取库
  • w3lib,一个多用途的用于处理URL和页面编码的辅助库
  • twisted,一个异步的网络框架
  • cryptography和pyOpenSSL,用于处理多个网络层的安全需求

以上部分库的经过测试可用的最小版本:

  • Twisted 14.0
  • lxml 3.4
  • pyOpenSSL 0.14

当然低于这些版本,Scrapy可以工作,但是没有经过测试。

有些库可能需要根据操作系统的不同安装额外的依赖。这个以下介绍。

Windows

虽然可以通过pip将Scrapy安装到Windows中,我推荐你使用Anaconda或者Miniconda中的conda-forge频道进行安装,可以避免很多的安装问题。

如果你安装了Anaconda或者Miniconda,可以通过以下方式安装Scrapy:

conda install -C conda-forge scrapy

Ubuntu

Scrapy最近通过了lxml,twisted和pyOpenSSL最新版本的测试,也与最新版的Ubuntu兼容,旧版本的Ubuntu,比如14.04,可能存在潜在的TLS连接问题。

为了保持版本的最新,尽量不要用Ubuntu体统的python-scrapy包进行安装。

在Ubuntu中安装Scrapy,需要安装以下依赖:

sudo apt-get install python3 python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

macOS

构建Scrapy的依赖需要C编译器和一些开发相关的头文件。在macOS中,这个由Xcode开发工具提供。安装Xcode命令行工具,可以打开终端运行以下命令:

xcode-select --install

在使用pip对系统包进行更新的时候会出现一些问题。但是如果忽略会影响到Scrapy和Scrapy依赖的安装,以下是相应的解决方案:

不要使用系统Python,安装一个最新的与系统没有冲突的版本。可以用homebrew来进行安装:

  • 打开https://brew.sh/,根据提示安装homebrew。
  • 更改你的PATH,声明你的homebrew包优先系统包:
 echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc
  • 重新载入.bashrc来确保更改生效:
source ~/.bashrc
  • 安装Python:
brew install python

最新版本的Python中已经内置了pip,不需要单独进行安装。

当然,也可以将Python安装到一个虚拟环境中来解决这个问题。

安装过程中可能出现的报错

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版本,只需要在安装Twisted时添加一个额外的tls选项就行了。

pip install twisted[tls]

编写运行爬虫推荐买一个便宜的服务器,这里推荐华为云,扫码可以快速的进行注册:
华为云服务器

限时打折。

猜你喜欢

转载自blog.csdn.net/song19891121/article/details/104687819
今日推荐