处理和分发爬取珍爱网用户信息的数据任务,并提供关键字收索以及简单前端页面数据展示
- 基于
Go
语言标准库开发网络爬虫,不使用现有的爬虫库/框架 - 使用
Docker
容器运行ElasticSearch
作为数据存储以及全文收索引擎 - 使用
Go
语言标准模板库实现http数据展示部分 - 爬虫框架由单任务版过渡到并发版(多个
Goroutine}
),直至分布式爬取数据
- 输入:
utf-8
编码的文本 - 输出:
Request{URL,对应Parser}
列表,Item
列表
简单调度器
- 所有
Worker
共用一个输入- 实现效率过慢,等待耗时操作
并发调度器
- 并发分发Request
- 控制力弱, 分发出去的goroutine,就收不回来了;并且所有Worker都在抢同一个channel的东西,也没办法控制
- 限制了负载均衡
\\实现关键语句
func (s *SimpleScheduler) Submit(r engine.Request) {
go func() {
s.workerChan <- r
}()
}