admin管理员组文章数量:1794759
005:认识Python爬虫框架之Scrapy
本篇文章带大家认识一下网络爬虫框架Scrapy。
什么是框架:在建筑学概念中,框架是一个基本概念上的结构,用于去解决或者处理复杂的问题。通俗来说也就是一个有约束性的架子。
- 在我们计算机领域中,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。所以,Python的爬虫框架就是一些爬虫项目的半成品。
- 比如可以将一些常见爬虫功能的实现代码部分写好,然后留下一些接口,在做不同的爬虫项目时,我们只需要根据需求去编写少量需要变动的代码,实现一个爬虫项目。
- 所谓的半成品并不是没有完善的复用代码,在框架中已经实现了很多要实现的常见功能,让我们可以高效的开发自己需要的爬虫项目。
scrapy框架是一套比较成熟的python爬虫框架,是使用python开发的快速、高层次的信爬取框架。 Scrapy框架的应用领域很多,比如网络爬虫开发、数据挖掘、数据监测。自动化测试等。 Scrapy的官网地址是: scrapy 看了这么绿的界面之后, 还是要讲一些枯燥的文字 首先是安装Scrapy 目前Scrapy已经支持python3了,所以我们在windows下直接pip install Scrapy 就可以安装最新版。但是首先要安装他的依赖包。 更新一下pip 接下来要安装Twisted模块。但是直接pip安装会报错的。如下图: 所以我们要先去这个地址下载。www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 然后根据python版本下载版本对应版本,我是python 3.6.4 我选Twisted-18.9.0-cp36-cp36m-win_amd64 下载下来后放在桌面,然后在桌面启动cmd(按着shift键 右击鼠标 然后选择 在此处打开命令窗口),输入pip install Twisted-18.9.0-cp36-cp36m-win_amd64.whl 再安装一个pywin32 最后直接pip
若想使用其他版本,例如:pip install Scrapy==1.1.0rc3
PS:
- 如果使用的anaconda,所以在安装的时候,直接切入到anaconda使用的环境目录scripts内,打开命令行: conda install scrapy 进行安装。(或者切入Anaconda图形界面下载)
然后在cmd里面输入Scrapy 有消就成功啦!
创建第一个项目:终于安装完成了。迫不及待想尝试下创建项目吧 First_Get是我这里的项目名称。(可用cmd进入要储存项目的文件夹) 可以看到这么一个东西。别着急先看一下这是什么。 我们在用命令生成一个项目的时候,会生成一个与爬虫项目名称同名的文件夹。比如此时我们的爬虫项目名称为First_Get,所以此时,会有一个名为First_Get的子文件夹,和一个scrapy.cfg文件。
该同名子文件夹里面放置的是爬虫项目的核心代码,scrapy.cfg文件主要是爬虫项目的配置文件。 该项目中同名子文件夹里放置的核心代码,一个spiders,一个__init__.py,items.py,pipelines.py,settings.py,等python文件。
init.py 文件是项目的初始化文件,主要写的是一些项目的初始化信。主要对spiders进行初始化 items.py文件为爬虫项目的数据容器文件,主要用来定义我们要获取的数据信。 pipelines.py文件为爬虫项目的管道文件,主要用来对items里面定义的数据进行进一步的加工与处理。 settings.py 文件为爬虫项目的甚至文件,主要为爬虫项目的一些设置信。 spiders文件夹下放置的是爬虫项中的爬虫部分相关的文件。
修改项目参数:接下来我们来开始第一个项目。进行Scarpy的爬虫项目管理。 首先我们用cmd命令CD到项目中 查看项目具体的参数。 我们可以对这些重要的参数分别进行分析。 –logfile=FILE 参数主要用来指定日志文件,其中的FILE为指定的日志文件的路径地址。 比如我们希望将日志文件储存在当前目录的上一层目录下,并且日志文件名为logf.txt.我们可以这样实现:
效果如下: 建立完成了。此时我们已经成功通过–logfile参数将对应的日志信写入到了指定的文件夹中。 –loglevel=LEVEL,-L LEVEL参数主要用来控制日志信的等级,默认为DEBUG模式。除了DEBUG等级之外,对应的等级还可以设置为其他的值,
ERROR | 发生了必须立即处理的错误 |
WARNING | 出现了一些警告 |
INFO | 输出一些提示信 |
DEBUG | 输入一些调试信。debug |
在这里我们要把日志等级设置为DEBUG最低级别。此时所有得调试信都会输出出来。如果只是需要一些警告的日志信,可以设置为WARRING 设置成功。
通过–nolog参数可以控制不输入日志信。可以通过下面操作,实现创建一个爬虫项目,并不输入项目信。
scrapy startproject --nolog mypjt3以上就是一些Scrapy项目创建指令中常见重要参数,希望各位朋友可以全面掌握项目创建指令的使用,可以根据需求创建出自己的爬虫项目。 如果我们需要删除某个爬虫项目,我们可以直接删除对应的文件夹来实现。
常用工具命令:Scrapy中,工具命令分了两种,一种为全局命令,一种为项目命令。 全局命令不需要依靠Scrapy项目就可以在全局中直接运行,而项目命令必须要在Scrapy项目中才可以运行。 1、全局命令: 其实我们可以在不进入Scrapy爬虫项目所在目录的情况下。运行scrapy -h 。在commands下出现所有得全局命令。如下: fetch命令:主要用来显示爬虫爬取的过程。 如果在Scrapy项目目录之外使用该命令。则会调用Scrapy默认的爬虫来爬取该页面信。如果在Scrapy某个项目目录内使用该命令,则会调用该项目中的爬虫来爬取网页。 当然我们也可以在使用scrapy fetch -h的时候+上参数,比如显示头信 --headers 和不显示日志信 --nolog.
scrapy fetch --headers --nolog news.sina/上面就是Scrapy中fetch命令的使用。通过fetch命名我们可以很方便的查看爬取某个网页的过程。
runspider命令: 通过Scrapy中的runspider命令我们可以实现不依托Scrapy的爬虫项目,直接运行一个爬虫文件。 首先我们先编写一个Scrapy爬虫文件如下: 仅此我们只需要简单的了解该爬虫文件,因为在后续的文章中我会讲解如何编写优质的爬虫文件。 如图该爬虫文件的名字为first,同时爬取的网址为www.baidu 然后我们可以使用runspider命令直接运行该爬虫文件。并将日志等级设置为INFO。 可以看到,通过该指令在不依靠Scrapy项目的情况下完成了爬虫文件的运行。
settings命令: 第三个全局命令了,settings命令可以查看Scrapy对应的配置信。 如果在Scrapy项目目录内使用settings命令,查看的是对应的项目信,如果在Scrapy项目目录外使用settings命令,查看的是Scrapy默认配置信。 这些就是项目的配置信。我们也可以在命令行中进入该项目所在的目录。比如我们可以通过下面指令来查看配置信中BOT_NAME对应的值
scrapy settings --get BOT_NAMEshell命令: shell命令主要是可以启动Scrapy的交互终端。经常在开发以及调试的时候用到,使用Scrapy的交互终端可以在不启动Scrapy爬虫的情况下,对网站响应进行调试,同样,在该交互终端中,我们也可以写一些python代码进行响应测试 比如我们为爬取百度首页创建一个交互终端环境,并设置为不显示日志信。如下所示: 可以看到,执行了该命令之后,会出现可以使用的Scrapy对象以及快捷命令,比如item,response,settings,spider等,并进入交互模式,在“>>>”后可以输入交互命令及代码。(ctrl+c退出交互模式) startproject命令: 第五个命令了。这个大家应该不陌生了,主要就是创建项目用。
version命令: 通过version命令,可以直接显示Scrapy的版本相关信。(加上-v 可以查看相关的其他版本信) view命令: 通过view命令,我们可以实现下载某个网页并用浏览器查看的功能。 比如我们可以通过下面命令下载网易新闻首页(news.163/)并自动用浏览器查看下载的网页。
2、项目命令: 全局命令也算差不多了。大家也经常回顾,下面开始介绍一些项目命令了。 可以先cd 进入一个项目内,然后输入scrapy -h查看所有得命令。出去我们之前说的全局命令,其他的就是项目命令了。
Bench命令: 主要是测试本地硬件的性能,当我们运行scrapy bench的时候,会创建一个本地服务,并且会以最大的速度爬行。所以我们要了解下本地硬件的性能,避免被其他因素影响。 可以看到,大概每分钟可以爬取2400个网页。虽然这只是目前的一个参考标准。在实际运行的时候,会由于各种因素导致速度不同,所以我们需要根据实际的速度来改进我们的项目
Genspider命令: 主要是来创建Scrapy爬虫文件。是一种快速创建爬虫文件的方式。 使用该命令可以基础现有的爬虫模板直接生成一个新的爬虫文件。同样,必须要爱Scrapy爬虫项目目录中。 可以用该命令的 -l 参数来查看当前可以使用的爬虫模板。 此时,可以基于其实任何一个爬虫模板来生成一个爬虫文件,比如我们可以使用basic模板来生成一个爬虫文件,格式为"scrapy genspider -t (模板) (新爬虫名) (新爬虫爬取的域名)" 自动生成为可执行文件:
Check命令: 这个命令跟名字很像,在爬虫中测试是一个很麻烦的事情,所以在Scrapy中使用合同(contract)的方式对爬虫进行测试。 而使用check命令,可以实现对某个爬虫文件进行合同(contract)检查。 比如要对刚生成的xixixi.py进行合同检查。我们可以使用: scrapy check 爬虫名 。 来实现,此时check后面的爬虫min,不是文件名,没有后缀的。
Crawl命令: crawl命令可以来启动某个爬虫,启动格式是"scrapy crawl 爬虫名" 比如 scrapy crawl xixixi --loglevel=INFO
List命令: 通过Scrapy中的list命令,我们可以列出当前可以使用的爬虫文件。 比如我们现在在这个目录下,有1个可用文件
Edit命令: 通过edit命令,我们可以直接打开对应编辑器对爬虫文件进行编辑。在windows中我们一般使用Python IDE 或者Pycharm直接对爬虫项目进行管理和编辑。所以不多说这个了。有兴趣可以留言。
Parse命令: parse命令使我们可以实现获取指定的URL网址,并使用对应的爬虫文件进行处理和分析。 比如我们可以使用"scrapy parse www.baidu"来获取百度首页,由于在这里没有指定的爬虫文件,也没有指定处理函数,所以此时会使用默认的爬虫文件和默认的处理函数,进行相应的处理。 我们可以使用 scrapy parse -h 来查看所有参数。 参数表我直接贴图了,码了10500+的字 贼辛苦q.q. 本篇文章到这里就先结束了。 本篇主要讲解了什么是爬虫框架,Python中的Scrapy框架,以及Scrapy框架的安装和Scrapy的目录结构,如何进行爬虫项目管理和一些常用的工具命令。 这些知识对我们后面的编写环节还是很重要的,希望在看的时候可以多回顾一下。 下一篇:开启Scrapy爬虫项目之旅
版权声明:本文标题:005:认识Python爬虫框架之Scrapy 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686783561a102355.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论