Abot 爬虫分析-整体结构

1. 引言

在Github 上搜索下Web Crawler 有上千个开源的项目,但是C#的仅仅只有168 个,相比于Java 或者Python 确实少的可怜。如果按照Stars 排名。可以看到

排在第一位的是一个叫Abot的爬虫。通过这两天的测试,发现Abot是一个非常轻巧的爬虫。非常适合.Net程序员入门爬虫技术。

在上一篇博文中,已经简单的介绍了如何使用Abot爬取博客园的新闻数据。今天给大家介绍下Abot的整体结构。

2. 整体结构

Abot的项目非常简单,核心的只有一个Project,但是里面已经包含了线程调度、Html 解析等核心模块。Abot的入口是PoliteWebCrawler,只需要它的一个Instance就可以启动爬虫。

整体的爬取流程大概是这样子的,以爬取博客园新闻数据为例:

上图中 绿色的箭头表示线程从Url Repository获取需要爬取的Url, 黑色的箭头表示线程将未爬取Url放入Url Repository。

主要的模块有:

1) Url Repository 存储所有需要爬取的Url,底层的实现采用了ConcurrentQueue,因此是线程安全的,也满足了先进先出的规则。

2) Thread Manager 管理所有的爬取线程,线程个数默认是当前处理器的个数,也可以通过Config 指定。

3) Robots 处理robots.txt 的模块,Abot 直接封装了NRobotsPatched 来解析robots.txt

4) LinkParser解析当前爬取到的page 中的链接,Abot 很大程度上利用了HtmlAgilityPack

5) Crawled Url Repository 存储已经爬取的Url,Abot 内部有多个实现

6) Http download 采用了HttpWebRequest 和 HttpWebResponse

7) Memory Monitor 主要是监控内存使用等等,可以通过Config设置爬虫的内存使用上限等

8) Event 相关,主要是在适当的时候触发像Start Crawl 等事件

这是Abot的代码目录

3. 总结

本文主要介绍下Abot 的整体结构,从代码量来看还是非常的轻巧,但是里面具体的实现还是有不少细节性的东西。

对于.Net 程序员是个非常好的学习项目。以后再给大家分析下具体模块的实现。

欢迎访问我的个人网站 51zhang.net 网站还在不断开发中…

时间: 2024-10-18 18:58:17

Abot 爬虫分析-整体结构的相关文章

Abot爬虫和visjs

利用Abot爬虫和visjs 呈现漫威宇宙 1. 引言 最近接触Abot爬虫也有几天时间了,闲来无事打算从IMDB网站上爬取一些电影数据玩玩.正好美国队长3正在热映,打算爬取漫威近几年的电影并用vis这个JS库呈现下漫威宇宙的相关电影. Abot是一个开源的C#爬虫,代码非常轻巧.可以参看这篇文章(利用Abot 抓取博客园新闻数据)入门Abot. Vis 是一个JS的可视化库类似于D3.vis 提供了像Network 网络图的可视化,TimeLine 可视化等等.这里用到了network,只需要

python&php数据抓取、爬虫分析与中介,有网址案例

最近在做一个网络爬虫程序,后台使用python不定时去抓取数据,前台使用php进行展示 网站是:http://se.dianfenxiang.com python&php数据抓取.爬虫分析与中介,有网址案例,布布扣,bubuko.com

利用Abot爬虫和visjs 呈现漫威宇宙

1. 引言 最近接触Abot爬虫也有几天时间了,闲来无事打算从IMDB网站上爬取一些电影数据玩玩.正好美国队长3正在热映,打算爬取漫威近几年的电影并用vis这个JS库呈现下漫威宇宙的相关电影. Abot是一个开源的C#爬虫,代码非常轻巧.可以参看这篇文章(利用Abot 抓取博客园新闻数据)入门Abot. Vis 是一个JS的可视化库类似于D3.vis 提供了像Network 网络图的可视化,TimeLine 可视化等等.这里用到了network,只需要给vis传入简单的节点信息,边的信息就可以自

10- python 网络爬虫分析

Python 网络爬虫简单分析 1 import urllib2 2 response = urllib2.urlopen("http://www.baidu.com") 3 print response.read() 我们下面开始分析代码 response = urllib2.urlopen("http://www.baidu.com") 这里我们利用的是urllib2库中的urlopen方法,这里可以知道这是一个http协议的网址,urlopen一般接受三个参数

.net使用abot爬虫简单例子

abot是.net爬虫框架中的一种,Abot是一个开源的.net爬虫,速度快,易于使用和扩展.项目的地址是https://code.google.com/p/abot/. 爬取的html解析,我们使用AngleSharp,项目的地址:https://github.com/AngleSharp/AngleSharp 首先我们需要配置abot private static readonly Uri FeedUrl = new Uri("https://www.jd.com/allSort.aspx&

拉勾网大数据相关岗位数据爬虫分析

拉勾网大数据相关招聘数据分析 观察对象:大数据相关岗位的招聘数据 观察时间:2016.3.28 数据来源:拉勾网 1.分析目的 目前,大数据是一个非常热门的话题,受到很多人的关注和追捧,其创造的相关职业也受到大家的青睐.但大数据相关职业究竟是什么样,有怎么样的要求,有怎样的待遇还不为多数人所知,为了更好的了解大数据相关职业要求及其福利待遇进行本次数据分析. 2.数据采集 1 数据来源:拉勾网,拉勾网是专业的互联网招聘平台,专注互联网职业机会,其数据具有代表性: 2 数据类型:json类型数据:

基于Node.js的裁判文书网爬虫分析

因为笔者在线上实习时的需求,需要做一个裁判文书网的爬虫,本以为,一个政府网站爬虫嘛会有多难?但当笔者开始爬的时候,笔者发现自己错了,困难重重!好在最后解决了,笔者将代码重构放在github上之后在这里写下了写这个爬虫的整个思路. 笔者实现的爬虫地址:https://github.com/cuijinyu/lawBug 原理分析 获取列表 首先,打开裁判文书网的页面,进入我们眼帘的是这样的画面 一个大大的搜索框,我们的思路大致也从这里开始. 我们打开开发者工具,进行一次搜索,看看都会发生哪些事情.

python 爬虫分析30年香港电影

前言 上个礼拜接触爬虫,本身对香港电影比较感兴趣,这2天就去拿豆瓣数据做了份香港近30年电影的分析 正文 数据来源豆瓣 这些路径是有规律 ,设置好循环条件,拿到电影url在进行下一步,在这之前有一部分电影我们过滤掉,典型的就是没有评分的电影,没有评分电影大部分是演出晚会,B级片等电影, 读者有兴趣可以查下,这些电影的数据可用性差我不来拿分析,香港上世纪90-99电影总数2700+,过滤后拿到的1100+.近30年电影初步得到是2500+ 然后分析页面结构,电影名会有多的 ,我是空格分开后取的第一

Flume-NG源码分析-整体结构及配置载入分析

在 http://flume.apache.org 上下载flume-1.6.0版本,将源码导入到Idea开发工具后如下图所示: 一.主要模块说明 flume-ng-channels 里面包含了filechannel,jdbcchannel,kafkachannel,memorychannel通道的实现. flume-ng-clients 实现了log4j相关的几个Appender,使得log4j的日志输出可以直接发送给flume-agent:其中有一个LoadBalancingLog4jApp