《数据采集技术》课件-项目5:Scrapy框架_第1页
《数据采集技术》课件-项目5:Scrapy框架_第2页
《数据采集技术》课件-项目5:Scrapy框架_第3页
《数据采集技术》课件-项目5:Scrapy框架_第4页
《数据采集技术》课件-项目5:Scrapy框架_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用Scrapy创建爬虫程序——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

Scrapy框架简介01020304知识点Scrapy框架架构Scrapy运作流程Scrapy框架安装

0506创建Scrapy项目安装过程中可能遇到的问题及解决方法Scrapy框架简介01

Scrapy框架简介Scrapy是一个用于Python的高级网络爬虫框架,专门用于快速、高效地从网站中提取结构化数据。它提供了强大的工具和组件,使开发者能够轻松地编写爬虫程序,处理复杂的爬取任务。Scrapy的主要特点包括:高效性:基于异步网络库(如Twisted),能够同时处理多个请求,提升爬取效率。模块化设计:各个组件(如Spider、Pipeline、Downloader等)相互独立,易于扩展和定制。内置支持:支持数据导出(如JSON、CSV、XML等)、自动限速、去重、日志记录等功能。强大的选择器:内置支持XPath和CSS选择器,方便从网页中提取数据。社区支持:拥有活跃的社区和丰富的文档,便于学习和解决问题。Scrapy广泛应用于数据挖掘、信息处理、历史数据存档等领域。Scrapy框架架构02Scrapy框架的强大功能离不开众多组件的支撑,这些组件相互协作,完成爬取任务。。Spider(爬虫):定义如何爬取网站,包括如何发送请求、如何解析响应。开发者需要编写Spider类来指定爬取逻辑。Engine(引擎):

控制整个系统的数据流,负责调度各个组件之间的交互。从Spider接收请求,并将其发送给Scheduler。Scheduler(调度器):接收Engine发送的请求,并按照一定的策略进行排队和调度。确保请求按照优先级和规则被处理。Downloader(下载器):负责下载网页内容,并将响应返回给Engine。支持异步下载,提高效率。ItemPipeline(数据管道):处理Spider提取的数据,进行清洗、验证、存储等操作。开发者可以自定义Pipeline来实现特定的数据处理逻辑。DownloaderMiddlewares(下载器中间件):在请求发送到Downloader之前或响应返回给Engine之前,对请求和响应进行预处理。例如,添加代理、修改请求头等。SpiderMiddlewares(爬虫中间件):

在Spider处理请求和响应之前或之后,对数据进行处理。例如,过滤无效请求、修改解析结果等。Scrapy运作流程03Scrapy的运作流程可以概括为以下几个步骤:步骤1:Spider发起请求Spider定义初始请求(start_urls),并将其发送给Engine。步骤2:Engine调度请求Engine将请求发送给Scheduler进行排队和调度。步骤3:Downloader下载网页Scheduler将请求发送给Downloader,Downloader下载网页内容并生成响应。步骤4:Spider解析响应Downloader将响应返回给Engine,Engine将其传递给Spider。Spider使用选择器(XPath或CSS)解析响应,提取数据或生成新的请求。步骤5:ItemPipeline处理数据Spider提取的数据(Item)被发送到ItemPipeline进行处理。Pipeline可以对数据进行清洗、验证、存储等操作。步骤6:循环处理如果Spider生成新的请求,流程会回到步骤2,继续爬取。Scrapy框架安装041.安装Scrapy在开始使用Scrapy创建爬虫程序之前,我们首先需要安装Scrapy框架。Scrapy是一个功能强大的Python爬虫框架,它提供了丰富的工具和组件,能够帮助我们高效地完成数据爬取任务。可以通过以下命令来安装Scrapy框架,这里我们指定安装版本为2.5.0,以确保代码的兼容性和稳定性:pipinstallscrapy==2.5.02.安装依赖在某些情况下,Scrapy可能需要额外的依赖库才能正常工作。这些依赖库包括Twisted、lxml、pyopenssl等。Twisted是一个事件驱动的网络编程框架,Scrapy利用它来实现高效的异步网络请求;lxml是一个高性能的XML和HTML解析库,用于解析网页内容;pyopenssl则为Scrapy提供了SSL/TLS支持,确保在爬取HTTPS网站时的安全性。pipinstallTwistedpipinstalllxmlpipinstallpyopenssl创建Scrapy项目05安装完成Scrapy框架后,我们可以使用Scrapy提供的命令行工具来创建一个新的爬虫项目。使用以下命令创建一个名为rdyc_spider的项目:scrapystartprojectrdyc_spider安装过程中可能遇到的问题及解决方法06在安装Scrapy或其依赖项的过程中,可能会遇到以下错误信息。error:MicrosoftVisualC++14.0orgreaterisrequired.Getitwith“microsoftC++BuildTools”:/visual-cpp-build-tools/1.缺少MicrosoftVisualC++组件这个错误通常是由于缺少MicrosoftVisualC++组件导致的。Scrapy的一些依赖项需要使用C++编译器进行编译,而Windows系统默认没有安装相应的组件。解决方法如下:(1)打开浏览器,跳转到/visual-cpp-build-tools/页面。(2)在该页面下载并运行“MicrosoftC++BuildTools”安装程序。(3)在安装过程中,勾选“使用C++的桌面开发”选项,确保安装了所需的C++编译器和相关工具。2.Twisted安装出错或版本不适配在安装或使用Scrapy时,可能会遇到以下错误信息:AttributeError:'SelectReactor'objecthasnoattribute'_handleSignals'这个错误通常是由于Twisted安装出错,或者版本不适配导致的。Twisted是Scrapy的一个重要依赖项,不同版本的Scrapy可能需要特定版本的Twisted才能正常工作。pipuninstallTwistedpipinstallTwisted==22.10.0解决方法如下:首先,卸载当前安装的Twisted版本,然后,安装适配的Twisted版本,这里我们推荐安装版本22.10.0:

