中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言學習爬蟲框架總結

發布時間:2020-07-14 16:16:07 來源:網絡 閱讀:947 作者:jinjiang2009 欄目:建站服務器

??最近主攻go的學習,在學完了基礎語法,看完了無聞翻譯的《The way to go》和ccmouse大神的慕課網課程后,感覺基礎差不多了,繼續深入挖掘ccmouse大神的爬蟲項目,收獲頗豐,感覺還是有一定的難度的,會繼續啃下去,學習之余感覺自己實在是井底之蛙,無數光陰盡數浪費,無所建樹,思維停留在最原始的層面,無法向前邁進;慶幸現在有所覺悟,人生匆匆幾十載,時間是最寶貴的,不論哪個領域,選擇一個自己認定的,低下頭向前沖刺,豐富自己的頭腦,提升自己的認知。好像扯得有點遠了,下面是項目的總結。

  1. 項目有一個main.go的入口文件,然后是各個子目錄功能文件夾;如圖:go語言學習爬蟲框架總結 engine是總的控制文件,把請求和正則解析push到總的slice []request中,fetcher主要是通過http庫去獲取頁面body信息,model是要保存的人的信息struct
  2. 說完了目錄結構,接下來介紹下流程:go語言學習爬蟲框架總結
  3. 整個單機版爬蟲項目比較簡單,但對我來說收貨還是比較大的,其中涉及到一些技術細節,如接口定義,結構方法的使用,
  4. 后面還有并發版本和分布式版本,就比較復雜了,并發版是充分使用go的goroutine和chan,要在大的方向上理清楚思路,抽象出一些公用的方法和結構,重要的正則解析要做test工作,然后在此指引下一步步構建,不可盲目前進。首先并發版需要兩個chan,一個in :=chan Request和另一個out:=chan ParseResult,并發版啟動WorkerCount個goroutine去并發獲取in chan url內容并解析出新url推送到out chan,同時并發版有一個scheduler調度器, 將初始的爬取Request(包括url和對應的parser,因為每個網址的parser規則不同所以要成組傳輸)放進scheduler里的workerChan即前面定義的in chan, 他倆是一個chan, 程序開始并發執行,由于執行的比較快會被爬取網站斷掉, 可以用time.Tike(time)來限制速度,另爬取時可能要設置相應的header頭,否則會被屏蔽掉.
  5. 由于并發版多個worker都在爭搶Request去執行,控制力度比較小,只適用于單機,不適合多機器分布式部署,故演化出第三個版本:隊列實現.隊列執行效率和并發版執行效率差不多. scheduler調度器中有rqquestChan chan Request 和 workerChan chan chan Request(注意這里是兩個chan), 在run方法中定義一個out chan ParseResult,和并發版相比而言,隊列版多了workerChan 這個chan,主要用來實現隊列的調度。試著描述下整個過程不一定清晰:go語言學習爬蟲框架總結
  6. 下面附上幾張ccmouse大神的講課ppt供大家理解,如有不清楚的歡迎下方留言討論。go語言學習爬蟲框架總結go語言學習爬蟲框架總結go語言學習爬蟲框架總結
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仪陇县| 虹口区| 临高县| 滨海县| 灵宝市| 郧西县| 锡林浩特市| 连南| 靖州| 炉霍县| 施秉县| 吉木乃县| 平安县| 许昌市| 永平县| 仪征市| 卓尼县| 钟祥市| 河间市| 宕昌县| 昆明市| 麦盖提县| 博爱县| 苗栗县| 金平| 旅游| 上林县| 英德市| 措美县| 古蔺县| 白河县| 民权县| 北宁市| 郎溪县| 措勤县| 迭部县| 温泉县| 论坛| 于都县| 井陉县| 平邑县|