Python基础与大数据应用-第八章-Python爬虫框架课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python基础与大数据应用-第八章-Python爬虫框架课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 基础 数据 应用 第八 爬虫 框架 课件
- 资源描述:
-
1、第八章 Python爬虫框架目 录 Contents01常见爬虫框架02Scrapy安装03Scrapy爬虫框架04Scrapy常用工具命令0506Scrapy爬虫实战项目训练07小结常见爬虫框架010102030405爬虫框架Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等。ScrapyCrawley能高速爬取对应网
2、站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。CrawleyPortia是一个用Python编写无需任何编程知识,就能可视化爬取网站数据的开源工具。Portia 是运行在Web浏览器中,Portia 提供了可视化的Web 页面,只需通过简单单击,标注页面上需提取的相应数据,即可完成爬取规则的开发,这些规则还可在Scrapy中使用,用于抓取页面。PortiaPySpider是一个强大的网络爬虫系统,并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。PySpiderBeaut
3、iful Soup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。在获取html元素时,都是用bs4完成的。Beautiful Soup常见爬虫框架06Grab框架,可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容。Grab07Cola是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过
4、程对用户是透明的。ColaScrapy安装02第一步 如Python和pip的版本比较低,需要将其升级。Python3.7安装方法按照第一章方法安装即可。pip3安装命令为【apt-get install Python3-pip】安装scrapy的依赖包【sudo apt-get install python3 python3-dev python-pip libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1q-dev】在/home目录下用mkdir命令建立scrapy文件夹利用pip3命令安装scrapy【pip install scrap
5、y】scrapy安装第二步第三步查看版本第四步【cd /home】【mkdir scrapy】Scrapy爬虫框架03ScrapyScrapy爬虫框架爬虫框架Scrapy框架组件功 能Scrapy引擎(Scrapy Engine)负责处理整个系统的数据流,并在相应动作时触发事件(框架核心)调度器(Scheduler)接受引擎发过来的Request请求,并加入队列中,并在引擎再次发来Request请求的时候提供给引擎下载器(Downloader)负责获取网页内容并将网页内容返回给蜘蛛spider爬虫(Spiders)Scrapy用户编写用于分析Response并提取Item的类项目管道(Item
6、 Pipeline)位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应下载器中间件(Downloader Middlewares)位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应爬虫中间件(Spider Middlewares)介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛(Spiger)的响应输入(Response)和请求输出(Item和Request)调度中间件(Scheduler Middewares)介于Scrapy引擎和调度之间的中间件,处理从Scrapy引擎发送到调度的请求和响应Scrapy
7、Scrapy数据流运行过程数据流运行过程step1引擎打开一个网站,找到处理该网站的Spider并向该Spider请求第一个要抓取的URL。step2引擎从Spider中获取第一个要爬取的URL并通过调度器(Scheduler)和Request进行调度。step3引擎从调度器请求下一个要爬取的URLstep4调度器返回下一个要爬取的URL给引擎,引擎将URL封装成一个请求(Request),通过下载中间件转发给下载器step5页面下载完毕后,下载器把资源封装成应答包(Response),并将其通过下载中间件发送给引擎step6引擎从下载器中接收到Response并通过Spider中间件发送给S
8、pider处理step7Spider处理Response并返回爬取到的Item和新的Request发送给引擎step8引擎将爬取到的Item交给Item Pipeline,将Request给调度器Scrapy常用工具命令04创建创建一个一个ScrapyScrapy项目项目 在爬取之前,需先创建一个新的Scrapy项目。在Ubuntu16.04、Python3.7环境中,在/home/scapy/路径下建立一个文件夹,命令为【mkdir pyscr】,接下来进入该文件夹,在终端输入命令【scrapy startproject pyscr】,即可创建一个名为pyscr的项目,如图所示。创建创建一个
9、一个ScrapyScrapy项目项目pyscr项目内容:scrapy.cfg:项目配置文件pyscr/:项目Python模块,代码将从这里导入pyscr/items.py:项目items文件pyscr/middlewares.py:定义spider中间件和downloader中间件pyscr/pipelines.py:项目管道文件pyscr/settings.py:项目设置文件pyscr/spiders:放置Spider的目录【tree】命令查看项目结构,pyscr项目中包含如图所示内容ScrapyScrapy全局命令全局命令在Scrapy框架中,提供了两种类型的命令:一种是针对项目的命令(即
10、需要有项目,该命令才能成功运行);另一种为全局命令,这些命令不需要有项目就能运行(在有项目的情况下,这些命令也能运行)。全局命令一共有8个,具体如下:startprojectsettingsrunspidershellfetchviewversionbenchScrapyScrapy全局命令全局命令ustartproject命令语法:scrapy startproject 功能:在目录project_name下创建一个名为project_name的Scrapy项目。用法示例:【scrapy startproject myproject】usettings命令语法:scrapy settings
11、 options功能:查看scrapy对应的配置信息,如果在项目目录内使用该命令,查看的是对应项目的配置信息,如果在项目外使用查看的是scrapy默认配置信息。用法示例:【scrapy settings-get BOT_NAME】获取得到蜘蛛项目的名称,如果没有获取结果则返回none输出结果:scrapybotScrapyScrapy全局命令全局命令urunspider命令语法:scrapy runspider 功能:在未创建项目的情况下,运行一个编写好的Python文件中的spider。用法示例:【scrapy runspider myspider.py】输出结果:.spider start
12、s crawling.ushell命令语法:scrapy shell url功能:以给定的URL(如果给出)或者空(没有给出URL)启动Scrapy shell。用法示例:【scrapy shell http:/】运行结束后,在终端屏幕上会出现抓取的控制信息ScrapyScrapy全局命令全局命令ufetch命令语法:scrapy fetch 功能:使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。该命令以spider下载页面的方式获取页面。如果实际在项目中运行,fetch将会使用项目中spider的属性访问,如果该命令不在项目中运行,则会使用默认S
13、crapy downloader设定。用法示例:【scrapy fetch-nolog http:/】【scrapy fetch-nolog-headers http:/】uview命令语法:scrapy view 功能:在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。有时候spider获取到的页面和普通用户看到的并不相同,此该命令可以用来检查spider所获取到的页面,并确认与用户看到的一致。应用示例:【scrapy view http:/】ScrapyScrapy全局命令全局命令uversion命令语法:scrapy version-v功能:输出Scrapy版本
14、。配合-v运行时,该命令同时输出Python,Twisted以及平台的信息,方便bug提交。应用示例:【scrapy version v】ubench命令语法:scrapy bench功能:运行benchmark测试,测试Scrapy在硬件上的效率。ScrapyScrapy项目命令项目命令项目命令需要在有Scrapy项目的情况下,这些命令才能运行。项目命令主要有以下几个:crawlchecklisteditparsedeploygenspiderScrapyScrapy项目命令项目命令ucrawl命令语法:scrapy crawl 功能:运行Scrapy项目,使用spider进行爬取。应用示例
15、:【scrapy crawl pyscr】ucheck命令语法:scrapy check-l 功能:运行contract检查。应用示例:【scrapy check l】ScrapyScrapy项目命令项目命令ulist命令语法:scrapy list功能:列出当前项目中所有可用的spider。每行输出一个spider。应用示例:【scrapy list】uedit命令语法:scrapy edit 功能:使用EDITOR中设定的编辑器编辑给定的spider。该命令仅仅是提供一个快捷方式。开发者可以自由选择其它工具或者IDE来编写调试spider。应用示例:【scrapy edit spider1
16、】ScrapyScrapy项目命令项目命令uparse命令语法:【scrapy parse options】功能:获取给定的URL并使用相应的spider分析处理。如果提供-callback选项,则使用spider中的解析方法处理,否则使用parse。支持的选项:-spider=SPIDER:跳过自动检测spider并强制使用特定的spider-a NAME=VALUE:设置spider的参数(可能被重复)-callback or c:spider中用于解析返回(response)的回调函数-pipelines:在pipeline中处理item-rules or-r:使用CrawlSpider
17、规则来发现用来解析返回(response)的回调函数-noitems:不显示爬取到的item-nolinks:不显示提取到的链接-nocolour:避免使用pygments对输出着色-depth or d:指定跟进链接请求的层次数(默认1)-verbose or v:显示每个请求的详细信息应用示例:【scrapy parse“http:/ parse_item】ScrapyScrapy项目命令项目命令udeploy命令语法:scrapy deploy|-l|-L功能:将项目部署到Scrapyd服务。ugenspider命令语法:scrapy genspider-t template 功能:在当
18、前项目中创建一个新的的spiders。这仅是创建spider的一种快捷方式,该方法可以使用提前定义好的模板来生成spider,也可自己创建spider的源码文件,应用示例如图所示。Scrapy爬虫实战05ScrapyScrapy爬虫实战爬虫实战 在Ubuntu16.04,Python3.7环境下,创建一个Scrapy项目,爬取“糗事百科”中“穿越”网页中网友发表的糗事内容,并将内容保存在文本文件中。1.创建Scrapy项目qsbk在爬取之前,必须创建一个新的Scrapy项目。在/home/scrapy目录下建立qsbk目录,并在/home/scrapy/qsbk目录下用【scrapy star
19、tproject qsbk】命令创建项目,如下图所示。ScrapyScrapy爬虫实战爬虫实战2.设置settings.py文件settings.py文件是项目的配置文件,常用的参数有:BOT_NAME=qsbk,Scrapy项目的名字,使用startproject 命令创建项目时被自动赋值;SPIDER_MODULES=qsbk.spiders,Scrapy搜索spider的模块列表,创建项目时被自动赋值;NEWSPIDER_MODULE=qsbk.spiders,使用 genspider 命令创建新spider的模块,创建项目时被自动赋值;ROBOTSTXT_OBEY=True,是否遵守r
20、obots.txt协议,默认遵守robots.txt协议。robots.txt是遵循 Robot协议的一个文件,它保存在网站的服务器中,作用是告诉搜索引擎爬虫,本网站哪些目录下的网页不希望被爬取收录。在Scrapy启动后,会在第一时间访问网站的robots.txt文件,然后决定该网站的爬取范围。在某些情况下希望获取的是被robots.txt所禁止访问的,此时可将此配置项设置为False来获取数据;ScrapyScrapy爬虫实战爬虫实战CONCURRENT_REQUESTS=16,开启线程数量,默认16;AUTOTHROTTLE_START_DELAY=3,开始下载时限速并延迟时间;AUTOT
21、HROTTLE_MAX_DELAY=60,高并发请求时最大延迟时间;DEFAULT_REQUEST_HEADERS=Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,Accept-Language:en,,这个参数是设置浏览器请求头,很多网站都会检查客户端的headers,可以在该参数里设置模拟浏览器;ITEM_PIPELINES=demo1.pipelines.Demo1Pipeline:300,,Pipeline的路径,300表示优先级,范围(0-1000),值越小级别越高;具体设置qsbk项目的s
22、ettings.py文件:(1)设置ROBOTSTXT_OBEY参数:ROBOTSTXT_OBEY=False(2)设置AUTOTHROTTLE_START_DELAY参数:删除参数前的“#”,AUTOTHROTTLE_START_DELAY=3(3)设置ITEM_PIPELINES参数:删除该参数中所有“#”(4)设置DEFAULT_REQUEST_HEADERS参数:删除该参数中所有“#”,并添加“User-Agent:Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/48.0.2564.116
23、Safari/537.36,”,伪装成浏览器访问ScrapyScrapy爬虫实战爬虫实战3.设置items.py文件items.py负责数据模型的建立,是项目中的Item对象。Item对象是保存爬取到的数据的容器;其使用方法和Python字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。Item使用简单的class定义语法和Field对象声明。在新建的qsbk项目中,使用items.py来定义存储的Item类,这个类需要继承scrapy.Item。其代码下图所示。ScrapyScrapy爬虫实战爬虫实战4.创建spider爬虫文件爬虫模块的代码都放置与spiders文件夹中。
24、爬虫模块是用于从单个网站或多个网站爬取数据的类,其中应包含初始页面的URL、跟进网页链接、分析页面内容、提取数据方法。为了创建一个Spider爬虫,必须继承 scrapy.Spider 类,且定义以下三个属性:name:用于区别Spider。该名字必须是唯一的,不可为不同的Spider设定相同的名字start_urls:包含了Spider在启动时进行爬取的url列表。因此,第一个被获取到的页面将是其中之一。后续的URL则从初始的URL获取到的数据中提取parse():是spider的一个方法。被调用时,每个初始URL完成下载后生成的 response 对象将会作为唯一的参数传递给该函数。该方法
25、负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。ScrapyScrapy爬虫实战爬虫实战在spiders文件夹(cd/spiders)下创建qsbk.py文件(vim qsbk.py),qsbk.py中的代码如图所示。需要注意的是,这段代码中不仅需要下载网页数据,还需要对这些数据进行提取。Scrapy有自己的数据提取机制-选择器(selector基于lxml库),它通过Xpath或者CSS表达式来提取HTML文件中的内容。ScrapyScrapy爬虫实战爬虫实战(1)Xpath XPath是XML路径语言(XML P
展开阅读全文