编写spider脚本任务

——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

项目采集目标01020304知识点使用Scrapy的Item类封装数据编写spider脚本任务字段验证项目采集目标01

项目采集目标项目采集的目标数据是数字教材_人大芸窗数字教材(/szjc/Index.html)中课程推荐的教材名称、作者、ISBN号码,具体如下图所示。使用Scrapy的Item类封装数据02我们一般需要定义一个继承自scrapy.Item的子类,并在该子类中添加类型为scrapy.Filed的类属性。每个类属性代表要采集的数据字段,如我们提到的教材名称、作者、ISBN号码都对应一个字段。在Pycharm中打开rdyc_spider目录下的items.py文件,可以看到Scrapy框架已经在items.py文件中自动生成了继承自scrapy.Item的RdycSpiderItem类,初始代码如下:

使用Scrapy的Item类封装数据#Defineherethemodelsforyourscrapeditems

#

#Seedocumentationin:

#/en/latest/topics/items.html

importscrapy

classRdycSpiderItem(scrapy.Item):

#definethefieldsforyouritemherelike:

#name=scrapy.Field()

pass编写spider脚本任务03

修改RdycSpiderItem类Spider是Scrapy中用于定义爬取行为的核心组件,此时开始编写spider脚本任务,只需在RdycSpiderItem类中添加三个属性,分别为title、author、isbn,分别代表教材的名称、作者及ISBN号码。修改后的RdycSpiderItem类的代码如下:#Defineherethemodelsforyourscrapeditems

#

#Seedocumentationin:

#/en/latest/topics/items.html

importscrapy

classRdycSpiderItem(scrapy.Item):

#definethefieldsforyouritemherelike:

#name=scrapy.Field()

#教材名称

title=scrapy.Field()

#教材作者

author=scrapy.Field()

#ISBN号码

isbn=scrapy.Field()

#pass字段验证04

字段验证添加完这三个字段后,爬虫程序只能爬取这三个字段的数据。如果字段名称写错了或者写了额外的字段,程序会报错。我们可以通过以下方式进行验证:在PyCharm中,右击rdyc_spider目录下的items.py文件,选择“打开于终端”,输入python进入Python交互环境。

字段验证正确输入字段:当输入正确的教材名称,例如《朝花夕拾》,如果代码没有问题,不会显示任何错误信息。这表明程序能够正常处理我们定义的字段数据。

字段验证写错字段:若将title字段写成tite,程序会输出KeyError错误进行提示。这是因为在RdycSpiderItem类中并没有定义tite这个字段,程序无法识别该字段,从而抛出错误。增加额外字段:如果增加额外字段,如year字段,同样会输出KeyError错误。这是因为我们在RdycSpiderItem类中只定义了title、author、isbn三个字段,程序只能处理这三个字段的数据,对于额外的字段会报错。

修改ItemPipeline及settings脚本

——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

理解ItemPipeline010203知识点修改pipelines.py文件以实现数据保存在settings.py文件中配置ItemPipeline理解ItemPipeline01

理解ItemPipeline在Scrapy框架里,ItemPipeline承担着处理爬取到的数据的重要任务。当爬虫(Spider)成功抓取到网页数据后,这些数据会以Item对象的形式传递给ItemPipeline。在这里,我们可以对数据进行一系列的处理,比如数据清洗、验证、存储到数据库或者保存为文件等操作。要使用自定义的ItemPipeline,我们需要对pipelines.py文件进行修改,同时在settings.py文件中对其进行配置,这样Scrapy才能识别并使用我们自定义的数据处理流程。#Defineyouritempipelineshere##Don'tforgettoaddyourpipelinetotheITEM_PIPELINESsetting#See:/en/latest/topics/item-pipeline.html

#usefulforhandlingdifferentitemtypeswithasingleinterfacefromitemadapterimportItemAdapter

classRdycSpiderPipeline:defprocess_item(self,item,spider):returnitem我们可以通过修改pipelines.py文件来定义数据的处理流程。当我们在PyCharm中打开pipelines.py文件时,会看到自动生成的代码如下:修改pipelines.py文件以实现数据保存02

修改pipelines.py文件以实现数据保存接下来,我们要对pipelines.py文件进行修改,实现将爬取到的数据保存为JSON文件的功能。修改后的代码如下:importjson

classRdycSpiderPipeline:

def__init__(self):

self.file=open("books02.json","w",encoding="utf-8")

defprocess_item(self,item,spider):

self.file.write(json.dumps(dict(item),ensure_ascii=False)+"\n")

returnitem

defclose_spider(self,spider):

self.file.close()#关闭文件在settings.py文件中配置ItemPipeline03

在settings.py文件中配置ItemPipeline为了让Scrapy能够使用我们自定义的Pipeline,我们需要在settings.py文件中进行配置。在settings.py文件中添加以下代码:ITEM_PIPELINES={

'rdyc_spider.pipelines.RdycSpiderPipeline':300,

}

在settings.py文件中配置ItemPipeline通过以上步骤,我们就成功地实现了使用Scrapy的ItemPipeline将爬取到的数据保存为JSON文件的功能。在实际应用中,我们可以根据需求对pipelines.py文件进行进一步的修改,实现更复杂的数据处理逻辑。完成上述修改和配置后,我们可以在命令行中执行scrapycrawlitcast命令来启动爬虫。Scrapy常用命令行工具

——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESSScrapy命令行工具01知识点Scrapy命令行工具01

Scrapy命令行工具Scrapy

提供了丰富的命令行工具,帮助我们管理和运行爬虫。以下是一些常用的命令:1.scrapycrawl<spider_name>:运行指定名称的Spider。例如:scrapycrawlrdyc,此命令会启动名为rdyc的Spider,开始抓取目标网站的数据。2.scrapyshell<url>:启动Scrapy的交互式Shell,允许开发者在命令行中测试CSS选择器、XPath表达式等。例如:scrapyshell"",在Shell中可以即时查看如何通过选择器提取网页元素,进行快速调试。3.scrapylist:列出项目中所有可用的Spider,该命令可以快速查看项目中定义的所有爬虫。4.scrapycheck:检查项目中的Spider代码是否正确,此命令将检查爬虫代码中的语法错误,帮助开发者及时发现问题。5.scrapycrawl<spider_name>-o<output_file>:指定输出格式并保存抓取的数据。例如:scrapycrawlrdyc-ooutput.json,此命令会将抓取到的数据保存为JSON格式的文件,支持其他格式如CSV、XML等。6.scrapyparse<url>:直接解析指定URL,展示从网页中提取的内容。例如:scrapyparse"",通过此命令,Scrapy会模拟一个爬虫并输出URL中提取的所有数据,方便调试选择器。7.scrapyrunspider<spider_file>:运行指定的爬虫文件,而不是通过项目中的spider_name来运行。例如:scrapyrunspidermy_spider.py,适合临时的爬虫任务,或者不想通过Scrapy项目框架来运行爬虫时。8.scrapyversion:显示Scrapy的版本信息,特别是在排查兼容性问题时。9.scrapyfetch<url>:使用Scrapy下载器下载给定的URL并将内容写入标准输出。10.scrapyedit<spider_name>:使用editor环境变量中定义的编辑器或editor设置编辑给定的spider_name。此命令仅作为最常见情况下的便捷快捷方式提供,开发人员可以自由选择任何工具或IDE来编写和调试。Scrapy的爬虫类和模板

