版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章初识网络爬虫框架Scrapy《Python网络爬虫基础教程》学习目标/Target了解什么是Scrapy框架,能够复述出Scrapy框架的优点与缺点熟悉Scrapy框架的架构,能够归纳Scrapy框架内每个组件的功能与职责熟悉Scrapy框架的运作流程,能够归纳Scrapy框架的运作流程掌握Scrapy框架的安装方式,能够独立安装Scrapy框架,并能解决安装过程中出现的常见问题掌握Scrapy框架的基本操作,能够灵活应用Scrapy框架新建项目和制作爬虫章节概述/Summary随着网络爬虫技术的普及,互联网中涌现出多种爬虫框架,这些框架封装了爬虫开发中常用的功能和通用业务逻辑,开发者基于框架只需编写少量业务相关代码,即可快速实现一个功能完善的网络爬虫。Scrapy作为当前Python生态中备受瞩目的爬虫框架,凭借其模块化设计、高效的异步处理能力和丰富的扩展机制,能显著提升爬虫开发效率,深受开发者青睐。本章将围绕Scrapy框架的核心概念、运作流程及基础使用展开介绍。目录/Contents9.19.29.3Scrapy框架简介Scrapy框架的架构Scrapy框架的运作流程目录/Contents9.49.59.6Scrapy框架的安装Scrapy框架的基本操作实践项目:采集黑马程序员视频库的视频信息Scrapy框架简介9.1了解什么是Scrapy框架,能够复述出Scrapy框架的优点与缺点学习目标9.1Scrapy框架简介在实际开发中,使用网络爬虫框架替代手动编写完整网络爬虫程序已成为主流选择。这类框架通过统一爬虫实现流程、集成通用功能,大幅减少了开发者的重复工作。开发者只需关注爬虫的核心逻辑,比如数据提取、链接生成,即可高效构建功能完善的网络爬虫程序,同时显著提升程序的健壮性。9.1Scrapy框架简介优秀的网络爬虫框架犹如数据时代的智能挖掘机,能够帮助开发者高效地从互联网海量信息中"挖掘"有价值的数据。Scrapy是Python生态中强大的开源爬虫框架,专为高效数据采集而设计。该框架基于Twisted的异步架构支持高并发抓取,可快速处理数千网页。框架提供完整的网络爬虫开发生命周期管理,包括智能调度、中间件处理、数据解析和持久化存储等核心组件,通过简单配置即可构建专业的网络爬虫程序。此外,该框架内置Xpath或CSS选择器简化数据提取,灵活的管道机制支持自定义处理逻辑,能够结合Selenium处理动态内容,是开发企业级网络爬虫的首选工具。9.1Scrapy框架简介Scrapy框架的功能如此强大,离不开其自身具备的如下几个优点。9.1Scrapy框架简介具有丰富的文档、良好的社区以及庞大的用户群体。灵活调整并发线程数量,高效处理大量请求。采用可读性很强的XPath技术解析网页,解析速度更加快速。具有统一的中间件,可以对数据进行过滤与处理。支持Shell工具,方便开发人员独立调试程序。管道系统支持多种存储格式,可以灵活存入数据库。高度可定制,经过简单改造后可以实现特定功能的网络爬虫。9.1Scrapy框架简介虽然Scrapy框架功能强大,但自身仍存在几个缺点。原生不支持分布式爬虫。去重机制消耗内存,效率较低。无法直接处理JavaScript动态渲染的页面内容。针对这些不足,社区开发了丰富的插件库。例如,Scrapy-Redis解决了分布式爬虫问题,Scrapy-Splash则提供了JavaScript渲染支持。这些插件进一步提升了Scrapy的适用性与灵活性,使其在复杂爬虫场景中仍能保持卓越表现。关于Scrapy-Redis的知识,我们将在第11章进行介绍。Scrapy框架的架构9.2熟悉Scrapy框架的架构,能够归纳Scrapy框架内每个组件的功能与职责学习目标9.2Scrapy框架的架构Scrapy框架之所以能够高效完成互联网数据的采集任务,得益于其精心设计的组件化架构体系。该框架采用模块化的设计思想,将数据采集的流程分解为多个功能明确的核心组件,这些组件通过标准化的接口相互协作,形成一个完整的数据采集流水线。每个组件都专注于特定功能的实现,既保证了系统的高内聚性,又通过松耦合的设计提供了良好的扩展能力。Scrapy框架的架构如图所示。9.2Scrapy框架的架构Scrapy框架中包含的组件。9.2Scrapy框架的架构ScrapyEngine01Scheduler02Downloader03Spiders04ItemPipeline05DownloaderMiddlewares06SpiderMiddlewares07Scrapy框架中主要包含ScrapyEngine(引擎)、Scheduler(调度器)、Downloader(下载器)、Spiders(爬虫)、ItemPipeline(管道)5个组件,还包含DownloaderMiddlewares(下载中间件)、SpiderMiddlewares(爬虫中间件)两个中间件。关于这些组件和中间件的介绍如下。ScrapyEngine:作为框架的“中枢神经系统”,ScrapyEngine负责协调Scheduler、Spiders、ItemPipeline、Downloader这几个组件间的通信与数据流转,控制整个爬取流程的执行时序。Scheduler:负责接收ScrapyEngine发送的Requests(请求),并按照预设的规则对请求进行排序和入队管理,在ScrapyEngine需要时按需调度请求,确保网络请求能够有序执行。Downloader:负责下载由ScrapyEngine发送的所有Requests,从目前服务器获取Responses(响应)后将数据回传至ScrapyEngine,由ScrapyEngine转发给Spiders进行后续处理。9.2Scrapy框架的架构Spiders:负责解析Downloader返回的所有Responses,从Responses中提取结构化数据并封装为Items对象,识别需要跟进的新URL,生成新的请求提交给ScrapyEngine,重新进入调度队列。ItemPipeline:负责接收Spiders输出的Items对象,执行数据清洗、验证、去重、存储(如写入数据库或文件)等后期处理逻辑,支持灵活扩展自定义数据处理规则。DownloaderMiddlewares:位于Downloader和ScrapyEngine之间,允许在请求发送前和响应接收后注入自定义逻辑,比如请求头伪装、Cookies管理、代理IP轮换等,扩展网络请求的处理能力。SpiderMiddlewares:位于Spiders和ScrapyEngine之间,支持在响应解析前(预处理)或请求生成后(后处理)插入自定义逻辑,比如请求过滤、响应修改等,灵活控制爬虫的解析流程。9.2Scrapy框架的架构值得一提的是,ScrapyEngine、Scheduler、Downloader组件的业务逻辑由框架预先实现,无须开发者进行任何修改;Spiders和ItemPipeline组件的业务逻辑由业务需求决定,需要开发者根据业务需求编写;DownloaderMiddlewares、SpiderMiddlewares这两个中间件提供灵活扩展点,常规场景下可使用默认实现,复杂反爬场景需按需定制。总体来说,开发者只需聚焦Spiders和ItemPipeline的业务逻辑,就能快速构建功能完整的网络爬虫程序。9.2Scrapy框架的架构Scrapy框架的运作流程9.3熟悉Scrapy框架的运作流程,能够归纳Scrapy框架的运作流程学习目标9.3Scrapy框架的运作流程Scrapy框架运作流程9.3Scrapy框架的运作流程Scrapy框架的运作流程9.3Scrapy框架的运作流程(1)Spiders根据初始URL生成Requests,这些初始URL来源于start_urls列表或自定义的start_requests()方法等逻辑,随后将Requests传递给ScrapyEngine。(2)ScrapyEngine将Requests提交给Scheduler,由Scheduler放入请求队列进行统一管理。(3)Scheduler对请求进行优先级排序和去重处理后,将下一个待处理的Requests交给ScrapyEngine。(4)ScrapyEngine通过DownloaderMiddlewares将Requests转发给Downloader执行下载。Scrapy框架的运作流程9.3Scrapy框架的运作流程Scrapy框架的运作流程(5)完成页面下载后,Downloader生成包含响应内容和元数据的Responses,经过DownloaderMiddlewares将Responses返回给ScrapyEngine。(6)ScrapyEngine通过SpiderMiddlewares将Responses转交给Spiders,Spiders按照预定义的解析方法处理响应内容。(7)Spiders处理Responses后会产生两种结果,分别是Items(提取的结构化数据)和Requests(新发现的待抓取URL),并将处理后的Items或Requests交给ScrapyEngine。(8)ScrapyEngine将Items移交给ItemPipeline进行清洗、验证和存储,同时将新的Requests提交给Scheduler。重复步骤(1)~步骤(8),直到Scheduler中没有新的Requests为止。多学一招ScrapyEngine:Hi!Spiders,你要处理哪一个网站?Spiders:领导要我处理。ScrapyEngine:你把第一个需要处理的URL给我吧。Spiders:给你,第一个URL是。ScrapyEngine:Hi!Scheduler,我这有一个请求(根据以上URL封装的Request),你帮我排序入队一下。Scheduler:好的,正在处理,你等一下。ScrapyEngine:Hi!Scheduler,把你处理好的请求给我。Scheduler:给你,这是我处理好的请求。ScrapyEngine:Hi!Downloader,你按照领导的Downloadermiddlewares的设置,帮我按这个请求下载些东西。Scrapy拟人小剧场从加粗一行的对白开始重复交流,直到处理完老大需要的全部信息。多学一招Downloader:好的,给你,这是下载好的东西(如果下载失败,则这句话会换成“Sorry,这个请求下载失败了”,然后ScrapyEngine会告诉Scheduler“这个请求下载失败了,你记录一下,我们待会儿再下载”)。ScrapyEngine:Hi!Spider,这是下载好的东西,并且按照老大的要求已被DownloaderMiddlewares处理过,你自己再处理一下。Spiders:Hi!ScrapyEngine,我这里有两个结果,一个是我需要跟进的URL,另一个是我获取的Items。ScrapyEngine:Hi!ItemPipeline,我这儿有个Items需要你,帮助处理一下!Scheduler,这是需要跟进的URL,你帮我处理下。ItemPipeline和Scheduler:好的,现在就做!从加粗一行的对白开始重复交流,直到处理完领导需要的全部信息。Scrapy拟人小剧场Scrapy框架的安装9.4掌握Scrapy框架的安装方式,能够独立安装Scrapy框架,并能解决安装过程中出现的常见问题学习目标9.4Scrapy框架的安装Scrapy是一个第三方框架。如果要使用该框架开发网络爬虫程序,则需要先在计算机中安装该框架。下面以Windows10操作系统为例,分别对安装Scrapy的过程以及常见安装问题进行介绍。9.4Scrapy框架的安装在命令提示符窗口中使用pip工具安装Scrapy框架。输入的命令如下。pipinstallscrapy==2.13.29.4Scrapy框架的安装1.安装Scrapy执行上述命令,开始安装Scrapy框架及其依赖,安装完成后,在命令提示符窗口中输入scrapy。按下回车键后输出的信息如下。(venv)PSE:\图书资料\21-基础爬虫第2版\03-制作资源\源代码>scrapyScrapy2.13.2-noactiveprojectUsage:scrapy<command>[options][args]Availablecommands:……Use"scrapy<command>-h"toseemoreinfoaboutacommand在Windows10操作系统下安装Scrapy框架的过程往往不会一帆风顺,经常会遇到一些问题导致安装失败。常见的两个问题是缺少MicrosoftVisualC++14.0组件和Twisted安装出错。关于它们的介绍如下。(1)缺少MicrosoftVisualC++14.0组件。error:MicrosoftVisualC++14.0isrequired.Getitwith"MicrosoftVisualC++BuildTools":/visual-cpp-build-tools9.4Scrapy框架的安装2.常见安装问题针对这个问题,我们需要单独安装MicrosoftVisualC++14.0组件进行解决。在浏览器中进入下载MicrosoftVisualC++14.0组件的页面,如图所示。9.4Scrapy框架的安装2.常见安装问题在图中,将鼠标移到下拉菜单“下载最新版VisualStudio”上方打开下拉菜单,在该菜单中选择“Community2022”开始下载,下载完成后可以看到安装包。双击安装包进行安装,在安装过程中全部保持默认选项即可,无须进行任何修改。需要注意的是,我们在VisualStudio2022组件安装完成之后需要重启计算机。(2)Twisted安装出错。由于Scrapy框架使用了异步网络框架Twisted,所以在安装Scrapy的过程中需要安装Twisted。若命令提示符窗口中出现如下错误信息,则是因为Twisted安装出错。fatalerrorC1083:Cannotopenincludefile:'basetsd.h':Nosuchfileordirectoryerror:command'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio14.0\\VC\\BIN\\x86_amd64\\cl.exe'failedwithexitstatus29.4Scrapy框架的安装2.常见安装问题9.4Scrapy框架的安装针对这个问题,可以通过单独安装Twisted框架这种方式予以解决。首先在浏览器中访问Twisted的下载页面,具体如图所示。2.常见安装问题9.4Scrapy框架的安装下载页面显示了Twisted框架不同类别的安装包,截止本书完稿时,Twisted框架的最新版本为25.5.0。单击标注的twisted-25.5.0-py3-none-any.whl,然后将Wheel包下载到本地之后,打开命令提示符窗口,切换至Twisted安装文件所在的目录,执行以下命令进行安装。2.常见安装问题pipinstalltwisted-25.5.0-py3-none-any.whl当出现以下提示信息时,说明Twisted框架安装成功。Installingcollectedpackages:TwistedSuccessfullyinstalledtwisted-25.5.0Scrapy框架的基本操作9.5掌握爬虫项目创建的方式,能够通过Scrapy命令创建爬虫项目学习目标9.5.1新建Scapy项目使用Scrapy框架开发网络爬虫程序一般包含4个步骤,分别为新建Scrapy项目、明确采集目标、制作爬虫和永久存储数据。9.5.1新建Scapy项目使用Scrapy框架开发网络爬虫的第一步是新建Scrapy项目,这一步将框架的核心组件进行系统整合,为后续开发提供统一的管理平台。使用Scrapy新建项目需要使用如下命令。9.5.1新建Scapy项目scrapystartproject项目名称例如,使用创建爬虫项目创建mySpider爬虫项目。scrapystartprojectmySpider新建项目命令执行的结果如图所示。9.5.1新建Scapy项目由图可知,E盘指定目录下新增了刚刚创建的项目mySpider。为了方便查看mySpider项目的目录结构,可以通过PyCharm工具打开mySpider项目。此时在界面左侧可以看到mySpider项目包含了若干自动生成的文件或目录。mySpider项目的目录结构如图所示。9.5.1新建Scapy项目mySpider/:项目的核心Python模块,可通过模块引用方式调用。mySpider/spiders/:存放爬虫代码的目录。mySpider/items.py:项目的实体文件,用于规范待提取数据的字段结构。mySpider/middlewares.py:项目的中间件文件,可在此定义爬虫中间件或下载中间件的自定义逻辑。mySpider/pipelines.py:项目的管道文件,用于实现数据的后期处理逻辑,比如清洗、验证、存储到数据库等。mySpider/settings.py:项目的全局设置文件,用于存储项目的设置信息。scrapy.cfg:项目的部署配置文件,主要用于指定项目的核心模块路径及部署相关参数。明确爬虫项目中明确采集目标,能够在Scrapy中添加爬取字段学习目标9.5.2明确采集目标使用Scrapy框架开发网络爬虫的第二步是明确采集目标,这一步的核心主要是在采集网页数据之前明确采集的目标数据。以mySpider项目为例,它要采集的目标数据是某IT培训公司的讲师信息,包括讲师的姓名、级别和履历,具体如图所示。9.5.2明确采集目标通过查看网页源代码可以获取所有讲师的详细数据,但是这些数据往往分散在网页的不同位置。为了规范采集流程并确保数据结构化与完整性,Scrapy提供了scrapy.Item基类专门用于封装实体数据。该类本质上是Python字典的增强版本,除具备字典的基本功能外,还提供了数据校验、字段元数据定义等额外机制,能有效减少字段缺失或类型错误等问题。9.5.2明确采集目标实际使用时,我们需要定义一个继承自scrapy.Item的子类,并在该子类中添加类型为scrapy.Field的类属性。每个属性对应一个待采集的数据字段。例如前文提到的讲师姓名、级别和履历,便分别对应一个独立的字段属性。在PyCharm中打开mySpider目录下的items.py文件,可以看到Scrapy框架已经在items.py文件中自动生成继承自scrapy.Item的MyspiderItem类,该类的原始代码如下。9.5.2明确采集目标#Defineherethemodelsforyourscrapeditems##Seedocumentationin:#/en/latest/topics/items.htmlimportscrapyclassMyspiderItem(scrapy.Item):#definethefieldsforyouritemherelike:#name=scrapy.Field()pass此时只需要在MyspiderItem类中添加3个对应数据字段的属性,添加完成后的MyspiderItem类的代码如下。9.5.2明确采集目标classMyspiderItem(scrapy.Item):name=scrapy.Field()#表示讲师姓名
level=scrapy.Field()#表示讲师级别
resume=scrapy.Field()#表示讲师履历在上述代码中,MyspiderItem类中添加了3个属性name、level和resume,分别表示讲师姓名、讲师级别和讲师履历,精准映射了我们需要采集的讲师详细信息。掌握制作Scrapy爬虫,能够使用Scrapy提取指定数据学习目标9.5.3制作爬虫9.5.3制作爬虫使用Scrapy框架开发网络爬虫的第三步是制作爬虫,主要是从抓取的网页数据中提取出最终要采集的数据。制作爬虫的流程一般可以分为创建爬虫、抓取网页数据、解析网页数据3步,具体内容如下。1.创建爬虫创建爬虫的核心是为其指定唯一标识名称和限定爬取范围,即允许抓取的域名。创建爬虫的命令格式如下。scrapygenspider爬虫名称"爬取域"9.5.3制作爬虫1.创建爬虫例如,在命令窗口中切换当前的目录为子目录mySpider/spiders,创建一个名称为itcast、爬取域为的爬虫,具体代码如下。scrapygenspideritcast""程序成功地创建了爬虫itcast,并将该爬虫保存至mySpider/spiders目录下。1.创建爬虫在PyCharm中打开mySpider/spiders目录,可以看到新创建的itcast.py,该文件的内容已经自动生成。importscrapyclassItcastSpider(scrapy.Spider):name='itcast'allowed_domains=['']start_urls=['/']defparse(self,response):passItcastSpider是自动生成的类,它继承自scrapy.Spider类。9.5.3制作爬虫9.5.3制作爬虫1.创建爬虫ItcastSpider类中包含了3个属性和1个方法,关于这些属性和方法的介绍如下。name属性:表示爬虫的名称。爬虫的名称必须是唯一的,用于在命令行或配置中引用该爬虫。allowed_domains属性:用于限定爬虫可以访问的域名范围,自动过滤不属于该域名范围内的URL。start_urls属性:表示起始URL的元组或列表,爬虫启动时会优先访问这些地址。parse(self,response)方法:用于解析网页数据,并返回提取的数据或者新生成的要跟进的URL。该方法会在初始URL完成下载后被调用,被调用的时候传入从该URL返回的Response对象作为唯一参数。9.5.3制作爬虫1.创建爬虫对刚刚生成的ItcastSpider类进行修改,为爬虫指定要抓取的初始URL,具体代码如下。start_urls=['/channel/teacher.shtml']然后修改parse()方法,在该方法中将response中的内容写入到本地的teacher_info.txt文件中,具体代码如下。defparse(self,response):withopen("teacher_info.txt","w",encoding="utf-8")asfile:file.write(response.text)9.5.3制作爬虫2.抓取网页数据确定了初始URL之后就可以运行爬虫,让爬虫根据该URL抓取网页数据了。运行爬虫的命令格式如下。scrapycrawl爬虫名称例如,在命令行窗口中切换当前目录为itcast.py文件所在的目录,运行爬虫itcast,命令如下。scrapycrawlitcast需要说明的是,Scrapy项目可以包含多个爬虫。这些爬虫在创建时都需要指定name属性的值,也就是说给它们起个名字,确保执行每个爬虫时能够进行区分。9.5.3制作爬虫2.抓取网页数据执行以上命令,若命令窗口中出现如下提示信息,则表明抓取执行完成。......2025-06-1915:50:17[scrapy.middleware]INFO:Enableditempipelines:'scheduler/enqueued/memory':3,'start_time':datetime.datetime(2025,6,19,7,50,17,418845,tzinfo=datetime.timezone.utc)}2025-06-1915:50:18[scrapy.core.engine]INFO:Spiderclosed(finished)9.5.3制作爬虫2.抓取网页数据mySpider/spiders目录中增加了一个teacher_info.txt文件,打开该文件后可以看到抓取到的网页源代码。teacher_info.txt文件内容如下。9.5.3制作爬虫3.解析网页数据通过前面两个步骤,我们已经成功抓取网页的源代码,紧接着就可以从源代码中提取目标数据。在提取之前,我们需要对源代码的结构进行分析,明确目标数据所在阶段及其上下文关系。在讲师介绍页面右击查看网页源代码,滚动至讲师信息部分,具体如图所示。元素<h3>的文本“罗老师”是讲师姓名,元素<h4>的文本“高级讲师”是讲师级别,元素<p>的文本“11年JAVA开发经验,……”是讲师履历,并且这些元素都属于同一级别,均位于属性class的值为li_txt的元素<div>中。9.5.3制作爬虫frommySpider.itemsimportMyspiderItem3.解析网页数据我们继续查看其他元素,可以看到其他讲师的信息也处于类似的结构中,这里可以使用XPath技术提取数据。接下来,为爬虫itcast添加解析网页数据的代码,并将解析后的数据封装成MyspiderItem类的对象,每个对象代表着一个讲师的信息。首先,在mySpider/spiders目录的itcast.py文件中,导入mySpider/items.py中定义的MyspiderItem类,具体代码如下。9.5.3制作爬虫defparse(self,response):items=[]#存储所有讲师的信息
foreachinresponse.xpath("//div[@class='li_txt']"):
item=MyspiderItem()#创建MyspiderItem类的对象
name=each.xpath("h3/text()").extract()level=each.xpath("h4/text()").extract()resume=each.xpath("p/text()").extract()#将每个讲师的信息封装成MyspiderItem类的对象
item["name"]=name[0]item["level"]=level[0]item["resume"]=resume[0]items.append(item)#直接返回数据,而不交给管道组件
returnitems3.解析网页数据然后,修改ItcastSpider类的parse()方法,将解析后的目标数据封装成一个MyspiderItem对象,并且将所有的MyspiderItem对象保存到一个列表中,具体代码如下。9.5.3制作爬虫3.解析网页数据最后,在命令行窗口中再次使用“scrapycrawlitcast”命令运行爬虫itcast,可以看到命令行窗口中打印了获取到的讲师信息。[单击查看源码]多学一招此前我们一直在命令窗口中运行爬虫itcast,其实,也可以直接在PyCharm中运行爬虫itcast,具体的实现过程如下。(1)打开mySpider项目,在该项目中新建文件start.py,并在文件中添加如下代码。在PyCharm中直接运行爬虫fromscrapyimportcmdlinecmdline.execute("scrapycrawlitcast".split())这段代码的作用等同于在命令窗口中执行scrapycrawlitcast命令,可以直接触发网络爬虫程序的运行。(2)在PyCharm中运行start.py文件,便可以在控制台中看到输出的讲师信息。多学一招Scrapyshell是一个交互式终端工具,主要用于在不启动完整爬虫的情况下快速调试爬取逻辑或验证解析规则。无论是测试XPath路径表达式、CSS选择器的有效性,还是调试数据提取代码,它都能避免每次修改后运行爬虫的重复流程,极大提升开发与调试效率,是爬虫开发阶段的实用工具。ScrapyShell多学一招Scrapyshell默认使用标准Python终端,但如果系统中已安装IPython,会自动优先调用IPython终端。这是由于IPython提供了更丰富的交互功能,如代码自动补全、语法高亮、命令历史记录等,能显著优化调试体验。下面分别对启用Scrapyshell和使用Scrapyshell进行介绍。ScrapyShell多学一招启用ScrapyShell启用Scrapyshell的命令如下所示。scrapyshell<URL>#URL是待抓取URL地址ScrapyShell多学一招启用ScrapyShell例如,在Windows命令行窗口中输入“scrapyshell”命令即可启用Scrapyshell访问百度首页,并且终端会输出大量提示信息。C:\Users\admin>scrapyshell2021-08-2314:54:29[scrapy.utils.log]INFO:Scrapy2.5.0started(bot:scrapybot).......(省略)2021-08-2314:54:30[scrapy.core.engine]INFO:Spideropened2021-08-2314:54:33[scrapy.core.engine]DEBUG:Crawled(200)<GET>(referer:None)表示访问网页结果为成功ScrapyShell多学一招使用ScrapyShellScarpyshell可以看成是一个在Python终端(或IPython)基础上添加了扩充功能的Python控制台程序,这些扩充包括若干功能函数和内置对象。(1)功能函数shelp():输出可用对象和功能函数的帮助列表。fetch(request_or_url):根据给定的request或URL获取一个新的response对象,并且更新原有的相关对象。view(response):使用本机的浏览器打开给定的response对象。该函数会在response的body中添加一个<base>标签,使得外部链接(例如图片及CSS)能正确显示。要注意的是,该函数还会在本地创建一个临时文件,而且该临时文件不会被自动删除。ScrapyShell多学一招使用ScrapyShell(2)内置对象当使用Scrapyshell下载指定页面时,会生成一些可用的内置对象。关于这些内置对象的介绍如下。crawler:Scrapy项目的核心爬虫对象,封装了运行所需的核心组件,负责统筹爬虫的整体生命周期管理,可通过它访问爬虫的配置、信号系统及其他核心功能。spider:默认的爬虫对象,定义了爬取逻辑及响应解析的方法。request:发送到服务器的请求对象,包含下载器向目标服务器发送的所有信息。response:服务器返回的响应对象,包含了完整的HTTP响应内容。settings:Scrapy项目的配置对象,用于存储当前项目的所有配置信息。ScrapyShellScrapyShell多学一招使用ScrapyShell(2)内置对象当Scrapyshell载入页面后,会自动生成一个封装服务器响应信息的本地response变量,通过该变量可以便捷地访问响应信息相关内容。若在终端输入response.body,则可以查看响应的二进制原始数据;若在终端输入response.headers,则可以获取响应头信息;若在终端输入response.selector,则将获取一个基于响应内容初始化的Selector对象(适用于解析HTML或XML),此时可以通过response.selector.xpath()或response.selector.css()方法查询并提取内容。Scrapy还提供了更简洁的方式进行提取,直接使用response.xpath()或response.css()即可实现与上述方法相同的提取功能,无须显式调用selector属性。ScrapyShell掌握永久存储数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中沟通技巧提升主题班会说课稿2025
- 初中生历史探究说课稿
- 糖尿病自我管理访谈的健康信念主题解析
- 初中七年级青春烦恼主题班会说课稿
- 2026年行楷书法老师说课稿
- 精神科临床路径的资源标准化实践
- 精准医学科普效果的量化评估体系
- 2026年幼儿园食堂库房管理培训记录
- 初中“2025”教师节主题班会说课稿
- 2026年教育创新-基于设计思维的创客教育课程开发
- 2026-2030中国压缩空气储能行业竞争格局与投资可行性战略规划研究报告
- 资金确权协议书
- 2026届江苏省南京市高三二模英语试题(含答案和音频)
- 2026版公司安全生产管理制度及文件汇编
- 2026年中国铁路各局集团招聘试题及答案解析
- 湖北省2026届高三(4月)调研模拟考试 英语答案
- 2026天津市津鉴检测技术发展有限公司社会招聘工作人员3人考试模拟试题及答案解析
- 2026形势与政策课件中国风范 大国担当-在世界变局中推动构建新型大国关系
- (2025年)湖北省普通高中学业水平考试政治真题卷及答案
- 某钢铁厂成本核算细则
- 2026年基金从业资格证之私募股权投资基金基础知识测试卷含答案详解(巩固)
评论
0/150
提交评论