处理和分发爬取珍爱网用户信息的数据任务,并提供关键字收索以及简单前端页面数据展示
- 基于
Go
语言标准库开发网络爬虫,不使用现有的爬虫库/框架 - 使用
Docker
容器运行ElasticSearch
作为数据存储以及全文收索引擎 - 使用
Go
语言标准模板库实现http数据展示部分 - 爬虫框架由单任务版过渡到并发版(多个
Goroutine}
),直至分布式爬取数据
处理和分发爬取珍爱网用户信息的数据任务
- 输入请求,通过Engine去解析每个请求,并分发每个请求。
- 对于一个总请求,通过正则解析出每个城市和每个城市的url,在城市列表解析其中加入城市解析函数,最后加入请求队列中
- 输入:
utf-8
编码的文本 - 输出:
Request{URL,对应Parser}
列表,Item
列表
简单调度器
- 所有
Worker
共用一个输入- 实现效率过慢,等待耗时操作
并发调度器
- 并发分发Request
- 控制力弱, 分发出去的goroutine,就收不回来了;并且所有Worker都在抢同一个channel的东西,也没办法控制
- 限制了负载均衡
队列并发调度器
- 使用request队列来保存请求,worker队列来保存worker相应的request的操作
- 使用调度器来实现request队列分发给worker队列