——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESSScrapy的爬虫类和模板01知识点Scrapy的爬虫类和模板

01

Scrapy的爬虫类和模板Scrapy提供了多种爬虫类(Spider),每种爬虫类都有不同的功能和适用场景。根据具体的抓取需求,开发者可以选择合适的Spider来实现目标。以下是一些常用的爬虫类及其特点和适用场景。scrapy.Spider简介:scrapy.Spider是Scrapy框架中最基本的爬虫类,适用于大多数简单的抓取任务。通常用于抓取静态网页,或者爬取单一网页,这个爬虫类非常适合开始学习和构建基础爬虫。功能与特点:(1)start_requests():通常用于发起初始的请求。start_requests方法会返回一个请求的列表,Scrapy会从这些请求开始抓取网页。(2)parse():是爬虫的核心方法,用于处理响应并提取数据。通常在parse()中处理HTTP响应、提取数据、生成新的请求等。(3)简洁的逻辑:适合于简单的抓取任务,通常抓取单一页面或结构相对简单的静态页面。scrapy.CrawlSpider简介:scrapy.CrawlSpider是一个用于跟踪页面链接的爬虫类,适用于需要从多个网页中递归抓取数据的任务。它通过使用Rule对象来定义抓取链接的规则,从而可以自动跟随页面中的链接进行递归抓取。功能与特点:(1)Rule对象:CrawlSpider使用Rule来定义哪些页面链接应该被跟踪。Rule对象包括两个参数:一个是LinkExtractor,用于从页面中提取链接,另一个是callback函数,用于处理抓取到的链接页面。(2)递归抓取:通过定义规则,CrawlSpider可以自动从抓取到的页面中提取链接并继续跟踪,从而实现递归抓取。(3)使用场景广泛:非常适合抓取大型网站或需要遍历多个页面的任务。

scrapy.SitemapSpider简介:scrapy.SitemapSpider是专门用于从网站的Sitemap(网站地图)文件中提取URL进行抓取的爬虫类。它适合用于抓取网站的所有页面,尤其是当网站提供了Sitemap时,可以通过解析Sitemap直接获取所有的页面链接。功能与特点:(1)Sitemap解析:它通过解析网站的Sitemap(通常是XML格式)来提取所有的URL,适合抓取整个网站。(2)适用于大规模抓取:当网站提供了完整的Sitemap时,SitemapSpider可以高效地抓取所有页面,而不需要手动编写链接提取规则。scrapy.XMLFeedSpider简介:scrapy.XMLFeedSpider用于从XML格式的RSSfeed或自定义XML文件中提取数据。它非常适合抓取通过XML格式提供的数据源,能够高效地解析XML结构并提取其中的元素。功能与特点:(1)XML解析:专门用于解析XML文件,并从中提取特定的数据字段。(2)支持RSSFeed:可以用于处理RSSFeed等XML格式的内容,非常适合新闻网站、博客、产品信息等数据抓取。scrapy.CSVFeedSpider简介:scrapy.CSVFeedSpider用于从CSV文件或CSV格式的URL中提取数据。它适合抓取结构化的CSV数据,可以从CSV中指定列提取信息。功能与特点:(1)CSV格式支持:用于解析和抓取CSV文件中的数据。(2)按列提取:可以根据CSV文件的列名提取特定的字段,适合用于结构化数据抓取。(3)灵活的输入源:可以从本地CSV文件或远程CSV文件URL中抓取数据。项目实战

基于Scrapy爬取人大芸窗数字教材网站的平台功能特色

——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

基于Scrapy爬取人大芸窗数字教材网站的平台功能特色目标网站:人大芸窗数字教材网站(/xtts.html)采集数据:内容特点。数据存储:将数据进行存储保存。合法合规:遵守目标网站的robots.txt协议,不采集用户隐私数据。步骤1:安装必要的工具。创建项目:打开终端,运行以下命令安装Scrapy模块。pipinstallscrapy==2.5.0步骤2:分析目标网站查看robots.txt文件,了解网站爬取规则,分析课程列表页和详情页的URL结构。步骤3:创建Scrapy项目scrapystartproject项目名称,项目名称自定义,这里取名myspider。scrapystartprojectmyspider执行完成后,在我们的项目文件里就生成了这个myspider文件夹,项目的目录结构如图

所示:步骤4:创建爬虫在命令行窗口中切换当前的目录为子目录myspider/spiders,创建一个名称为newrdyc、爬取域为

的爬虫。执行命令:scrapygenspidernewrdyc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论