第7章-Scrapy爬虫.ppt
- 文档编号:30800594
- 上传时间:2023-10-27
- 格式:PPT
- 页数:38
- 大小:2.54MB
第7章-Scrapy爬虫.ppt
《第7章-Scrapy爬虫.ppt》由会员分享,可在线阅读,更多相关《第7章-Scrapy爬虫.ppt(38页珍藏版)》请在冰豆网上搜索。
Scrapy爬虫,2023/10/27,1,Scrapy爬取文本信息,目录,认识Scarpy,2,定制中间件,3,小结,4,Scrapy是一个爬虫框架而非功能函数库,简单地说,它是一个半成品,可以帮助用户简单快速地部署一个专业的网络爬虫。
Scrapy爬虫框架主要由引擎(Engine)、调度器(Scheduler)、下载器(Downloader)、Spiders、ItemPipelines、下载器中间件(DownloaderMiddlewares)、Spider中间件(SpiderMiddlewares)这7个组件构成。
了解Scrapy爬虫框架,引擎负责控制数据流在系统所有组件中的流向,并在不同的条件时触发相对应的事件。
这个组件相当于爬虫的“大脑”,是整个爬虫的调度中心。
2.调度器(Scheduler)调度器从引擎接受请求并将它们加入队列,以便之后引擎需要它们时提供给引擎。
初始爬取的URL和后续在网页中获取的待爬取的URL都将放入调度器中,等待爬取,同时调度器会自动去除重复的URL。
如果特定的URL不需要去重也可以通过设置实现,如post请求的URL。
了解Scrapy爬虫框架,1.引擎(Engine),下载器的主要功能是获取网页内容,提供给引擎和Spiders。
4.SpidersSpiders是Scrapy用户编写用于分析响应,并提取Items或额外跟进的URL的一个类。
每个Spider负责处理一个(一些)特定网站。
了解Scrapy爬虫框架,3.下载器(Downloader),ItemPipelines主要功能是处理被Spiders提取出来的Items。
典型的处理有清理、验证及持久化(例如存取到数据库中)。
当网页被爬虫解析所需的数据存入Items后,将被发送到项目管道(Pipelines),并经过几个特定的次序处理数据,最后存入本地文件或数据库6.下载器中间件(DownloaderMiddlewares)下载器中间件是一组在引擎及下载器之间的特定钩子(specifichook),主要功能是处理下载器传递给引擎的响应(response)。
下载器中间件提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。
通过设置下载器中间件可以实现爬虫自动更换user-agent、IP等功能。
了解Scrapy爬虫框架,5.ItemPipelines,Spider中间件是一组在引擎及Spiders之间的特定钩子(specifichook),主要功能是处理Spiders的输入(响应)和输出(Items及请求)。
Spider中间件提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。
各组件之间的数据流向如图所示。
了解Scrapy爬虫框架,7.Spider中间件(SpiderMiddlewares),数据流在Scrapy中由执行引擎控制,其基本步骤流程如下。
引擎打开一个网站,找到处理该网站的Spiders,并向该Spiders请求第一个要爬取的URL。
引擎将爬取请求转发给调度器,调度指挥进行下一步。
引擎向调度器获取下一个要爬取的请求。
调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求方向)转发给下载器一旦网页下载完毕,下载器生成一个该网页的响应,并将其通过下载中间件(返回响应方向)发送给引擎。
引擎从下载器中接收到响应并通过Spider中间件(输入方向)发送给Spiders处理。
Spiders处理响应并返回爬取到的Items及(跟进)新的请求给引擎。
引擎将(Spiders返回的)爬取到的Items给ItemPipeline,将(Spiders返回的)请求给调度器。
从第2步重复直到调度器中没有更多的URL请求,引擎关闭该网站。
了解Scrapy爬虫框架,Scrapy通过命令行进行控制,Scrapy提供了多种命令,用于多种目的,并且每个命令都接收一组不同的参数和选项。
熟悉Scrapy常用命令,除了全局命令外,Scrapy还提供了专用于项目的项目命令。
熟悉Scrapy常用命令,1,Scrapy爬取文本信息,目录,认识Scarpy,2,定制中间件,3,小结,4,使用Scrapy框架进行网页数据爬取第一步就是启动爬虫,使用Scrapy提供的startprject命令即可创建一个爬虫项目,其语法格式如下。
startprject命令常用参数的作用及其解释如所表所示。
创建Scrapy爬虫项目,scrapystartprojectproject_dir,在目录“E:
第7章任务程序code”下,创建一个名为“TipDMSpider”的Scrapy爬虫项目,创建完成后,在“E:
第7章任务程序code”下就会生成一个名为TipDMSpider的文件夹,其目录结构如图所示。
创建Scrapy爬虫项目,图中需要用户自定义的目录与脚本文件的名称、作用,如表所示。
创建Scrapy爬虫项目,爬虫的主要目标就是从网页这一非结构化的数据源中提取结构化的数据。
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),DataFrame函数的常用参数及其说明如表所示。
转换为DataFrame后即可使用to_csv方法轻松地将数据存储至csv文件。
to_csv方法的语法格式如下。
修改items/piplines脚本,DataFrame.to_csv(path_or_buf=None,sep=,na_rep=”,columns=None,header=True,index=True,index_label=None,mode=w,encoding=None),to_csv方法的常用参数及其说明如表所示。
修改items/piplines脚本,使用to_sql方法能够轻松地将数据存储至数据库,其语法格式如下。
修改items/piplines脚本,DataFrame.to_sql(name,con,schema=None,if_exists=fail,index=True,index_label=None,dtype=None),to_sql方法的常用参数及其说明如表所示。
创建TipDMSpider项目后,爬虫模块的代码都放置于spiders文件夹中。
创建之初,目录下仅有一个“_init_.py”文件,并无其它文件,对于初学者而言极有可能无从下手。
使用genspider命令,可以解决这一问题,其语法格式如下。
genspider命令常用参数的作用及其解释如所表示。
编写spider脚本,scrapygenspider-ttemplate,此时,一个爬虫模块的基本结构已经搭好,其功能类似于网页下载。
在TipDMSpider项目目录下运行crawl命令即可启动爬虫,crawl命令的语法格式如下。
parse方法负责解析返回的数据并提取数据,以及生成需要进一步处理的URL的Reponse对象。
在此之前,需要根据爬取目标,设计网页爬取的逻辑。
本次爬取的目标是“”的泰迪动态栏目中所有的信息。
根据这一目标,爬取的逻辑顺序如图所示。
编写spider脚本,scrapycrawl,在TipDMSpider类的prase方法中,其中一个参数是response,对传入的响应直接使用XPath和css方法即可根据对应的规则解析网页。
在TipDMSpider项目中使用XPath进行网页解析,首先需要分析摘要网页网址的规律。
通过规律能够较快获得所有的摘要网页的网址,从图所示的网页源码可以看出,从第2页开始,网页的URL发生改变的是index与html之间的网页编号,如第二页的网页URL后面部分是index_2.html,第3页则是index_3.html。
故只需获得总共的网页数目,就可以知道所有摘要网页的网址。
编写spider脚本,由于prase方法默认响应srart_urls中的网址,同时不同网页需要解析的内容也不同,所以后续的解析需要通过调用其他方法来实现,使用Scrapy库中的http模块下的Request函数用于回调。
Request函数的语法格式如下。
编写spider脚本,classscrapy.http.Request(url,callback,method=GET,headers,body,cookies,meta,encoding=utf-8,priority=0,dont_filter=False,errback,flags),Request函数常用的参数及其说明如所表示。
编写spider脚本,Scrapy设置允许自定义所有Scrapy组件,包括核心、扩展、管道和爬虫本身。
设置的基础结构提供键值映射的全局命名空间,代码可以使用它从中提取配置值。
用户可以通过不同的机制来填充设置,这些设置也是选择当前活动的Scrapy项目的机制之一。
在TipDMSpider项目的默认settings脚本中共有25个设置,每个设置的详细情况如表所示。
修改settings脚本,修改settings脚本,修改settings脚本,修改settings脚本,1,Scrapy爬取文本信息,目录,认识Scarpy,2,定制中间件,3,小结,4,每个中间件组件都是一个Python类,下载器中间件定义了process_request、process_response、process_exception中的一种或多种方法。
process_request方法将会被所有通过下载器中间件的每一个请求调用。
它具有request和spider两个参数,这两个参数的说明如表所示。
定制下载器中间件,1.编写下载器中间件脚本,process_request方法返回值则有4种,每种返回值的作用说明如表所示。
定制下载器中间件,除了定制的下载器中间件,在Scrapy框架中已经默认提供并开启了众多下载器中间件,内置的下载器中间件设置DOWNLOADER_MIDDLEWARES_BASE中的各中间件说明及其顺序如表所示。
定制下载器中间件,定制下载器中间件,激活下载器中间件组件,需要将其加入到settings脚本下的DOWNLOADER_MIDDLEWARES设置中。
这个设置是一个字典(dict),键为中间件类的路径,值为其中间件的顺序(order),同时会根据顺序值进行排序,最后得到启用中间件的有序列表:
第一个中间件最靠近引擎,最后一个中间件最靠近下载器。
在settings脚本中,对DOWNLOADER_MIDDLEWARES设置进行修改后,会与Scrapy内置的下载器中间件设置DOWNLOADER_MIDDLEWARES_BASE合并,但并不会覆盖。
若要取消Scrapy默认在DOWNLOADER_MIDDLEWARES_BASE打开的下载器中间件,可在DOWNLOADER_MIDDLEWARES中将该中间件的值设置为0。
定制下载器中间件,2.激活中间件,Spider中间件是介入到Scrapy中的Spiders处理机制的钩子框架,可以插入自定义功能来处理发送给Spiders的响应,以及Spiders产生的Items和请求。
根据Spider中间件的功能不同,需要用到的方法不同,很多时候Scrapy默认提供并开启的Spider中间件就已经能够满足多数需求。
内置的下载器中间件设置SPIDER_MIDDLEWARES_BASE中的各中间件说明及其顺序如表所示。
定制Spider中间件,1.Scrapy自带的Spider中间件,激活Spider中间件组件基本与激活下载器中间件相同,需要将定制的Spider中间件加入到settings脚本下的SPIDER_MIDDLEWARES设置中。
这个设置是一个字典(dict),键为中间件类的路径,值为其中间件的顺序(order),同时会根据顺序值进行排序,最后得到启用中间件的有序列表:
第一个中间件最靠近引擎,最后一个中间件最靠近Spiders。
另外,针对Spider中间件,Scrapy同样内置了中间件配置SPIDER_MIDDLEWARES_BASE,该设置也不能覆盖,在启用时还是会结合SPIDER_MIDDLEWARES设置。
若要取消Scrapy默认在SPIDER_MIDDLEWARES_BASE打开的Spider中间件,同样需要在SPIDER_MIDDLEWARES设置中将中间件的值设置为0。
定制Spider中间件,2.激活Spider中间件,1,Scrapy爬取文本信息,目录,认识Scarpy,2,定制中间件,3,小结,4,本章以Scrapy框架爬取网站下的泰迪动态为线索,主要介绍了如下内容。
Scrapy的数据流向,框架,以及框架各组成部分的作用。
Scrapy的常用命令及其作用。
创建Scrapy爬虫项目,创建爬虫模板的方法。
根据项目最终目标修改items/piplines脚本。
编写spider脚本,解析网页。
修改setting脚本,实现下载延迟设置等。
定制下载中间件,实现随机选择访问USER_AGENT与IP。
打开与关闭Scrapy提供的Spider中间件。
小结,配套的课程视频、实训资源、实训环境等资源:
https:
/edu.tipdm.org/course/179,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Scrapy 爬虫