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

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

内容简介: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进行处理等。


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

查看所有标签

猜你喜欢:

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

程序开发心理学

程序开发心理学

(美)杰拉尔德·温伯格 / 邓俊辉 / 清华大学出版社 / 2004-1-1 / 39.00元

本书开创"以人为本"研究方法的先驱,在长达25年的岁月中一直保持活力,至今仍在继续。1997年,本书作者温伯格因其在软件领域的杰出贡献,被美国计算机博物馆的计算机名人堂选为首批5位成员之一。 在计算机界,还没有任何一本计算机方面的书,在初次出版之后,能够在长达25年的岁月中一直保持活力--而且这种活力到今天仍在继续。《程序开发心理学》是开创"以人为本"研究方法的先驱,它以其对程序员们在智力、......一起来看看 《程序开发心理学》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具