Go Project1. Github Trending(爬虫)

作为程序员呢。我们在专注学习研究技术的同时,也需要关注一些技术的热点。那怎么才能关注技术热点,比如现在的技术人员在研究些什么、关注些什么?

方法当然是上主流的技术社区,了解现在的技术人员在研究些什么东西。

这里我们说的主流的技术社区,认为是 Github 。因为这个托管网站实在是存在太多值得你研究的东西、巨多开源的技术值得你去研究。

Github 专门有一个链接指向当天最热门的项目。从这一个侧面,我们大概可以了解到热门的语言的一些热门项目。

Github Trending

还可以根据编程语言查看热门的项目:

比如:

Python    Github Trending Python

Go            Github Trending Go

我们的目的是:抓取这些热门的项目的一些信息。(因为我发现,不管是Python 还是Go 爬虫似乎总能很好的激发学习者的兴趣)

github trendingm Repositories
github trending Developer

任务就是抓取上面两张图中的内容,步骤如下:

1)定义抓取字段;

2)获取网页信息;

3)解析网页信息;

4)任务调度;

5)函数主入口;

一、项目结构

项目工程目录

1. download

定位为:下载器

download.go完成的是:获取网页源代码

2. engine

定位为:调度层

engine.go完成的是:爬虫任务的调度

object.go完成是的:定义抓取信息的手段

3. infra

定位为:基础设施

util.go完成的是:项目需要的一些辅助工具函数

4. parse

定位为:解析器

github/github_trending_parse.go完成的是:解析github网站的一些解析函数

5. main

定位为:主函数入口

下载器

download/download.go

注意点:错误处理机制,建议每个文件的开头定义一些错误信息。

二、项目源码

1、解析器

parse/github/github_trending_parse.go

2、调度器

1)负责串接:下载器和解析器,获取到抓取的字段

engine/engine.go

2)定义结构体:

engine/object.go

3、基础设施

即:一些字符串的处理函数,比如替换函数、拼接函数等

infra/util.go

4、主函数入口

main.go

三、扩展

这个项目的组织结构能够很好的扩展,比如说,我又想抓取其他网页,即重新再parse定义个新的解析器即可,其他部分可以复用。

另外,最后抓取的字段并没有填充进定义的结构体内。

现成的别人的实现方式:josephyzhou/github-trending


作者:谢小路

链接:https://www.jianshu.com/p/aa41ba7aef0f

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容