书签 分享 收藏 举报 版权申诉 / 48
上传文档赚钱

类型Python程序设计-第10章-基于Scrapy架构的Python爬虫案例分析.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3573293
  • 上传时间:2022-09-19
  • 格式:PPTX
  • 页数:48
  • 大小:989.07KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Python程序设计-第10章-基于Scrapy架构的Python爬虫案例分析.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Python 程序设计 10 基于 Scrapy 架构 爬虫 案例 分析
    资源描述:

    1、PythonPython程序设计程序设计10基于基于Scrapy架构的架构的Python爬虫案例分析爬虫案例分析第章 本章我们首先将以互联网上最流行的网络爬虫为基础,学习与掌握网络爬虫的基本原理和实现技术。随后讲解实现网络爬虫的Scrapy架构;最后开发几种典型的网络爬虫,让用户在实战项目中由浅入深地掌握Python案例开发。前言前言本章内容本章内容10.1网络爬虫的工作原理网络爬虫的工作原理10.2 Scrapy架构架构10.3 Scrapy安装及使用安装及使用10.4综合案例分析综合案例分析10.5本章小结本章小结10.1网络爬虫的工作原理网络爬虫的工作原理v 网络爬虫是捜索引擎抓取系统的

    2、重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。v 爬虫原理是从起始种子链接开始,通过发送http请求,得到该链接的内容,然后采用正则匹配获取网页中的有效链接,并将这些链接保存到待访问队列中,等待爬取线程爬取此待访队列,为了有效的减少不必要的网络请求,当链接被访问后,将把访问过的链接放到一个已访问MAP中,已防止程序重复爬取以至于导致死循环。10.1.1基本概念及分类基本概念及分类v 1.定义v 网络爬虫(又被称为网页蜘蛛,网络机器人),简单讲,就是按照一定的规则,自动地抓取互联网信息的程序或者脚本。另外在互联网上经常有一些不常使用的名字例如:蚂蚁、自动索

    3、引、模拟程序或者蠕虫。v 网络爬虫是一个自动提取网页的程序,它为搜索引擎从互联网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。10.1.1基本概念及分类基本概念及分类v 2.分类v 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep

    4、Web Crawler)。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。10.1.1基本概念及分类基本概念及分类v(1)通用网络爬虫v 通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。由于商业原因,它们的技术细节很少公布出来。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有

    5、较强的应用价值。v 通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL 队列、初始 URL 集合几个部分。10.1.1基本概念及分类基本概念及分类v(2)聚焦网络爬虫v 聚焦网络爬虫(Focused Crawler),又称主题网络爬虫(Topical Crawler),是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。v 聚焦网络爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价

    6、模块。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。v(3)增量式网络爬虫v 增量式网络爬虫(Incremental Web Crawler)是 指 对 已 下 载 网 页 采 取 增 量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。增量式网络

    7、爬虫的体系结构包含爬行模块、排序模块、更新模块、本地页面集、待爬行 URL 集以及本地页面URL 集。10.1.1基本概念及分类基本概念及分类v(4)Deep Web 爬虫v Web 页面按存在方式可以分为表层网页(Surface Web)和深层网页(Deep Web,也称 Invisible Web Pages 或 Hidden Web)。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的 Web 页面。Deep Web 是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。例如那些用户注册后内容才可见的网页就属

    8、于 Deep Web。2000 年 Bright Planet 指出:Deep Web 中可访问信息容量是 Surface Web 的几百倍,是互联网上最大、发展最快的新型信息资源。10.1.1基本概念及分类基本概念及分类v 在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容处理掉,爬虫的基本工作是由解析器完成。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索

    9、引。10.1.2组成组成v 控制器v 控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,分配一线程,然后启动线程调用爬虫爬取网页的过程。v 解析器v 解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。v 资源库v 主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、Sql Server等。10.1.2组成组成10.1.3实现原理实现原理v 在本节中,我们将以两种典型的网络爬虫为例(即通用网络爬虫和聚焦网络爬虫),分别介绍网络爬虫

    10、的实现原理1.通用网络爬虫v 1)获取初始的URL。初始的URL地址可以由用户人为地指定,也可以由用户指定的某个或某几个初始爬取网页决定v 2)根据初始的URL爬取页面并获得新的URL。获得初始的URL地址之后,首先需要爬取对应URL地址中的网页,爬取了对应的URL地址中的网页后,将网页存储到原始数据库中,并且在爬取网页的同时,发现新的URL地址,同时将已爬取的URL地址存放到一个URL列表中,用于去重及判断爬取的进程。10.1.3实现原理实现原理v 3)将新的URL放到URL队列中。在第2步中,获取了下一个新的URL地址之后,会将新的URL地址放到URL队列中。v 4)从URL队列中读取新的

    11、URL,并依据新的URL爬取网页,同时从新网页中获取新URL,并重复上述的爬取过程。v 5)满足爬虫系统设置的停止条件时,停止爬取。在编写爬虫的时候,一般会设置相应的停止条件。如果没有设置停止条件,爬虫则会一直爬取下去,一直到无法获取新的URL地址为止,若设置了停止条件,爬虫则会在停止条件满足时停止爬取。10.1.3实现原理实现原理10.1.3实现原理实现原理v 2.聚焦网络爬虫v 聚焦网络爬虫,由于其需要有目的地进行爬取,所以对于通用网络爬虫来说,必须要增加目标的定义和过滤机制,具体来说,此时,其执行原理和过程需要比通用网络爬虫多出三步,即目标的定义、无关链接的过滤、下一步要爬取的URL地址

    12、的选取等。v 1)对爬取目标的定义和描述。在聚焦网络爬虫中,我们首先要依据爬取需求定义好该聚焦网络爬虫爬取的目标,以及进行相关的描述。v 2)获取初始的URL。v 3)根据初始的URL爬取页面,并获得新的URL。v 4)从新的URL中过滤掉与爬取目标无关的链接。因为聚焦网络爬虫对网页的爬取是有目的性的,所以与目标无关的网页将会被过滤掉。同时,也需要将已爬取的URL地址存放到一个URL列表中,用于去重和判断爬取的进程。10.1.3实现原理实现原理v 5)将过滤后的链接放到URL队列中。v 6)从URL队列中,根据搜索算法,确定URL的优先级,并确定下一步要爬取的URL地址。在通用网络爬虫中,下一

    13、步爬取哪些URL地址,是不太重要的,但是在聚焦网络爬虫中,由于其具有目的性,故而下一步爬取哪些URL地址相对来说是比较重要的。对于聚焦网络爬虫来说,不同的爬取顺序,可能导致爬虫的执行效率不同,所以,我们需要依据搜索策略来确定下一步需要爬取哪些URL地址。v 7)从下一步要爬取的URL地址中,读取新的URL,然后依据新的URL地址爬取网页,并重复上述爬取过程。v 8)满足系统中设置的停止条件时,或无法获取新的URL地址时,停止爬行。v 现在我们初步掌握了网络爬虫的实现原理以及相应的工作流程,下面来了解网络爬虫的爬行策略。10.1.3实现原理实现原理10.1.4抓取策略抓取策略v 抓取策略主要有深

    14、度优先遍历策略、宽度优先遍历策略、反向链接数策略、最佳优先搜索策略、Partial PageRank策略、其他策略等。v 1.深度优先遍历策略v 深度优先遍历策略从起始网页开始,选择一个URL进入,分析这个网页中的URL,选择一个再进入。如此一个链接一个链接地抓取下去,直到处理完一条路线之后再处理下一条路线。10.1.4抓取策略抓取策略v 2.宽度优先遍历策略v 宽度优先遍历策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用宽度优先遍历策略。v 3.反向链接数策略v 反向链接数是指一个网页被其他网页链接指向的数量

    15、。反向链接数表示的是一个网页的内容受到其他人的推荐的程度。因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序。10.1.4抓取策略抓取策略v 4.最佳优先搜索策略v 最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析算法预测为“有用”的网页。存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索算法。因此需要将最佳优先结合具体的应用进行改进,以跳出局部最优点。研究表明,这样的闭环调整可以将无关网页数量降低

    16、30%90%。10.1.4抓取策略抓取策略v 5.Partial PageRank策略v Partial PageRank算法借鉴了PageRank算法的思想:对于已经下载的网页,连同待抓取URL队列中的URL,形成网页集合,计算每个页面的PageRank值,计算完之后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。v 如果每次抓取一个页面,就重新计算PageRank值,一种折中方案是:每抓取K个页面后,重新计算一次PageRank值。但是这种情况还会有一个问题:对于已经下载下来的页面中分析出的链接,也就是我们之前提到的未知网页那一部分,暂时是没有Page

    17、Rank值的。为了解决这个问题,会给这些页面一个临时的PageRank值:将这个网页所有入链传递进来的PageRank值进行汇总,这样就形成了该未知页面的PageRank值,从而参与排序。10.1.4抓取策略抓取策略v 6.OPIC策略v 该算法实际上也是对页面进行一个重要性打分。在算法开始前,给所有页面一个相同的初始现金(cash)。当下载了某个页面P之后,将P的现金分摊给所有从P中分析出的链接,并且将P的现金清空。对于待抓取URL队列中的所有页面按照现金数进行排序。v 7.大站优先策略v 对于待抓取URL队列中的所有网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载。这个策略

    18、也因此叫做大站优先策略。10.1.5更新策略更新策略v 常见的更新策略有以下三种:v 1.历史参考策略v 2.用户体验策略v 3.聚类分析策略v 在生活中,相信大家对分类已经非常熟悉,比如我们去商场,商场中的商品一般都分好类了,方便顾客去选购相应的商品,此时,商品分类的类别是固定的,是已经拟定好的。但是,假如商品的数量巨大,事先无法对其进行分类,或者说,根本不知道将会拥有哪些类别的商品,此时,我们应该如何解决将商品归类的问题呢?本章内容本章内容10.1网络爬虫的工作原理网络爬虫的工作原理10.2 Scrapy架构架构10.3 Scrapy安装及使用安装及使用10.4综合案例分析综合案例分析10

    19、.5本章小结本章小结10.2.1概述概述10.2.2组件组件v 1)Scrapy Engine(Scrapy引擎)v Scrapy引擎是用来控制整个系统的数据处理流程,并进行事务处理的触发。更多的详细内容可以看下面的数据处理流程。v 2)Scheduler(调度)v 调度程序从Scrapy引擎接受请求并排序列入队列,并在Scrapy引擎发出请求后返还给他们。v 3)Downloader(下载器)v 下载器的主要职责是抓取网页并将网页内容返还给蜘蛛(Spiders)。v 4)Spiders(蜘蛛)v 蜘蛛是有Scrapy用户自己定义用来解析网页并抓取制定URL返回的内容的类,每个蜘蛛都能处理一个

    20、域名或一组域名。换句话说就是用来定义特定网站的抓取和解析规则。10.2.2组件组件v 5)Item Pipeline(项目管道)v 6)Downloader middlewares(下载器中间件)v 7)Spider middlewares(蜘蛛中间件)v 8)Scheduler middlewares(调度中间件)10.2.3数据处理流程数据处理流程1)爬虫引擎获得初始请求开始抓取。2)爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。3)爬虫调度器返回下一个请求给爬虫引擎。4)引擎请求发送到下载器,通过下载中间件下载网络数据。5)一旦下载器完成页面下载,将下载结果返回给爬虫引擎。6)

    21、引擎将下载器的响应通过中间件返回给爬虫进行处理。7)爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。8)引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。9)重复该过程(继续步骤1),直到爬取完所有的url请求。本章内容本章内容10.1网络爬虫的工作原理网络爬虫的工作原理10.2 Scrapy架构架构10.3 Scrapy安装及使用安装及使用10.4综合案例分析综合案例分析10.5本章小结本章小结10.3.1python安装包下载安装包下载v C:UsersLenovoAppDataLocalProgramsPythonPyt

    22、hon36-32Scriptsv C:UsersLenovoAppDataLocalProgramsPythonPython36-32v 在python3并不能完全支持Scrapy,因此为了完美运行Scrapy,我们使用python2.7来编写和运行Scrapy。在python官网https:/www.python.org/downloads/进行下载,下载的是windows x86 MSI install安装包,安装比较简单,只需要下一步就行。10.3.2Python的路径配置的路径配置v 在“系统变量”中的“系统变量”里面的path中,添加python的安装路径即可,如在操作系统WIN10

    23、环境下安装路径如下,双击我的电脑打开资源管理器,打开后在空白处右击,然后点击属性,找到高级系统设置,点击环境变量,如图10-8所示,设置Python的安装路径。10.3.3Scrapy安装安装v 在命令行下使用pip 命令安装Scrapy组件v windows平台需要依赖平台需要依赖pywin32,请根据自己系统,请根据自己系统32/64位选择下载安装,位选择下载安装,https:/ install pypiwin32安装,其它可能依赖的安装安装,其它可能依赖的安装包:包:lxml-3.6.4-cp27-cp27m-win_amd64.whl,VCForPython27.msi,依赖包下载:,

    24、依赖包下载:http:/ 通过运行命令scrapy startproject crown 创建项目v 文件说明:v items.py 设置数据存储模板,用于结构化数据,如:Django的Modelv pipelines.py 数据处理行为,如:一般结构化的数据持久化v settings.py 配置文件(爬虫相关的配置信息),如:递归的层数、并发数,延迟下载等v spiders 爬虫目录,如:创建文件,编写爬虫规则10.3.5编写爬虫编写爬虫v class XiaoHuarSpider(scrapy.spiders.Spider):v name=rule1v#allowed_domains=v

    25、start_urls=v http:/ v v def parse(self,response):v#print(response,type(response)v#from scrapy.http.response.html import HtmlResponsev#print(response.body_as_unicode()v v current_url=response.url#爬取时请求的urlv body=response.body#返回的htmlv unicode_body=response.body_as_unicode()#返回的html unicode编码v print b

    26、ody10.3.6运行爬虫运行爬虫v 通过命令行工具执行爬虫命令:v scrapy crawl rule1-nolog#rule1是项目名,见上面的代码rule1。v 格式:scrapy crawl 项目名 -nolog nolog意思是不显示日志,关于scrapy命令行工具请参见本章节其他部分说明。本章内容本章内容10.1网络爬虫的工作原理网络爬虫的工作原理10.2 Scrapy架构架构10.3 Scrapy安装及使用安装及使用10.4综合案例分析综合案例分析10.5本章小结本章小结10.4.1有限爬取综合实例有限爬取综合实例v 本案例将利用前面介绍的相关知识实现爬取豆瓣某个音乐下所有乐评的

    27、scrapy爬虫。v 1)需求分析v 豆瓣音乐是国内音乐资料及评论网站,现在我们有个爬取豆瓣音乐下所有的音乐评论(乐评)的需求,但是由于乐评属于音乐介绍下的子菜单,那么如何来爬取这些乐评呢?我们首先来分析一下豆瓣乐评的结构,以“我的一个道姑朋友”为例https:/ 下有12条评论,那么,我们现在如何在只知道这首歌url的情况下,爬取下面所有的乐评呢?v 我们在10.1小节中学习了爬虫的抓取策略:深度优先遍历策略、宽度优先遍历策略、反向链接数策略、Partial PageRank策略、OPIC策略策略 和大站优先策略等。本节爬取乐评可以采用深度优先遍历策略,因为按我们正则表达式捕获同规则下的ur

    28、l,音乐页面还有其他音乐的链接,那么爬虫就会跑偏,爬取乐评的时候可能会先去爬取其他音乐的乐评。如果为爬虫设置深度,爬虫将不会爬取更深的url,当爬完乐评后会返回到下一个音乐url,继续爬取。因此在scrapy框架中,我们在settings.py设置深度使用DEPTH_LIMIT参数,例如:DEPTH_LIMIT=5,该深度是相对于初始请求url的深度。v 经以上分析,我们可以得出豆瓣音乐乐评相对于起始音乐url的深度为4,那么我们在settings.py设置DEPTH_LIMIT=4。10.4.1有限爬取综合实例有限爬取综合实例v 2)创建项目v 使用命令scrapy startproject

    29、 douban创建douban项目v 3)编写爬虫v 使用推荐的pycharm工具打开上面创建的douban项目v 4)运行项目v 编写完爬取程序后,新建run.py文件,进行爬虫程序的运行,运行命令如下:v scrapy crawl review-o review.json 10.4.2多多个爬虫组合实例个爬虫组合实例v 在现实生活中会有多个爬虫组合实例的需求,既要爬取音乐详情又要爬取乐评,既要爬取电影详情又要爬取影评,如果按照单个项目方式,需要创建四个项目,分别来爬取音乐、乐评、电影、影评,按照这种方式,代码不仅有很多重合部分,而且还不容易维护爬虫。能否通过创建一个项目进行多种内容爬取,本

    30、案例就是通过创建一个项目进行多个爬虫爬取。爬取爬虫从豆瓣音乐、豆瓣电影的tag页,作为起始页开始爬取,并将爬取内容存储在数据库中。存储数据采用的数据库是最常用的MySQL数据库。从上面的实例中,我们了解到scrapy中的pipeline文件仍然没有用到,这个文件主要用于处理spider分发下来的item内容,我们可以在pipeline中处理文件的存储。10.4.3携程爬取实例携程爬取实例v 本案例采用selenium+phantomjs模拟浏览器行为获取携程机票相关数据,phantomjs浏览器下载地址:http:/npm.taobao.org/dist/phantomjs,并将爬取内容存储到json文件中。本章内容本章内容10.1网络爬虫的工作原理网络爬虫的工作原理10.2 Scrapy架构架构10.3 Scrapy安装及使用安装及使用10.4综合案例分析综合案例分析10.5本章小结本章小结10.5本章本章小结小结v 本章以Scrapy架构为基础,主要介绍了好几个经典的爬虫案例。通过读者最感兴趣的爬虫案例即掌握了Python的基本语法的应用,又学习了基于Scrapy架构的爬虫的设计和实现。在10.1至10.4小节中分别通过介绍了网络爬虫的工作原理、Scrapy架构、Scrapy的安装及使用,最后通过三个综合案例分析,能够让阅读者加深了理论的理解和知识点的应用。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Python程序设计-第10章-基于Scrapy架构的Python爬虫案例分析.pptx
    链接地址:https://www.163wenku.com/p-3573293.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库