安装Scrapy
Scrapy 的安装相对来说比较简单,不过它会完全依赖于你从哪里起步。为了能够支持尽可能多的用户,本书中运行和安装 Scrapy 以及所有示例的 “官方” 方式是通过 Vagrant,该软件能够让你在不考虑宿主操作系统的情况下,运行一个标准的 Linux 系统,在该系统中我们已经安装好所有需要用到的工具。我们将会在接下来的几小节中给出 Vagrant 的使用说明以及一些常用操作系统中的指引。
MacOS
为了更加方便地阅读本书,请按照后面给出的 Vagrant 使用说明操作。如果你想直接在 MacOS 系统中安装 Scrapy,其实也很简单。只需要输入下面的命令即可。
$ easy_install scrapy
然后,一切都会为你准备好。在过程中,可能会要求你填写密码或安装 Xcode,如图3.1 所示。这些都没有问题,你可以放心地接受这些请求。

Windows
直接在 Windows 系统中安装 Scrapy 会复杂一些,坦白来说,会有一点痛苦。而且,安装本书中所需的所有软件也需要很大程度的勇气和决心。我们已经为你做好了准备。Vagrant 和 Virtualbox 可以在 Windows 64 位平台中良好运行。直接前往本章后续的相关小节,你可以很快将其安装好并运行起来。如果你必须要在 Windows 系统中直接安装 Scrapy,请查阅本书网站( http://scrapybook.com )中的资源。
Linux
和前面提及的两个操作系统一样,如果你想按照本书操作,那么 Vagrant 就是最为推荐的方式。
由于在很多场景下,你需要在 Linux 服务器中安装 Scrapy,因此更详尽的指引可能会很有用。
确切的依赖条件经常会发生变更。本书编写时,我们安装的 Scrapy 版本是 1.0.3,下面的内容是针对不同主流系统的操作指南。 |
Ubuntu或Debian Linux
为了在 Ubuntu(使用 Ubuntu 14.04 Trust Tahr 64 位版本测试)或其他使用 apt 的发布版本中安装 Scrapy,需要执行如下 3 个命令。
$ sudo apt-get update
$ sudo apt-get install python-pip python-lxml python-crypto pythoncssselect python-openssl python-w3lib python-twisted python-dev libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
$ sudo pip install scrapy
上述过程需要一些编译工作,而且可能会被不时打断,不过它将会为你安装 PyPI 源上最新版本的 Scrapy。如果你想避免某些编译工作,并且能够忍受使用稍微过时一些的版本的话,可以通过 Google 搜索 “install Scrapy Ubuntu packages”,并跟随 Scrapy 官方文档的指引进行操作。
最新源码安装
只要你按照上述指引操作的话,就已经安装好了 Scrapy 目前所需的所有依赖。由于 Scrapy 是纯 Python 应用,因此如果你想修改其源代码或测试最新功能,可以很容易地从 https://github.com/scrapy/scrapy 网站中克隆其最新版本。在你的系统中安装 Scrapy,只需输入如下命令。
$ git clone https://github.com/scrapy/scrapy.git
$ cd scrapy
$ python setup.py install
我猜如果你属于这类 Scrapy 用户,也就不需要我再提及 virtualenv 了。
升级Scrapy
Scrapy 经常会升级。你会发现自己需要在很短时间内完成升级,此时可以使用 pip、easy_install 或 aptitude 完成这项工作。
$ sudo pip install --upgrade Scrapy
或
$ sudo easy_install --upgrade scrapy
如果想降级或选择特定版本,可以通过指定版本号来完成,比如:
$ sudo pip install Scrapy==1.0.0
或
$ sudo easy_install scrapy==1.0.0
Vagrant:本书中运行示例的官方方式
本书中会有很多复杂但又有趣的例子,其中一些例子会用到很多服务。无论是处于初学还是进阶阶段,都可以运行本书中的这些示例,这是因为被称为 Vagrant 的程序可以让我们仅仅使用简单的命令就能准备好这个复杂的系统。本书中使用的系统如图3.2所示。

在 Vagrant 的术语中,你的电脑或笔记本被称为 “宿主” 机。Vagrant 使用宿主机运行 Docker 提供者 VM(虚拟机)。这些技术可以让我们拥有一个隔离的系统,在其中拥有其私有网络,可以忽略宿主机的软硬件,运行本书中的示例。
大部分章节只使用了两个服务:"dev" 机器和 "web" 机器。我们登录到 dev 机器中运行爬虫,抓取 web 机器中的页面。后面的一些章节会用到更多的服务,包括数据库和大数据处理引擎。
请按照附录 A 的说明,在操作系统中安装 Vagrant。到附录 A 的结尾时,你应当已经在操作系统中安装好 git 和 Vagrant 了。打开控制台/终端/命令提示符,现在可以按照如下操作获取本书的代码了。
$ git clone https://github.com/scalingexcellence/scrapybook.git
$ cd scrapybook
然后可以通过输入如下命令打开 Vagrant 系统。
$ vagrant up --no-parallel
在首次运行时将会花费一些时间,这取决于你的网络连接状况。在这之后,'vagrant up' 操作将会瞬间完成。当系统运行起来之后,就可以使用如下命令登录 dev 虚拟机。
$ vagrant ssh
现在,你已经处于开发控制台当中,在这里可以按照本书的其他说明操作。代码已经从你的宿主机复制到 dev 机器当中,可以在 book 目录下找到这些代码。
$ cd book
$ ls
ch03 ch04 ch05 ch07 ch08 ch09 ch10 ch11 ...
打开几个控制台并执行 vagrant ssh,可以获得多个可供操作的 dev 终端。可以使用 vagrant halt 关闭系统,使用 vagrant status 查看系统状态。请注意,vagrant halt 不会关掉 VM。如果出现问题,则需要打开 VirtualBox 然后手动关闭它,或者使用 vagrant globalstatus 找到其 id(名为 "docker-provider"),然后使用 vagrant halt <ID> 停掉它。即使你处于离线状态,大部分示例仍然能够运行,这也是使用 Vagrant 的一个很好的副作用。
现在,我们已经正确地创建好了系统,下面就该准备学习 Scrapy 了。