您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第7章-Scrapy爬虫
大数据,成就未来Scrapy爬虫2020/10/122大数据挖掘专家1Scrapy爬取文本信息目录认识Scarpy2定制中间件3小结43大数据挖掘专家Scrapy是一个爬虫框架而非功能函数库,简单地说,它是一个半成品,可以帮助用户简单快速地部署一个专业的网络爬虫。Scrapy爬虫框架主要由引擎(Engine)、调度器(Scheduler)、下载器(Downloader)、Spiders、ItemPipelines、下载器中间件(DownloaderMiddlewares)、Spider中间件(SpiderMiddlewares)这7个组件构成。了解Scrapy爬虫框架4大数据挖掘专家引擎负责控制数据流在系统所有组件中的流向,并在不同的条件时触发相对应的事件。这个组件相当于爬虫的“大脑”,是整个爬虫的调度中心。2.调度器(Scheduler)调度器从引擎接受请求并将它们加入队列,以便之后引擎需要它们时提供给引擎。初始爬取的URL和后续在网页中获取的待爬取的URL都将放入调度器中,等待爬取,同时调度器会自动去除重复的URL。如果特定的URL不需要去重也可以通过设置实现,如post请求的URL。了解Scrapy爬虫框架1.引擎(Engine)5大数据挖掘专家下载器的主要功能是获取网页内容,提供给引擎和Spiders。4.SpidersSpiders是Scrapy用户编写用于分析响应,并提取Items或额外跟进的URL的一个类。每个Spider负责处理一个(一些)特定网站。了解Scrapy爬虫框架3.下载器(Downloader)6大数据挖掘专家ItemPipelines主要功能是处理被Spiders提取出来的Items。典型的处理有清理、验证及持久化(例如存取到数据库中)。当网页被爬虫解析所需的数据存入Items后,将被发送到项目管道(Pipelines),并经过几个特定的次序处理数据,最后存入本地文件或数据库6.下载器中间件(DownloaderMiddlewares)下载器中间件是一组在引擎及下载器之间的特定钩子(specifichook),主要功能是处理下载器传递给引擎的响应(response)。下载器中间件提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。通过设置下载器中间件可以实现爬虫自动更换user-agent、IP等功能。了解Scrapy爬虫框架5.ItemPipelines7大数据挖掘专家Spider中间件是一组在引擎及Spiders之间的特定钩子(specifichook),主要功能是处理Spiders的输入(响应)和输出(Items及请求)。Spider中间件提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。各组件之间的数据流向如图所示。了解Scrapy爬虫框架7.Spider中间件(SpiderMiddlewares)8大数据挖掘专家数据流在Scrapy中由执行引擎控制,其基本步骤流程如下。1.引擎打开一个网站,找到处理该网站的Spiders,并向该Spiders请求第一个要爬取的URL。2.引擎将爬取请求转发给调度器,调度指挥进行下一步。3.引擎向调度器获取下一个要爬取的请求。4.调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求方向)转发给下载器5.一旦网页下载完毕,下载器生成一个该网页的响应,并将其通过下载中间件(返回响应方向)发送给引擎。6.引擎从下载器中接收到响应并通过Spider中间件(输入方向)发送给Spiders处理。7.Spiders处理响应并返回爬取到的Items及(跟进)新的请求给引擎。8.引擎将(Spiders返回的)爬取到的Items给ItemPipeline,将(Spiders返回的)请求给调度器。9.从第2步重复直到调度器中没有更多的URL请求,引擎关闭该网站。了解Scrapy爬虫框架9大数据挖掘专家Scrapy通过命令行进行控制,Scrapy提供了多种命令,用于多种目的,并且每个命令都接收一组不同的参数和选项。熟悉Scrapy常用命令全局命令主要功能startproject创建Scrapy项目genspider基于预定义模板创建Scrapy爬虫settings查看Scrapy的设置runspider运行一个独立的爬虫Python文件shell(以给定的URL)启动Scrapyshellfetch使用Scrapy下载器下载给定的URL,并将内容输出到标准输出流view以Scrapy爬虫所“看到”的样子在浏览器中打开给定的URLversion打印Scrapy版本10大数据挖掘专家除了全局命令外,Scrapy还提供了专用于项目的项目命令。熟悉Scrapy常用命令项目命令主要功能crawl启动爬虫check协议(contract)检查list列出项目中所有可用爬虫edit使用EDITOR环境变量或设置中定义的编辑器编辑爬虫parse获取给定的URL并使用爬虫处理它的方式解析它bench运行benchmark测试11大数据挖掘专家1Scrapy爬取文本信息目录认识Scarpy2定制中间件3小结412大数据挖掘专家使用Scrapy框架进行网页数据爬取第一步就是启动爬虫,使用Scrapy提供的startprject命令即可创建一个爬虫项目,其语法格式如下。startprject命令常用参数的作用及其解释如所表所示。创建Scrapy爬虫项目scrapystartprojectproject_name[project_dir]参数名称说明project_name表示创建的Scrapy爬虫的项目名称。指定了参数后会在project_dir参数指定的目录下创建一个名为project_name的Scrapy爬虫项目project_dir表示创建Scrapy爬虫项目的路目录。指定参数后,project_dir目录下将会多出一个project_name文件夹,整个文件夹统称为一个Scrapy爬虫项目,如若不指定则会在当前的工作路径下创建一个名为project_name的Scrapy爬虫项目13大数据挖掘专家在目录“E:\第7章\任务程序\code”下,创建一个名为“TipDMSpider”的Scrapy爬虫项目,创建完成后,在“E:\第7章\任务程序\code”下就会生成一个名为TipDMSpider的文件夹,其目录结构如图所示。创建Scrapy爬虫项目14大数据挖掘专家图中需要用户自定义的目录与脚本文件的名称、作用,如表所示。创建Scrapy爬虫项目目录或文件名作用spiders创建Scrapy项目后自动创建的一个文件夹,用于存放用户编写的爬虫脚本items.py表示项目中的Items。在items脚本中定义了一个Item类,能够保存爬取到的数据的容器。使用方法和python字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误middlewares.py表示项目中的中间件。在middlewares脚本中用户可以根据需要自定义中间件,实现代理、浏览器标识等的转换piplines.py表示项目中的piplines。在piplines脚本中定义了一个piplines类,主要用于爬取数据的存储,可以根据需求保存至数据库、文件等settings.py表示项目的设置15大数据挖掘专家爬虫的主要目标就是从网页这一非结构化的数据源中提取结构化的数据。TipDMSpider项目最终的目标是解析出文章的标题(title)、时间(time)、正文(text)、浏览数(view_count)等数据。Scrapy提供Item对象来完成解析数据转换为结构化数据的功能。TipDMSpider项目提取的信息最终将存储至csv文件与数据库。使用pandas库将Items中的数据转换为DataFrame会更方便处理。pandas库的DataFrame函数的语法格式如下。修改items/piplines脚本classpandas.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)16大数据挖掘专家DataFrame函数的常用参数及其说明如表所示。转换为DataFrame后即可使用to_csv方法轻松地将数据存储至csv文件。to_csv方法的语法格式如下。修改items/piplines脚本参数名称说明data接收ndarray,dict。表示DataFrame的数据。当取值为dict时,该dict的值不能包含Series,arrays,constants,或类似list的对象。无默认值index接收index,array。表示行索引。无默认值columns接收index,array。表示列索引。无默认值dtype接收dtype。表示强制转换后的类型,仅支持单独一种转换。默认为NoneDataFrame.to_csv(path_or_buf=None,sep=’,’,na_rep=”,columns=None,header=True,index=True,index_label=None,mode=’w’,encoding=None)17大数据挖掘专家to_csv方法的常用参数及其说明如表所示。修改items/piplines脚本参数名称说明path_or_buf接收string。表示文件路径。无默认值sep接收string。表示分隔符。默认为“,”na_rep接收string。表示缺失值。默认为“”columnss接收list。表示写出的列名。默认为Noneheader接收boolearn,表示是否将列名写出。默认为Trueindex接收boolearn,表示是否将行名(索引)写出。默认为Trueindex_labels接收sequence。表示索引名。默认为Nonemode接收特定string。表示数据写入模式。默认为wencoding接收特定string。表示存储文件的编码格式。默认为None18大数据挖掘专家使用to_sql方法能够轻松地将数据存储至数据库,其语法格式如下。修改items/piplines脚本DataFrame.to_sql(name,con,schema=None,if_exists=’fail’,index=True,index_label=None,dtype=None)参数名称说明name接收string。代表数据库表名。无默认值con接收数据库连接。无默认值if_exists接收fail,replace,append。fail表示如果表名存在则不执行写入操作;replace表示如果存在,将原数据库表删除,再重新创建;append则表示在原数据库表的基础上追加数据。默认为failindex接收bool。表示是否将行索引作为数据传入数据库。默认Trueindex_label接收string或sequence。表示是否引用索引名称,若index参数为True,此参数为None,则使用默认名称。若为多重索引则必须使用数列形式。默认为Nonedtype接收dict。表示写入的数据类型(列名为key,数据格式为values)。默认为Noneto_sql方法的常用参数及其说明如表所示。19大数据挖掘专家创建TipDMSpider项目后,爬虫模块的代码都放置于spiders文件夹中。创建之初,目录下仅有一个“__init__.py”文件,并无其它文件,对于初学者而言极有可能无从下手。使用genspider命令,可以解决这一问题,其语法格式如下。genspider命令常用参数的作用及其解释如所表示。编写spider脚本scrapygenspider[-ttemplate]namedomain参数名称说明name表示创建的爬虫的名称。指定了name参数后会在spiders目录下创建一个名为以该参数为名的spider爬虫脚本模板template表示创建模板的类型。指定不同类型会产生不同的模板类型domain表示爬虫
本文标题:第7章-Scrapy爬虫
链接地址:https://www.777doc.com/doc-7114105 .html