Python开源爬虫框架:Scrapy架构分析 - 为程序员服务.pdfVIP

Python开源爬虫框架:Scrapy架构分析 - 为程序员服务.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python开源爬虫框架:Scrapy架构分析 - 为程序员服务.pdf

Python开源爬虫框架:Scrapy架构分析 python ? scrapy 所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的 HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所 有HTML页面就是一个有待考究的问题了。?一般的方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前 页面获取到这些URL加入到爬虫的抓取队列中, 所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特 定网站网页的HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何 保证我们抓取到了网站的所有HTML页面就是一个有待考究的问题了。 一般的方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到 爬虫的抓取队列中,然后进入到新新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。 上面介绍的只是爬虫的一些概念而非搜索引擎,实际上搜索引擎的话其系统是相当复杂的,爬虫只是搜索引擎的一个 子系统而已。 Python开源的爬虫框架Scrapy是一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构 化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何 人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了 web2.0爬虫的支持。 一、概述 Scrapy是一个用?Python?写的?Crawler?Framework?,简单轻巧,并且非常方便,并且官网上说已经在实际生产中在使 用了,不过现在还没有?Release?版本,可以直接使用他们的?Mercurial?仓库里抓取源码进行安装。 Scrapy?使用?Twisted?这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种 需求。 Scrapy整体架构如下图所示,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示)。下面就来一个个解 释每个组件的作用及数据的处理过程。 绿线是数据流向,首先从初始?URL?开始,Scheduler?会将其交给?Downloader?进行下载,下载之后会交给?Spider?进 行分析,Spider?分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西 会被传回?Scheduler?;另一种是需要保存的数据,它们则被送到?Item?Pipeline?那里,那是对数据进行后期处理(详细 分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。 二、组件 1、Scrapy?Engine(Scrapy引擎) Scrapy引擎是用来控制整个系统的数据处理流程,并进行事务处理的触发。更多的详细内容可以看下面的数据处理流 程。 2、Scheduler(调度) 调度程序从Scrapy引擎接受请求并排序列入队列,并在Scrapy引擎发出请求后返还给他们。 3、Downloader(下载器) 下载器的主要职责是抓取网页并将网页内容返还给蜘蛛(?Spiders)。 4、Spiders(蜘蛛) 蜘蛛是有Scrapy用户自己定义用来解析网页并抓取制定URL返回的内容的类,每个蜘蛛都能处理一个域名或一组域 名。换句话说就是用来定义特定网站的抓取和解析规则。 蜘蛛的整个抓取流程(周期)是这样的: 1.? 首先获取第一个URL的初始请求,当请求返回后调取一个回调函数。第一个请求是通过调用start_requests()方 法。该方法默认从start_urls中的Url中生成请求,并执行解析来调用回调函数。 2.? 在回调函数中,你可以解析网页响应并返回项目对象和请求对象或两者的迭代。这些请求也将包含一个回调, 然后被Scrapy下载,然后有指定的回调处理。 3.? 在回调函数中,你解析网站的内容,同程使用的是Xpath选择器(但是你也可以使用BeautifuSoup,?lxml或其他 任何你喜欢的程序),并生成解析的数据项。 4.? 最后,从蜘蛛返回的项目通常会进驻到项目管道。 5、Item?Pipeline(项目管道) 项目管道的主要责任是负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档