Skip to content

Go语言编写单机版,并发版,分布式版网络爬虫🕷

Notifications You must be signed in to change notification settings

lliei0x/Crawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go分布式爬虫

处理和分发爬取珍爱网用户信息的数据任务,并提供关键字收索以及简单前端页面数据展示

  • 基于 Go 语言标准库开发网络爬虫,不使用现有的爬虫库/框架
  • 使用 Docker 容器运行 ElasticSearch 作为数据存储以及全文收索引擎
  • 使用 Go 语言标准模板库实现http数据展示部分
  • 爬虫框架由单任务版过渡到并发版(多个 Goroutine} ),直至分布式爬取数据

爬虫总体算法

解析器

  • 输入:utf-8 编码的文本
  • 输出:Request{URL,对应Parser} 列表,Item 列表

爬虫总体算法框架

单任务版爬虫架构

单任务版爬虫架构

并发版爬虫框架

单任务版爬虫架构

Scheduler实现I

简单调度器

  • 所有 Worker 共用一个输入
  • 实现效率过慢,等待耗时操作

简单调度器

Scheduler实现II

并发调度器

  • 并发分发Request
  • 控制力弱, 分发出去的goroutine,就收不回来了;并且所有Worker都在抢同一个channel的东西,也没办法控制
  • 限制了负载均衡

并发调度器

\\实现关键语句 

func (s *SimpleScheduler) Submit(r engine.Request) {
	go func() {
		s.workerChan <- r
	}()

}

About

Go语言编写单机版,并发版,分布式版网络爬虫🕷

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages