Python网络爬虫 课件 项目7:Scrapy爬虫框架_第1页
Python网络爬虫 课件 项目7:Scrapy爬虫框架_第2页
Python网络爬虫 课件 项目7:Scrapy爬虫框架_第3页
Python网络爬虫 课件 项目7:Scrapy爬虫框架_第4页
Python网络爬虫 课件 项目7:Scrapy爬虫框架_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

项目七

Scrapy爬虫框架任务1Scrapy爬虫框架任务2使用模板创建Spider文件任务3Scrapy爬虫文件任务1Scrapy爬虫框架任务引入了解了Python网络爬虫的基本原理和流程,小白开始着手准备使用Scrapy构建一个简单的爬虫框架,爬取景区景点名称数据。那么,首先需要了解,什么是爬虫框架?Scrapy如何实现爬虫框架的定义?知识准备Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。一、Scrapy爬虫框架基础Scrapy是一套基于Twisted的异步处理框架,是纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容或者各种图片。Scrapy整体框架如图所示。下面介绍Scrapy中的主要组件:ScrapyEngine:Scrapy引擎相当于一个中枢站,负责Scheduler,ItemPipeline,Downloader和Spiders四个组件之间的通信。Spiders:解析器,负责接收ScrapyEngine发送过来的Responses,对其进行解析,可以在其内部编写解析的规则。解析好的内容可以发送存储请求给ScrapyEngine。在Spiders中解析出的新的url,可以向ScrapyEngine发送Requests请求。Downloader:下载器,对发送过来的url进行下载,并将下载好的网页反馈给ScrapyEngine。Schedular:对列,存储ScrapyEngine发送过来的url,并按顺序取出url发送给ScrapyEngine进行requests操作。ItemPipeline:负责处理被spider提取出来的item。DownloaderMiddlewares:下载器中间件,对ip进行代理,或封装头文件,应对一些反爬虫机制。SpiderMiddlewares:Spider中间件,处理Spiders的response及spider产生的请求和响应。对Scrapy的组成项目有一个粗浅的理解后,下面介绍Scrapy的运行流程:通过引擎从调度器中获取一个链接(URL),用于接下来的抓取。通过引擎把URL封装成一个请求(Request),发送给下载器,通过下载器下载资源,并封装成响应包(Response)。通过爬虫解析网页响应Response,若解析的是实体(Item),由实体管道进行进一步的处理;若解析的是链接(URL),则将URL传递给Scheduler等待抓取。二、Scrapy常用命令下面介绍Scrapy常用命令。1.创建项目文件1.创建项目文件2.创建爬虫文件3.运行爬虫4.错误检查5.列出爬虫6.测试网页7.请求网页把网页源代码保存成

在用浏览器打开(调试工具)检查爬虫的语法错误返回项目里spider名称8.命令行交互模式shell9.解析网页的内容10.获取配置信息11.运行spider文件12.输出版本13.测试三、

创建Scrapy项目

在使用Scrapy爬取网页之前,使用startproject命令创建一个新的Scrapy项目。

创建项目Scrapy项目下面介绍该文件夹下的文件:scrapy.cfg:项目的总配置文件,通常无须修改。。(真正爬虫相关的配置信息在settings.py文件中)items.py;设置数据存储模板,用于结构化数据,通常就是定义N个属性,该类需要由开发者来定义。pipelines:项目的管道文件,它负责处理爬取到的信息。例如存入数据库或者生成xml文件等。该文件需要由开发者编写。settings.py:配置文件,如:递归的层数、并发数,延迟下载等spiders:爬虫目录,如:创建文件,编写爬虫解析规则任务2使用模板创建Spider文件任务引入了解了爬虫框架的基本步骤后,小白首先需要创建Spider文件,根据爬取的模板爬取景区数据。那么,模板文件有哪些?如何创建这些模板文件?知识准备genspider命令使用模板生成爬虫文件,除了genspider命令自带的四个模板外,scrapy还提供了其它爬虫基类,SitemapSpider表示用于爬取网站地图的基类,InitSpider表示带有初始化器的基类。有些Scrapy命令要求在Scrapy项目中运行,使用cd命令使用Scrapy项目的路径,如图所示。一、创建爬虫文件命令使用scrapy中的genspider命令,可以显示创建文件的设置选项,如图所示。创建spider所有可用模板包括4种,使用下面的命令可以输出所有可用模板信息,如图所示下面介绍以下四个默认模板:basic:提供基础构架,继承于Spider类,默认模板crawl:提供更灵活的提取方式,继承于CrawlSpider类csvfeed:提供提取CSV格式文件的方式,继承于CSVFeedSpider类xmlfeed:用于提取XML文件,继承于XMLFeedSpider类二、创建basic模板文件输入下面的程序,在项目根下利用basic模板创建Spider文件Pythontranslate.py创建文件在PyCharm中打开该文件,自动在该文件中创建模板定义的程序框架,如图所示。下面介绍basic模板文件中的默认参数:name:爬虫的名称,使用crawl执行时用到allowed_domains:允许爬取的域名范围start_urls:启动爬虫的网址parse(self,response):用于处理爬取的数据三、创建crawl模板文件输入下面的程序,在项目根下利用crawl模板创建Spider文件Pythontranslate2.py在PyCharm中打开该文件,自动在该文件中创建模板定义的程序框架,如图所示。四、创建csvfeed模板文件输入下面的程序,在项目根下利用basic模板创建Spider文件Pythontranslate3.py在PyCharm中打开该文件,自动在该文件中创建模板定义的程序框架,如图所示。五、创建xmlfeed模板文件输入下面的程序,在项目根下利用basic模板创建Spider文件Pythontranslate4.py.scrapygenspider–txmlfeedPythontranslate4在PyCharm中打开该文件,自动在该文件中创建模板定义的程序框架,如图所示。任务3Scrapy爬虫文件任务引入小白可以轻松的爬取景点数据,但是通过定义爬虫框架进行爬取网页时,面对众多新名词,新概念,一筹莫展。但作为新世纪的全面人才,应该有越挫越勇、不屈不挠的斗志。小白揪住主线,层层剥开,进入到Scrapy爬虫文件的编写部分,发现其本质。Scrapy爬取数据的步骤相对比较清晰,一步一步跟着步骤线,带着对新名词的疑问,小白继续爬虫学习之旅。知识准备Scrapy爬虫文件Spide中包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容、提取生成item的方法。利用

Scrapy爬取数据的步骤如下:建立一个Scrapy爬虫工程在工程中产生一个Scrapy配置产生的spider爬虫运行爬虫,获取网页。一、Spider类

Spider类定义了如何爬取某个网站,包括了爬取的动作以及如何从网页的内容中提取结构化数据。在Scrapy_Project/Scrapy_Project/spiders,创建一个*.py为后缀名的Spider文件(如:Scrapy_Project.py),可以在该文件中编写程序。该文件主要用于定义以下属性:(1)name:定义spider名字的字符串,用于区别Spider,该名字必须是唯一的,如name='Scrapy_Project'。(2)allowed_domains:包含了爬虫允许的域名列表。(3)start_urls:包含了Spider在启动时进行爬取的url列表,如start_urls=['http:XXX’]。(4)start_request:该方法用于生成网络请求,请求方法默认是get请求。(5)parse():用于定义spider的一个方法,收到服务器返回的内容后,就将内容传递给parse函数。

发送请求返回响应后,可以利用指定的属性和方法获取响应数据,具体如下:url:包含request的URL的字符串method:代表HTTP的请求方法的字符串,例如'GET','POST'...headers:request的头信息body:请求体meta:一个dict,包含request的任意元数据。该dict在新Requests中为空,当Scrapy的其他扩展启用的时候填充数据。dict在传输是浅拷贝。copy():复制当前Requestreplace([url,method,headers,body,cookies,meta,encoding,dont_filter,callback,errback]):返回一个参数相同的Request,二、配置爬虫settings.py是scrapy爬虫的配置文件,这个文件包含了所有有关这个Django项目的配置信息,均大写。为了使settings.py适用scrapy项目,需要对默认配置文件进行相应的修改。1.修改语言与时区配置在项目中设置语言、时区是必不可少的,打开settings.py文件,在文件的末尾部分找到相应的变量进行配置2.设置时区不敏感当USE_TZ设置为False时,表示对时区不敏感,并且让数据库时间符合本地时区。3.Robot协议Robots协议告知所有爬虫网站的爬取策略,一般设置拒绝遵守Robot协议。4.伪造成浏览器访问在settings.py文件中,使用USER_AGENT伪造成浏览器访问5.延迟抓取DOWNLOAD_DELAY表示对同一个站点抓取延迟6.多线程抓取CONCURRENT_REQUESTS_PER_DOMAIN表示对同一个站点并发有多少个线程抓取7.保存文件的中文格式使用scrapy抓取中文网页,得到的数据类型是unicode,在控制台输出的话也是显示unicode,添加下面的程序,保存成json文件时显示中文数据。在运行scrapy爬虫的过程中,出现HTTPstatuscodeisnothandledornotallowed的问题,http状态代码没有被处理或允许,导致爬虫无法继续,如图所示:三、启动爬虫完成Spider文件编写后,进入文件所在路径,运行下面的程序:scrapycrawlname其中,name是Spider文件中定义的值。运行上面的程序,启动爬虫后就可以看到输出结果。使用crawl命令运行Scrapy项目名(Spider文件中的name名称),在命令提示符窗口输入scrapycrawlSW_SW单击回车键,运行项目文件,结果如图所示。除了在命令行提示符中运行爬虫,还可以在在PyCharm中直接运行,单击运行Terminal按钮,打开终端窗口,输入scrapycrawlSW_SW,运行爬虫,结果如图所示。案例——发送HTTP请求在石家庄三维书屋文化传播有限公司网址中选择“免费下载”,显示了可以免费下载的图书及其资源,网址为/Freedownload-19.html,如图所示,使用scrapy发送HTTP请求,获取网页信息。在根目录下打开freeedown.py文件,自动在该文件中创建模板定义的程序框架,如图所示。单击回车键,运行项目文件,结果如图所示。

运行项目Scrapy项目将访问的网页body数据体保存在创建的txt文件中,如图所示。四、提取数据parse方法负责解析返回的数据(responsedata),提取数据以及生成需要进一步处理的URL的Request对象。Scrapy提取数据除了使用自带的选择器(seletors),还可以通过特定的XPath或者CSS表达式来“选择”HTML文件中的某个部分。1.Scrapy提取数据解析网页实质上需要完成两件事情,一是提取网页上的地址,二是提取网页上的资源。提取网址实质上是指获取存在于待解析网页上的其他网页的地址。2.XPath提取数据XPath是一门用来在XML文件中选择节点的语言,也可以在HTML中使用。3.CSS提取数据CSS是一门将HTML文档样式化的语言,选择器由CSS定义,并与特定的HTML元素的样式相关联。案例——提取城市名称招聘网首页网址如下:/,提取整个网站招聘单位涉及的城市。操作步骤:打开PyCharm,在Terminal(终端)窗口输入下面的程序,进入到项目根目录。单击回车键,运行项目文件,结果如图所示。项目实战:提取景区名称某地区景区首页网址如下:/jingqu.html,提取整个地区的景区名称。操作步骤:1.创建爬虫文件打开PyCharm,在Terminal(终端)窗口输入下面的程序,进入到项目根目录。cdC:\Users\yan\Scrapy_Project\Scrapy_

温馨提示

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

评论

0/150

提交评论