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

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

  • 相关阅读:
    camp训练day2
    LCA板子题
    牛客多校第一场
    P1063 能量项链 区间DP
    64. Minimum Path Sum
    46. Permutations
    216. Combination Sum III
    62. Unique Paths
    53. Maximum Subarray
    22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/anmutu/p/12725642.html
Copyright © 2011-2022 走看看