go 爬取hyCrawler 项目总结

  1. 自下而上开始写,好处就是调试方便,很容易把 demo 跑起来。但是缺点就是缺乏自上而下那种顶层设计,留下的问题只有到几个模块拼接起来用时才会发现。

这次使用 redis,好处就是做一些缓存,真心非常爽,把一些东西直接丢进去就好了。但是坏处就是使用 hash,一个网址是否被爬过,被爬过几次,是否存储成功,这些都各需要一个hash。甚至都不能把网址作为key值来存储,因为网址的domain 会发生改变。

这样比较起来,就会看出 mysql 的好处,这些数据完全是表中的一条记录,如果使用 mysql 一条 sql 就可以把所有的状态全部都提取出来。

  1. 没有构造函数。结构体初始化时,应该使用 newXX 的方法,我后面才看到,这时候我写的代码结构已经比较混乱了。

  2. 错误队列里面放什么我没考虑清楚,最初我想的是把失败的url放进去以便后期重复抓取,但是现在去看的时候发现里面既有url视频地址还有 page 搜索页的地址。

  3. 我本想把一些基础的东西给抽象成模块,以便在其他的项目中复用,但是我写来写去都是 main 包,我觉得这么写是非常不妥当的。

  4. 使用 redis 存储时,存储一个json 是最妥当的。

你可能感兴趣的:(go 爬取hyCrawler 项目总结)