网络爬虫框架设计与实现

引题

最近在看go语言的编程实现,里面有这个项目,感觉不错,在这里简
要总结和学习心得,给大家一个引路,如果想要具体了解可以看《GO 语言并发实践》

项目介绍

网络爬虫就是模拟客户端用户操作,自动化爬取相关的网络信息。即根据约定好的规则,在特定的入口进行递归式查询。下载特定的信息,整理给规则制定者。网络爬虫框架是高度抽象各种网络爬虫,提供一致性的接口给调用者。

功能需求和分析

根据上面介绍大家大体了解网络爬虫的基本功能,简要的的来讲网络爬虫就是下载,分析,筛选,保存—四个步骤。主要流程如下:

  • 首次请求-》下载——》分析-》筛选-》保存
  • 分析-》下载

总体设计

根据上述流程图可以把项目分成如下部分:

  • 网页下载器: 接收http请求,将从远程服务器获取的数据封装成固定格式的数据分发给分析器。
  • 分析器:针对内容进行响应,筛选出来特定的请求和条目,转发给调用方。
  • 条目处理管道:接受输入的条目,并针对其执行系列的处理。为了灵活性设计,采用多条目转发处理。由框架调用者自行定义处理流程。
  • 调度器:作为核心组件,负责协调各个模块之间的协作,数据的交换和状态控制等。

详细设计

后面我将整理文章针对详每个模块提出详细实现和注意事项。

首先,简单介绍下网络爬虫   网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(设置为主页)开始,读取网页的内容,找到网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到这个网站所有的网页都抓取完为止。实际上,由于抓取技术的限制以及存储技术、处理技术的限制,要完全抓取网站的所有网页是不可能的,也是不实际的!本着从用户需要为出发点,实际需要抓取的网页往往是有限的,只需抓取符合用户要求的网页即可! 抓取网页的策略 在抓取网页的时候,网络爬虫一般有两种策略(即两种搜索方法),广度优先和深度优先。 广度优先:是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此页面中链接的所有页面。这是最常用的方式,广度优先的搜索策略可以并行处理,提高抓取速度。 深度优先:是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这种策略较易实现,但是抓取速度慢。 由于一般不可能抓取网站的所有链接,一般会设置访问层数,即搜索深度。起始页的深度为0,起始页中的链接url深度为1,依此类推。 构造C#语言的爬虫程序 C#已经封装了HTTP访问和多线程,这对编写网络爬虫提供了方便,而要C#网络爬虫程序需要解决以下问题: HTML分析:需要某种HTML解析器来分析爬虫程序遇到的每一个页面。 页面处理:需要处理每一个下载得到的页面。下载得到的内容需要保存起来,以便进一步分析处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值