这个是《Google资深工程师深度讲解golang》中的爬虫项目,官方没有提供源码,是我自学期间逐步完善的,前端页面重找了个模板,效果还是不错的。
ElasticSearch中文分词不准确的缘故,因此带有中文的检索并不准确。 若要提高精确度,可以给ElastciSearch安装一个中文分词插件
docker docker中开个elasticsearch镜像
为了方便,小编已经将下面这些包下载到src中了,可以直接用
- gopm
为了便于从google服务器拉取某些go包
go get -u github.com/gpmgo/gopm
- golang.org/x/net/html 用于自动发现当前html页面是哪种编码
gopm get -g -v golang.org/x/net/html
- golang.org/x/text 用于对文本内容进行转码
gopm get -g -v golang.org/x/text
- ElasticSearch客户端 不解释,这东西搞IT的都应该懂 小编的ElasticSearch服务器端用的5.x版本,因此安装的elastic.v5,具体请到该地址对号入座:https://github.com/olivere/elastic
go get -v gopkg.in/olivere/elastic.v5
- 所有终端初始时候都在
go-zhenai-spider/src
这个目录下 - 第一个终端启动itemsaver,用于保存数据到elasticsearch:
go run crawler_distributed/persist/server/itemsaver.go --port=1234
- 第2个终端启动worker1,爬取解析数据:
go run crawler_distributed/worker/server/worker.go --port=9000
- 第3个终端启动worker2,爬取解析数据:
go run crawler_distributed/worker/server/worker.go --port=9001
- 第4个终端启动worker3,爬取解析数据:
go run crawler_distributed/worker/server/worker.go --port=9002
- 第5个终端启动main,客户端:
go run itemsaver_host=":1234" worker_hosts=":9000,:9001,9002"
- 分布式爬虫运行中