Golang搭建并行版爬虫信息采集框架

栏目: Go · 发布时间: 6年前

内容简介:Go语言在分布式系统领域有着更高的开发效率,提供了海量并行的支持。本博文介绍的是采用Go语言搭建一个并行版爬虫信息采集框架,博文中使用58同城中租房网页做案例。相比较其他爬虫程序它的优点是:程序源代码放到github上,链接地址是:下面是项目整体架构的示意图:

1.简介

Go语言在分布式系统领域有着更高的开发效率,提供了海量并行的支持。本博文介绍的是采用 Go 语言搭建一个并行版爬虫信息采集框架,博文中使用58同城中租房网页做案例。相比较其他爬虫程序它的优点是:

  • 1.抓取信息速度非常快,因为是并行处理的,通过配置协程数量,可以比普通的爬虫信息采集程序快上上百倍。
  • 2.功能模块化,每个功能模块各司其职,配置简单。通过修改信息抓取规则,就可以采集不同网站中的数据。

程序源代码放到github上,链接地址是: https://github.com/GuoZhaoran/crawler

2.项目架构

下面是项目整体架构的示意图:

Golang搭建并行版爬虫信息采集框架

2.1 Request(请求)

该爬虫架构中Request请求可以理解为:抓取请求url的内容,例如抓取58同城北京市的租房信息时,请求的url是: https://bj.58.com/chuzu/

打开url会发现,网页页面中是房源列表信息,那么接下来要做的工作就是抓取房源详情信息和分页后的下一页房源列表信息。于是就会有新的请求Request,对应不同的url链接地址。

2.2 Worker(工作者)

我们在拿到Request请求之后,抓取到网页页面内容,就需要有单独的程序去解析页面,提取相关信息,这就是worker所要做的工作。

2.3 Request队列和Worker队列

Go语言在构建并行处理程序中有着天然的优势,在该框架中处理Request请求和使用Worker提取相关信息也都是并行工作的。程序中会同时存在着很多个Request,也会有很多个Worker在处理不同Request页面中的内容。所以分别需要一个Request队列和Worker队列来管理它们。

2.4 Scheduler(调度器)

调度器的职责是将Request分配给空闲的Worker来处理,实现任务调度。因为Request和Worker分别使用队列进行管理,可以通过调度器来控制程序的运行过程,例如:分配不同数量的Worker,将特定的Request分配给相应的Worker进行处理等。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

梦断代码

梦断代码

Scott Rosenberg / 韩磊 / 电子工业出版社 / 2008.06 / 49.00元

软件乃是人类自以为最有把握,实则最难掌控的技术。本书作者罗森伯格对OSAF主持的Chandler项目进行田野调查,跟踪经年,试图借由Chandler的开发过程揭示软件开发中的一些根本性大问题。. 本书是讲一事,也是讲百千事;是写一软件,也是写百千软件;是写一群人,也是写百千万人。任何一个在软件领域稍有经验的技术人员看完本书,必掩卷长叹:做软件难。...一起来看看 《梦断代码》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具