Skip to content
/ carwler Public

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

Notifications You must be signed in to change notification settings

dcg123/carwler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go爬虫

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

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

Go爬虫单机版

处理和分发爬取珍爱网用户信息的数据任务

单任务版爬虫架构

单任务版爬虫架构

  • 输入请求,通过Engine去解析每个请求,并分发每个请求。
  • 对于一个总请求,通过正则解析出每个城市和每个城市的url,在城市列表解析其中加入城市解析函数,最后加入请求队列中

爬虫总体算法

解析器

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

爬虫总体算法框架

并发版爬虫框架

单任务版爬虫架构

Scheduler实现I

简单调度器

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

简单调度器

Scheduler实现II

并发调度器

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

并发调度器

Scheduler实现III

队列并发调度器

  • 使用request队列来保存请求,worker队列来保存worker相应的request的操作
  • 使用调度器来实现request队列分发给worker队列

队列并发调度器

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages