Scrapy是基于Python的分布式爬虫框架。使用它可以非常方便地实现分布式爬虫。Scrapy高度灵活,能够实现功能的自由拓展,让爬虫可以应对各种网站情况。同时,Scrapy封装了爬虫的很多实现细节,所以可以让开发者把更多的精力放在数据的提取上。
一、在Windows下安装Scrapy
Windows是目前最主流的操作系统,在日常的使用中,Windows有着非常好的用户体验。不过对于程序开发来说,Windows在某些方面会让工作变得比较麻烦,例如安装Scrapy。
要保证Scrapy在Windows中正确安装,请严格按照以下步骤执行。
1. 安装Visual C++ Build Tools
由于在Scrapy的依赖库文件中,pywin32和Twisted的底层是基于C语言开发的,因此需要安装C语言的编译环境。对于Python3.6来说,可以通过安装Visual C++ BuildTools来安装这个环境。Visual C++ Build Tools是微软公司开发的,下载地址为https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15,下载下来的只是一个大小为1MB左右的安装器,运行以后的界面如图:
单击“安装”按钮进行安装,这个安装器会自动下载需要的文件。安装过程视网速和计算机性能而定,一般需要30~60min。
出现上图所示,这是因为系统没有安装.Net Framework或者安装的版本太低。此时下载并安装一个4.5.1或以上版本的.Net Framework即可。
安装好.Net Framework以后,Microsoft Visual C++ Build Tools应该就可以正常安装了。
2. 安装pywin32
在Windows系统中搭建Scrapy的环境,有两个第三方库不能使用常规的方法安装。第一个是lxml,第二个是pywin32。pywin32和lxml一样,不建议使用pip来安装,因为10次至少有9次都会安装出错。pywin32甚至也不能使用安装lxml的方式来安装。pywin32 必须使用.exe安装包来进行安装。
根据计算机上的Python版本和位数下载并安装最新版的pywin32,安装程序会自动寻找Python的安装路径,所以不需要做任何修改,一直单击“下一步”按钮即可。
3. 安装Twisted
Scrapy需要依赖Twisted。Twisted是Python中的一个非常重要的基于事件驱动的异步输入/输出(Input/Output,I/O)引擎。Twisted的安装依赖于pywin32和前面的Visual C++ Build Tools,所以必须先安装前面这两个东西,才能安装Twisted。
到目前为止,已经可以直接在CMD中使用pip来安装Twisted了:
pip install twisted
不过先别着急,这样安装虽然从功能上说没有问题,但并不是一个好方法。因为Twisted和之后的Scrapy的安装,会附带安装大量的依赖库,而这些库,仅在Scrapy中会用到,平时的普通开发中几乎不会用到。所以如果把它们安装到系统的Python环境中,会导致Python环境的混乱。而且发布爬虫的时候,也不便于导出涉及的依赖库文件。
因此,建议使用Virtualenv创建一个虚拟的Python环境来安装Scrapy剩下的部分。
Virtualenv是Python的一个第三方库,使用它可以创建Python的虚拟环境。使用安装普通第三方库的方法就可以安装Virtualenv:
pip install virtualenv
最理想的情况是,系统的Python环境中只安装Virtualenv,之后的所有开发都在Virtualenv创建的虚拟Python环境中进行。每个项目都有它自己独立的虚拟Python环境,各个环境之间互不干扰。但是,在Windows系统中,这个最理想的情况有时候没有办法实现。例如在搭建Scrapy时,通过安装.exe文件的方式来安装pywin32的时候,是没有办法指定安装位置的,所以pywin32必定会安装到系统的Python环境中。在这种情况下,就必须让Virtualenv创建的虚拟Python环境可以使用系统Python中的第三方库。
要让Virtualenv使用系统Python环境的第三方库,就需要在CMD中使用下面的命令来创建虚拟环境:
virtualenv --always-copy --system-site-packages venv
创建虚拟环境以后,可以使用下面的命令来激活虚拟环境:
venv\scripts\activate
不要关闭现在这个CMD窗口,接下来的所有操作都要在这里进行。安装Twisted:
pip install twisted
这个文件比较大,需要几分钟的时间才能安装完成。
安装完成Twisted以后,在虚拟的Python环境中安装lxml。
4. pip安装Scrapy
前面的环境都准备好以后,就可以使用pip来安装Scrapy了:
pip install scrapy
二、在Linux下安装Scrapy
在Linux下安装Scrapy比在Windows下安装简单得多,可以完全通过命令来操作。
1. 安装依赖库
在Linux的终端中执行下面的命令来安装依赖库:
sudo apt-get install python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
不用担心这里面的某些库已经安装,因为apt-get会自动检测并跳过这些已经安装的库。
2. 创建Virtualenv虚拟Python环境并安装Scrapy
在Linux的终端中创建虚拟的Python环境:
virtualenv --always-copy –python=python3 venv
激活虚拟的Python环境:
. venv/bin/activate
安装Scrapy:
pip install scrapy
注意,在Virtualenv创建的虚拟Python环境中,执行pip命令安装第三方库时是不需要使用sudo命令的。
三、在Mac OS下安装Scrapy
在Mac OS下面安装Scrapy非常简单,大多数人可以直接从Linux安装流程的第2步开始:
在终端中创建虚拟的Python环境:
virtualenv --always-copy --python=python3 venv
激活虚拟的Python环境:
. venv/bin/activate
安装Scrapy:
pip install scrapy
不过,由于pip的网络经常会受到干扰,所以可能有在安装的时候会得到在线连接超时等报错信息。这个时候,可以使用一些代理工具来让网络变得稳定,比如,ProxyChains 代理工具的安装和使用解决下载依赖库的网络超时的问题。
--------------------------------------
没有自由的秩序和没有秩序的自由,同样具有破坏性。