zoukankan      html  css  js  c++  java
  • golang实现并发爬虫一(单任务版本爬虫功能)

    目的是写一个golang并发爬虫版本的演化过程。

    那么在演化之前,当然是先跑通一下单任务版本的架构。

    正如人走路之前是一定要学会爬走一般。

    首先看一下单任务版本的爬虫架构,如下:

    这是单任务版本爬虫的一个架构:

    第一步是将seed送到engine里去。

    第二步是将seed里的url给到fetcher,fetcher会从网络上获取文本内容。

    第三步是将获取下来的文本内容给到parser,parser会根据一定的转换规则获取到request和需要打印或者存储的item给到engine里。

    其中parser返回的request会继续给到engine里维护的一个队列中去,只要request有值就会一直去fethcer和parser。

    另外这里的fetcher和parser因为fetcher的返回值是parse的传入参数值,所以这里其实可以合并成一个模块,比如一个叫worker的模块。

    后面升级的架构就只有worker模块,fetcher和parser则只是worker模块里的实现模块了。

    目前,此版本架构的缺点:

    1.没有很好的利用golang的channel,engine里一直是处于单任务的状态。尤其是fetcher模块,这里获取网络里的内容会格外的需要时间一些。

    此单任务版本可有源码?

    有,地址如下:

    https://github.com/anmutu/du_crawler/tree/master/02crawler

    这个版本还是蛮好懂的。这里注明了,大概的一个流程。想了解详细还是看源码的好。

  • 相关阅读:
    枚举与常量需要注意的一个问题
    parted分区用法
    Linux下常用服务的端口号
    NFS服务
    mount用法
    Rsync服务部署
    常见的RAID级别
    SQL注入语句 (很全)
    数据库被注入daxia123或cn.jxmmtv.com原因及解决办法
    StringTemplate.net模板技术用法
  • 原文地址:https://www.cnblogs.com/anmutu/p/12725642.html
Copyright © 2011-2022 走看看