当前位置: 首页 > 软件库 > 应用工具 > 网络爬虫 >

Zerg

基于docker的分布式爬虫服务
授权协议 Apache
开发语言 Google Go
所属分类 应用工具、 网络爬虫
软件类型 开源软件
地区 国产
投 递 者 郦祺
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

 zerg

    基于docker的分布式爬虫服务

特性

  • 多机多 IP,充分利用 IP 资源

  • 服务自动发现和注册(基于 etcd 和 registrator)

  • 负载均衡

  • 服务端客户端通信基于 gRPC,支持多种编程语言的客户端

  • 可设置抓取超时

  • 支持 GET、HEAD、POST 方法

  • 支持自定义 header

如何部署

第一步:配置 etcd

我把 etcd 容器化了,并开发了脚本使得部署 etcd cluster 非常容易,见 github.com/huichen/etcd_docker

为了容灾,请至少在三台服务器上运行 etcd 实例。为了方便调用,你可以固定 etc endpoint 的端口号,并在所有机器上手工添加 etcd host 的 hostname。

第二步:启动 registrator 服务发现程序

你需要在集群的每一台服务器上都运行 registrator,这使得我们可以自动发现和注册分布式服务

docker run -d --name=registrator --net=host --volume=/var/run/docker.sock:/tmp/docker.sock \
  gliderlabs/registrator etcd://<etcd 接入点的 ip:port>/services

请把上面的 etcd 接入点换成你的 etcd 地址。

第三步:部署 zerg 服务

进入 service_container 子目录,然后运行

./build_docker_image.sh

这会生成 unmerged/zerg 容器。然后在集群的每台服务器上启动容器:

docker run -d -P unmerged/zerg

registrator 会自动注册这些服务到 etcd。如果单机有多个 IP,你可以单机启动多个容器,并在 -P 中分别指定 IP。

第四步:调用样例代码

进入 examples 目录,运行

go run zerg_crawl.go --endpoints http://<你的 etcd host:ip> --url http://taobao.com

可选步骤

1、重新生成 protobuf service

protoc protos/crawl.proto --go_out=plugins=grpc:protos -I protos/

2、本地测试

启动本地服务。进入 service_container 目录,然后运行

go run service.go

然后进入 examples 目录,运行

