校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Go語言實現的web爬蟲實例

Go語言實現的web爬蟲實例

熱門標簽:智能營銷軟件 旅游廁所如何電子地圖標注 外呼系統多少錢一年 經常接到推銷電話機器人的電話 客服級電銷機器人 滁州自建外呼系統 外呼系統如何接收服務密碼 工商信用卡外呼系統教程 海外照相館地圖標注入駐

本文實例講述了Go語言實現的web爬蟲方法。分享給大家供大家參考。具體分析如下:

這里使用 Go 的并發特性來并行執行 web 爬蟲。
修改 Crawl 函數來并行的抓取 URLs,并且保證不重復。

復制代碼 代碼如下:
package main
import (
    "fmt"
)
type Fetcher interface {
        // Fetch 返回 URL 的 body 內容,并且將在這個頁面上找到的 URL 放到一個 slice 中。
    Fetch(url string) (body string, urls []string, err error)
}
// Crawl 使用 fetcher 從某個 URL 開始遞歸的爬取頁面,直到達到最大深度。
func Crawl(url string, depth int, fetcher Fetcher) {
        // TODO: 并行的抓取 URL。
        // TODO: 不重復抓取頁面。
        // 下面并沒有實現上面兩種情況:
    if depth = 0 {
        return
    }
    body, urls, err := fetcher.Fetch(url)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("found: %s %q\n", url, body)
    for _, u := range urls {
        Crawl(u, depth-1, fetcher)
    }
    return
}
func main() {
    Crawl("http://golang.org/", 4, fetcher)
}
// fakeFetcher 是返回若干結果的 Fetcher。
type fakeFetcher map[string]*fakeResult
type fakeResult struct {
    body string
    urls     []string
}
func (f *fakeFetcher) Fetch(url string) (string, []string, error) {
    if res, ok := (*f)[url]; ok {
        return res.body, res.urls, nil
    }
    return "", nil, fmt.Errorf("not found: %s", url)
}
// fetcher 是填充后的 fakeFetcher。
var fetcher = fakeFetcher{
    "http://golang.org/": fakeResult{
        "The Go Programming Language",
        []string{
            "http://golang.org/pkg/",
            "http://golang.org/cmd/",
        },
    },
    "http://golang.org/pkg/": fakeResult{
        "Packages",
        []string{
            "http://golang.org/",
            "http://golang.org/cmd/",
            "http://golang.org/pkg/fmt/",
            "http://golang.org/pkg/os/",
        },
    },
    "http://golang.org/pkg/fmt/": fakeResult{
        "Package fmt",
        []string{
            "http://golang.org/",
            "http://golang.org/pkg/",
        },
    },
    "http://golang.org/pkg/os/": fakeResult{
        "Package os",
        []string{
            "http://golang.org/",
            "http://golang.org/pkg/",
        },
    },
}

希望本文所述對大家的Go語言程序設計有所幫助。

您可能感興趣的文章:
  • Go語言服務器開發實現最簡單HTTP的GET與POST接口
  • 利用Go語言搭建WebSocket服務端方法示例
  • Go語言使用HTTP包創建WEB服務器的方法
  • 利用Go語言初步搭建一個web應用的教程
  • go語言實現通過FTP庫自動上傳web日志
  • Go語言實現簡單Web服務器的方法
  • Go語言實現簡單的一個靜態WEB服務器
  • Go語言實現的一個簡單Web服務器
  • 解決Golang在Web開發時前端莫名出現的空白換行
  • golang基于websocket實現的簡易聊天室程序
  • Go語言Web編程實現Get和Post請求發送與解析的方法詳解

標簽:運城 喀什 楚雄 深圳 九江 晉城 湘潭 本溪

巨人網絡通訊聲明:本文標題《Go語言實現的web爬蟲實例》,本文關鍵詞  語言,實現,的,web,爬蟲,實例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言實現的web爬蟲實例》相關的同類信息!
  • 本頁收集關于Go語言實現的web爬蟲實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 仁怀市| 漠河县| 祁东县| 会泽县| 南江县| 太保市| 天水市| 秦安县| 南城县| 西青区| 泰来县| 乌拉特前旗| 东至县| 哈巴河县| 攀枝花市| 山西省| 石泉县| 南郑县| 二连浩特市| 娱乐| 宁明县| 岳普湖县| 梧州市| 遂川县| 永寿县| 观塘区| 新乐市| 长寿区| 罗平县| 彝良县| 莆田市| 启东市| 德庆县| 田林县| 濮阳市| 凭祥市| 永平县| 阳江市| 庄河市| 镇坪县| 台南县|