本文介绍了网络爬虫框架抓取。
框架是什么:在建筑学的概念中,框架是基本概念上的结构,用来解决和处理复杂的问题。 通俗地说,是有约束力的架子。
在我们的计算机领域,尤指为解决开放性问题而设计的具有一定制约性的支撑结构。 所以,Python的爬虫框架是爬虫项目的半成品。 例如,可以编写实现常见爬行动物功能的部分代码,并保留一些界面。 做不同的爬虫项目时,我们只需要根据需要写一点需要更改的代码,实现爬虫项目。 半成品并不是没有完整的复用代码,框架已经实现了许多常用功能,可以有效地开发所需的爬虫项目。 认识Scrapy框架: Scrapy框架是比较成熟的python爬虫框架,是用python开发的一种快速高层次的信息爬取框架。
Scrapy框架的应用领域很多,包括互联网爬虫开发、数据挖掘、数据监测等。 使测试等自动化。
Scrapy的官网地址为: http://scrapy.org
看了这么绿色的界面后,还是需要说无聊的文字
首先是安装Scrapy
目前,Scrapy支持python3,您可以直接在windows上安装pip install Scrapy来安装最新版本。但是首先要安装他的依赖包。
请更新pip
现在开始安装Twisted模块。 但是,直接pip安装会报告错误。 下图:
所以我们先下载到这个地址。 33559 www.lfd.UCI.edu/~ Goh lke/python libs/# twisted
然后根据python版本下载支持版本的版本。 我是python 3.6.4。 选择twisted-18.9.0-cp36-cp36m-win _ amd64
下载并放在桌面上,在桌面上启动cmd。 (按住shift键并右键单击,然后选择在此处打开命令窗口。 )键入pipinstalltwisted-18.9.0-cp36-cp36m-win _ amd64.whl。
再安装一个pywin32
最后直接pip
当使用其它版本时,例如pip安装脚本==1.1.0RC-3
PS:
如果使用的是anaconda,请在安装过程中直接切入anaconda使用的环境目录scripts并打开命令行。
安装conda安装脚本。 (或切入Anaconda图形界面下载)
然后在cmd上输入Scrapy,如果有消息就成功了!
制作第一个项目。 安装完成了。 我等不及要尝试创建项目了吧
First_Get是我这里的项目名称。 (您可以进入用cmd保存项目的文件夹。)
你会看到这样的东西。 别着急,先看看这是什么。
当我们使用命令生成项目时,将生成与爬虫项目名称同名的文件夹。 例如,这时我们的爬虫项目名为First_Get,所以它有一个名为First_Get的子文件夹和一个scrapy.cfg文件。
爬虫项目的核心代码位于同名子文件夹中,scrapy.cfg文件主要是爬虫项目的部署文件。
python文件,如项目中同名子文件夹中的核心代码、spiders、__init__.py、items.py、pipelines.py、settings.py等
init.py文件是项目的初始化文件,主要包含几个项目的初始化信息。 主要初始化spiders
items.py文件是爬虫项目的数据容器文件,主要用于定义我们要获取的数据信息。
文件pipelines.py是爬虫项目的管道文件,主要用于进一步加工和处理items定义的数据。
settings.py文件是爬行动物项目的附加文件,主要是爬行动物项目的一些设置信息。
spiders文件夹下放置的是爬行动物项中爬行动物部分的相关文件。
修改项目参数:然后开始第一个项目。 进行Scarpy的爬行动物项目管理。
首先用cmd命令把CD发送到项目
显示项目特定的参数。
我们可以分别分析这些重要的参数。
log file=file参数主要用于指定日志文件。 其中,file是指定日志文件的路径地址。
例如,如果将日志文件保存在当前目录的上一个目录中,并将日志文件名指定为logf.txt .则:
效果如下。
建造完成了。 现在,您已使用log file参数将相应的日志信息写入指定文件夹。
-loglevel=LEVEL,-L LEVEL参数主要用于控制日志信息级别,缺省为调试模式。 除了调试级别外,还可以将相应的级别设置为其他值。
CRITICAL发生得最严重的是
错误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命令的使用。通过fetch命名我们可以很方便的查看爬取某个网页的过程。
runspider命令:
通过Scrapy中的runspider命令我们可以实现不依托Scrapy的爬虫项目,直接运行一个爬虫文件。
首先我们先编写一个Scrapy爬虫文件如下:
仅此我们只需要简单的了解该爬虫文件,因为在后续的文章中我会讲解如何编写优质的爬虫文件。
如图该爬虫文件的名字为first,同时爬取的网址为http://www.baidu.com
然后我们可以使用runspider命令直接运行该爬虫文件。并将日志等级设置为INFO。
可以看到,通过该指令在不依靠Scrapy项目的情况下完成了爬虫文件的运行。
settings命令:
第三个全局命令了,settings命令可以查看Scrapy对应的配置信息。
如果在Scrapy项目目录内使用settings命令,查看的是对应的项目信息,如果在Scrapy项目目录外使用settings命令,查看的是Scrapy默认配置信息。
这些就是项目的配置信息。我们也可以在命令行中进入该项目所在的目录。比如我们可以通过下面指令来查看配置信息中BOT_NAME对应的值
shell命令:
shell命令主要是可以启动Scrapy的交互终端。经常在开发以及调试的时候用到,使用Scrapy的交互终端可以在不启动Scrapy爬虫的情况下,对网站响应进行调试,同样,在该交互终端中,我们也可以写一些python代码进行响应测试
比如我们为爬取百度首页创建一个交互终端环境,并设置为不显示日志信息。如下所示:
可以看到,执行了该命令之后,会出现可以使用的Scrapy对象以及快捷命令,比如item,response,settings,spider等,并进入交互模式,在“>>>”后可以输入交互命令及代码。(ctrl+c退出交互模式)
startproject命令:
第五个命令了。这个大家应该不陌生了,主要就是创建项目用。
version命令:
通过version命令,可以直接显示Scrapy的版本相关信息。(加上-v 可以查看相关的其他版本信息)
view命令:
通过view命令,我们可以实现下载某个网页并用浏览器查看的功能。
比如我们可以通过下面命令下载网易新闻首页(http://news.163.com/)并自动用浏览器查看下载的网页。
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 http://www.baidu.com"来获取百度首页,由于在这里没有指定的爬虫文件,也没有指定处理函数,所以此时会使用默认的爬虫文件和默认的处理函数,进行相应的处理。
我们可以使用 scrapy parse -h 来查看所有参数。
参数表我直接贴图了,码了10500+的字 贼辛苦q.q.
本篇文章到这里就先结束了。
本篇主要讲解了什么是爬虫框架,Python中的Scrapy框架,以及Scrapy框架的安装和Scrapy的目录结构,如何进行爬虫项目管理和一些常用的工具命令。
这些知识对我们后面的编写环节还是很重要的,希望在看的时候可以多回顾一下。
下一篇:开启Scrapy爬虫项目之旅