Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途普遍,能够用于数据挖掘、监测和自动化测试。(引用自:百度百科)python
scrapy官方网站:https://scrapy.org/web
scrapy官方文档:https://doc.scrapy.org/en/latest/正则表达式
首先咱们安装scrapy,使用以下命令数据库
pip install scrapy
此时不少人应该都会遇到以下问题编程
error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279
这是由于scrapy中使用了许多C++的内容,因此在安装时须要首先有C++ 10.0环境。最直接的解决办法就是下载并安装Microsoft Visual C++ 10.0。但为此下一个这么大的环境,配置又是蛋疼的巨硬风,实在使人畏惧。框架
因此笔者建议采用第二种方式,咱们仔细观察到pip报错前正在运行scrapy
Running setup.py clean for Twisted Failed to build Twisted
也就是说是安装Twisted模块时出错了,那么咱们能够选择手动下载Twisted模块并安装。python的各类库有不少下载地,很多人可能会下载到 Twisted-xx.x.x.tar.bz2 ,解压后进行安装,发现会出现一样的错误。此时咱们仔细观察以前安装scrapy时的信息,就会发现,pip指令自动安装时其实也是采用的下载 bz2 文件,解压,运行解压出的setup.py文件,因此这与咱们上述的手动安装过程并无任何区别。ide
笔者推荐一个网站https://www.lfd.uci.edu/~gohlke/pythonlibs,此网站中包含几乎全部经常使用的python库。例如咱们这次须要下载Twisted库,那么咱们在网页中搜索Twisted,而后下载本身对应位数和python版本的Twisted库。而后在Twisted下载位置运行cmd,执行以下命令(记得替换为本身下载的文件名)post
pip install Twisted-xx.x.x-cpxx-cpxxm-win_amd64.whl
而后咱们只须要等待其运行完成安装,至此咱们安装好了scrapy必须的Twisted库,而后咱们从新执行学习
pip install scrapy
安装成功!
在安装过程当中,咱们能够看到它为咱们下载了许多辅助库,这使得scrapy成为了一个完整的成体系的爬虫框架,这些框架极大地简化了咱们的编程难度,下降了学习成本。
scrapy是基于requests库搭建的,因此咱们还须要执行如下命令
pip install requests
至此,咱们已经完成了scrapy爬虫框架的安装。
scrapy是一个系统的框架,使用前的准备工做与其余一些爬虫库相比略显复杂,但这有限的几步,可以极大地下降咱们后续编程的难度。
因为咱们如今对scrapy框架还不熟悉,因此咱们使用scrapy自带的命令来生成scrapy的模板。这次咱们以爬取jobbole为例。
如上图,首先,咱们使用以下命令
scrapy startproject jobboleSpider
这样咱们就能在当前路径下建立了一个scrapy爬虫项目,但这个项目此时还不完整,因此咱们根据它的提示使用如下命令建立一个scrapy自带的模板
cd jobboleSpider scrapy genspider jobbole http://blog.jobbole.com/all-posts/
根据提示信息,咱们知道了咱们使用了scrapy的"basic"模板成功建立了一个scrapy项目并构建了基本的结构。那么接下来咱们打开IDE来了解一下咱们建立的模板。
其中scrapy.cfg使咱们的全局配置文件,包含咱们的设置文件路径,项目名称等。
jobbole.py是咱们之后实现爬虫逻辑的主要文件。
items.py是咱们的定义数据储存结构的文件。
middlewares.py包含了大量中间件,例以下载中间件,重定向中间件,是scrapy引擎与其余部分代码之间发送信息的重要通道。
pipelines.py正如其名,是一个管道,主要用于将咱们得到的数据储存到数据库中。
setteings.py则由大量关于scrapy的设置,例如是否遵循robot协议等。
至此咱们已经实现了scrapy的安装和基本框架的实现,但尚未进行具体的编程,接下来笔者将会带着你们首先实现对jobbole“最新文章”的全部文章的爬取,以初步体验到scrapy爬虫的乐趣。而后逐步深刻到模拟登录,突破反爬虫限制等。
我会尽可能详细的说明个人每一步操做,以实现一个“小白教程”。后面的教程中咱们会使用到xpath和正则表达式,限于篇幅,笔者对这两个知识点只会进行一些基本的教学,若是你们想要熟练运用的话,最好可以查阅其余一些资料进行更深刻的学习。