作为程序员呢。我们在专注学习研究技术的同时,也需要关注一些技术的热点。那怎么才能关注技术热点,比如现在的技术人员在研究些什么、关注些什么?
方法当然是上主流的技术社区,了解现在的技术人员在研究些什么东西。
这里我们说的主流的技术社区,认为是 Github 。因为这个托管网站实在是存在太多值得你研究的东西、巨多开源的技术值得你去研究。
Github 专门有一个链接指向当天最热门的项目。从这一个侧面,我们大概可以了解到热门的语言的一些热门项目。
还可以根据编程语言查看热门的项目:
比如:
Python Github Trending Python
我们的目的是:抓取这些热门的项目的一些信息。(因为我发现,不管是Python 还是Go 爬虫似乎总能很好的激发学习者的兴趣)


任务就是抓取上面两张图中的内容,步骤如下:
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
定位为:主函数入口
下载器

注意点:错误处理机制,建议每个文件的开头定义一些错误信息。
二、项目源码
1、解析器

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

2)定义结构体:

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

4、主函数入口

三、扩展
这个项目的组织结构能够很好的扩展,比如说,我又想抓取其他网页,即重新再parse定义个新的解析器即可,其他部分可以复用。
另外,最后抓取的字段并没有填充进定义的结构体内。
现成的别人的实现方式:josephyzhou/github-trending
作者:谢小路
链接:https://www.jianshu.com/p/aa41ba7aef0f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。