如何用最小的代价完成爬虫需求

本文探讨如何以最小代价实现分布式爬虫,满足不同领域的需求。通过模块化设计,包括分布式抓取、系统管理与监控、通用性和扩展性。系统分为应用层、服务层、业务处理层和调度层,实现可配置化和实时监控,以应对各种爬虫挑战。
摘要由CSDN通过智能技术生成

一 缘起
如何用最小的代价完成爬虫需求。在我工作的多家公司,有众多的领域,如房产,电商,广告等领域。尽管业务相差很大,但都涉及到爬虫领域。开发爬虫项目多了后,自然而然的会面对一个问题——
这些开发的爬虫项目有通用性吗?
有没有可能花费较小的代价完成一个新的爬虫需求?
在维护运营过程中,是否能够工具化,构建基于配置化的分布式爬虫应用?
这就是是我们今天要讨论的话题。
二 项目需求
立项之初,我们从使用的脚度试着提几个需求。
1. 分布式抓取
由于抓取量可能非常庞大,一台机器不足以处理百万以上的抓取任务,因此分布式爬虫应用是首当其冲要面对并解决的问题。
2. 模块化,轻量
我们将爬虫应用分成“应用层,服务层,业务处理层,调度层” 四个脚色。
3. 可管理,可监控
管理监控是一个体系,即配置可管理化,运行实时监控化。在系统正常运行时,可以变更爬虫的配置,一旦实时监控爬虫出现异常,可实时修正配置进行干预。所有的一切,均可以通过UI界面进行操作。
4. 通用性,可扩展。
爬虫业务往往多变,不同领域的爬取需求不尽相同。举例说,房源抓取包含图片抓取,小区信息抓取,房源去重等模块。新闻抓取包括内容抓取,正文提取,信息摘要等相关。
因此,系统需要能够支持业务扩展需求,可以支持不同的业务使用同一套框架进行应用开发。
三 模块分解
针对业务需求,我们将系统分解成多个应用模块。
应用层
应用层是针对管理员,系统维护人员使用。主要分成两个模块,系统配置模块和运营管理模块。
系统配置模块:系统配置模块包含抓取网站管理配置,在线测试等功能。
运营管理模块:运营管理模块包含实时抓取量统计,分析,正确率等。甚至包括失败原因,失败量。
系统运营人员可以根据运营模块得到实时的反馈,使用系统配置模块进行配置修正,在线测试正确后将配置生效,再实时监控新的配置产生的效果。
服务层
服务层是整个系统传输的中枢,相当于整个分布式集中的系统总线和数据总线。服务层提供一个http/thrift接口,读取数据库,输出配置信息。
a. 提供网站爬虫配置接口。从数据库中实时读取配置信息,响应业务层的配置请求。
b. 提供业务层输出写入接口。接受业务层实时爬取的信息汇总,包括正确数据量,错误数据量,以及错误原因。
c. 提供实时报表统计分析。响应应用层的运营管理模块,查询数据库,实时提供数据分析报告。
业务处理层
业务处理层是整个爬虫系统的核心,可分成多台应用服务器进行处理。业务处理层主要包含解决两件事情。
如何获取url
得到url后,如何处理
(一) 如何获取url
对于爬虫来说,如何获取url至关重要。我们将这一过程定义为发现系统。对于发现系统而言,目标为如何发现待抓取网站的详细url列表,尽可能的发现更全。
假设场景 A
我们逛一个电商网站:打开首页-打开分类页-可能会有多层分类页-逐层点击-直至最小的分类页面。
打开这个分类页会发现该分类页下的所有分页页面,一页一页往下翻,就能够获得该分类页的所有商品。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值