go run single_machine_crawl.go --url http://taobao.com
  • 韩国的Zerg随便拉一个出来都是大师级的,但最让我欣赏的还是yellow ChoJJA和小胖这三种风格截然不同的Zerg。    yellow的Zerg老练圆滑,以稳为主,以正面冲突居多,讲究围棋的官子功夫,也就是一个“棉”字。局部冲突中yellow时常不会轻易放弃丢失的阵地,无论这批敌人多么强大,yellow也会慢慢消耗掉对方的兵力,现在很少看到Yellow的Zerg象以前一样从头到尾的骚扰贯穿

  • 【创始实验】  被称做萨尔那加(Xel Naga)的神秘种族被自己不断在生命创造式的渴望所驱动,来到了名为翁(Aiur)的边境星球。翁的巨大丛林中进化出了萨尔那加所看过的最为先进的种族。萨尔那加人相信,他们可以藉著自己超群的生物科技,来将这些生物的进化导向物理上的完美极限。日後,萨尔那加人将会把这个种族命名为『神民』,这个种族快速的进化,并且到达了他们的创造者所称的『单纯、独特的个体』的境界。  

  • 链接:https://ac.nowcoder.com/acm/contest/303/H 来源:牛客网   题目描述 1v1,是星际争霸(StarCraft)中最常见的竞技模式。   tokitsukaze进行了n场1v1。在每一场的1v1中,她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择,分别有a个单位和b个单位。因为tokitsukaze不太擅长玩人类(Terran),所以她肯

  • 题目 链接:https://ac.nowcoder.com/acm/contest/303/H 来源:牛客网 1v1,是星际争霸(StarCraft)中最常见的竞技模式。 tokitsukaze进行了n场1v1。在每一场的1v1中,她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择,分别有a个单位和b个单位。因为tokitsukaze不太擅长玩人类(Terran),所以她肯定不会选择人

  • 一 创始实验   被称做萨尔那加(Xel Naga)的神秘种族被自己不断在生命创造式的渴望所驱动,来到了名为翁(Aiur)的边境星球。翁的巨大丛林中进化出了萨尔那加所看过的最为先进的种族。萨尔那加人相信,他们可以藉著自己超群的生物科技,来将这些生物的进化导向物理上的完美极限。日後,萨尔那加人将会把这个种族命民为『神民』,这个种族快速的进化,并且到达了他们的创造者所称的『单纯、独特的个体』的境界。很

 相关资料
  • 互联网时代的信息爆炸是很多人倍感头痛的问题,应接不暇的新闻、信息、视频,无孔不入地侵占着我们的碎片时间。但另一方面,在我们真正需要数据的时候,却感觉数据并不是那么容易获取的。比如我们想要分析现在人在讨论些什么,关心些什么。甚至有时候,可能我们只是暂时没有时间去一一阅览心仪的小说,但又想能用技术手段把它们存在自己的资料库里。哪怕是几个月或一年后再来回顾。再或者我们想要把互联网上这些稍纵即逝的有用信息

  • 在前面我们已经掌握了Scrapy框架爬虫,虽然爬虫是异步多线程的,但是我们只能在一台主机上运行,爬取效率还是有限。 分布式爬虫则是将多台主机组合起来,共同完成一个爬取任务,将大大提高爬取的效率。 16.1 分布式爬虫架构 回顾Scrapy的架构: Scrapy单机爬虫中有一个本地爬取队列Queue,这个队列是利用deque模块实现的。 如果有新的Request产生,就会放到队列里面,随后Reque

  • 本文向大家介绍关于爬虫和反爬虫的简略方案分享,包括了关于爬虫和反爬虫的简略方案分享的使用技巧和注意事项,需要的朋友参考一下 前言 爬虫和反爬虫日益成为每家公司的标配系统。 爬虫在情报获取、虚假流量、动态定价、恶意攻击、薅羊毛等方面都能起到很关键的作用,所以每家公司都或多或少的需要开发一些爬虫程序,业界在这方面的成熟的方案也非常多。 有矛就有盾,每家公司也相应的需要反爬虫系统来达到数据保护、系统稳定

  • 本文向大家介绍基于C#实现网页爬虫,包括了基于C#实现网页爬虫的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了基于C#实现网页爬虫的详细代码,供大家参考,具体内容如下 HTTP请求工具类: 功能: 1、获取网页html 2、下载网络图片 多线程爬取网页代码: 截图: 以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 本文向大家介绍基于python爬虫数据处理(详解),包括了基于python爬虫数据处理(详解)的使用技巧和注意事项,需要的朋友参考一下 一、首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数 1.1、设置变量 set @变量名=值 1.2 、length()函数 char_length()函数区别 1.3、 replace(

  • 本文向大家介绍基于python 爬虫爬到含空格的url的处理方法,包括了基于python 爬虫爬到含空格的url的处理方法的使用技巧和注意事项,需要的朋友参考一下 道友问我的一个问题,之前确实没遇见过,在此记录一下。 问题描述 在某网站主页提取url进行迭代,爬虫请求主页时没有问题,返回正常,但是在访问在主页提取到的url时出现了400状态码(400 Bad Request)。 结论 先贴出结论来

  • 4. 编写基本的爬虫 在WebMagic里,实现一个基本的爬虫只需要编写一个类,实现PageProcessor接口即可。这个类基本上包含了抓取一个网站,你需要写的所有代码。 同时这部分还会介绍如何使用WebMagic的抽取API,以及最常见的抓取结果保存的问题。

  • 本文向大家介绍如何基于Python爬虫爬取美团酒店信息,包括了如何基于Python爬虫爬取美团酒店信息的使用技巧和注意事项,需要的朋友参考一下 一、分析网页 网站的页面是 JavaScript 渲染而成的,我们所看到的内容都是网页加载后又执行了JavaScript代码之后才呈现出来的,因此这些数据并不存在于原始 HTML 代码中,而 requests 仅仅抓取的是原始 HTML 代码。抓取这种类型