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

主頁 > 知識庫 > 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爬蟲實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 崇阳县| 汉阴县| 兰西县| 慈利县| 通榆县| 天祝| 马山县| 土默特右旗| 涞源县| 张家界市| 九龙县| 乐亭县| 诏安县| 宜兰市| 兴和县| 缙云县| 甘德县| 东阿县| 保山市| 平顶山市| 高密市| 札达县| 永吉县| 巫山县| 长岭县| 湄潭县| 钟山县| 新乡市| 东港市| 延庆县| 扶沟县| 福贡县| 荔浦县| 东明县| 宜昌市| 那坡县| 合川市| 嘉兴市| 调兵山市| 微山县| 池州市|