资讯专栏INFORMATION COLUMN

让Scrapy的Spider更通用

MartinDai / 1127人阅读

摘要:而分配任务的是会员中心的爬虫罗盘,实现集中管理分布执行。开源即时网络爬虫项目同样也要尽量实现通用化。网址和提取规则本来应该硬编码到中的,现在隔离出来,由会员中心进行管理,那么就很容易做通用了。

1,引言

《Scrapy的架构初探》一文所讲的Spider是整个架构中最定制化的一个部件,Spider负责把网页内容提取出来,而不同数据采集目标的内容结构不一样,几乎需要为每一类网页都做定制。我们有个设想:是否能做一个比较通用的Spider,把定制部分再进一步隔离出去?

GooSeeker有一个爬虫群模式,从技术实现层面来考察的话,其实就是把爬虫软件做成一个被动接受任务的执行单元,给他什么任务他就做什么任务,也就是说同一个执行单元可以爬多种不同的网站。而分配任务的是GooSeeker会员中心的爬虫罗盘,实现集中管理分布执行。

开源Python即时网络爬虫项目同样也要尽量实现通用化。主要抓取以下2个重点:

网页内容提取器从外部注入到Spider中,让Spider变通用:参看《Python即时网络爬虫:API说明》,通过API从GooSeeker会员中心获得网页内容提取器,可以充分利用MS谋数台的直观标注快速生成提取器的能力。

抓取目标网址不再存于Spider,而是从外部获得:GooSeeker有个基于大数据平台的网址库系统,还有爬虫罗盘可观察网址的抓取状态,也有用户界面添加删除网址,把Spider进一步做成一个执行机构。
下面我们将进一步讲解实现原理,以助于读者阅读源码。

2,爬虫群模式示意图


中间蓝色部分就是GooSeeker会员中心的地址库和爬虫罗盘。网址和提取规则本来应该硬编码到Spider中的,现在隔离出来,由会员中心进行管理,那么Spider就很容易做通用了。

3,通用Spider的主要功能

地址库和提取规则隔离出来以后,Scrapy的Spider可以专注于以下流程:

通过API从GooSeeker会员中心获取内容提取器:这个API的url可以硬编码到Spider中,放在start_urls列表的位置, 这里本来是放目标网页地址的,现在换成一个固定的API地址,在这一点上,Spider变通用了

在第一个parse()过程,不是解析目标网页内容,而是把API中获得内容提取器注入到gsExtractor中。

在第一个parse()过程,为第二个API构造一个Request,目的是从GooSeeker会员中心获取要爬取的网址

在第二个parse()过程,用目标网址构造一个Request,这才是真正的交给Loader去下载目标网页

在第三个parse()过程,利用gsExtractor提取网页内容

在第三个parse()过程,再次为第二个API构造一个Request,获得下一个目标网址

跳到4,一直循环,直到GooSeeker会员中心的地址库都用完了。

4,接下来的工作

按照上述设想编写和调测Scrapy的通用Spider

研究是否可以更加通用,把GooSeeker的爬虫群调度都引入到Spider中,也就是在通过第一个API获得提取器之前再增加一个获得爬虫群调度任务的过程,这样,把所有Spider都变成被动接受任务的工作模式,每个Spider是不固定抓取规则的。

5,相关文档

Python即时网络爬虫项目: 内容提取器的定义

Scrapy:python3下的第一次运行测试

6,集搜客GooSeeker开源代码下载源

开源Python即时网络爬虫GitHub源

7,文档修改历史

2016-06-30:V1.0,首次发布
2016-06-30:V1.1,编辑修改,补充过程描述文字

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38047.html

相关文章

  • 爬虫入门

    摘要:通用网络爬虫通用网络爬虫又称全网爬虫,爬取对象从一些种子扩充到整个。为提高工作效率,通用网络爬虫会采取一定的爬取策略。介绍是一个国人编写的强大的网络爬虫系统并带有强大的。 爬虫 简单的说网络爬虫(Web crawler)也叫做网络铲(Web scraper)、网络蜘蛛(Web spider),其行为一般是先爬到对应的网页上,再把需要的信息铲下来。 分类 网络爬虫按照系统结构和实现技术,...

    defcon 评论0 收藏0
  • 爬虫入门

    摘要:通用网络爬虫通用网络爬虫又称全网爬虫,爬取对象从一些种子扩充到整个。为提高工作效率,通用网络爬虫会采取一定的爬取策略。介绍是一个国人编写的强大的网络爬虫系统并带有强大的。 爬虫 简单的说网络爬虫(Web crawler)也叫做网络铲(Web scraper)、网络蜘蛛(Web spider),其行为一般是先爬到对应的网页上,再把需要的信息铲下来。 分类 网络爬虫按照系统结构和实现技术,...

    Invoker 评论0 收藏0
  • Scrapy架构初探

    摘要:引言本文简单讲解一下的架构。没错,开源的通用提取器就是要集成到架构中,最看重的是的事件驱动的可扩展的架构。架构图就是针对特定目标网站编写的内容提取器,这是在通用网络爬虫框架中最需要定制的部分。 1. 引言 本文简单讲解一下Scrapy的架构。没错,GooSeeker开源的通用提取器gsExtractor就是要集成到Scrapy架构中,最看重的是Scrapy的事件驱动的可扩展的架构。除了...

    刘明 评论0 收藏0
  • Scrapy Demo

    摘要:用于下载网页内容,并将网页内容返回给。中间件位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应。包含了在启动时进行爬取的列表。对象经过调度,执行生成对象并送回给方法一般返回实例。 Scrapy 是什么 Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切...

    VEIGHTZ 评论0 收藏0
  • scrapy-redis分布式爬虫框架详解

    摘要:分布式爬虫框架详解随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。下载器中间件位于引擎和下载器之间的框架,主要是处理引擎与下载器之间的请求及响应。 scrapy-redis分布式爬虫框架详解 随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。由于互联网是开放的,每个人都可以在网络上...

    myeveryheart 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<