婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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爬蟲實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 柳林县| 油尖旺区| 瓦房店市| 友谊县| 台东市| 浦县| 富川| 云安县| 长丰县| 陇南市| 宜兴市| 石家庄市| 克东县| 错那县| 定州市| 衡东县| 麟游县| 洞头县| 福鼎市| 铁岭县| 花莲县| 康马县| 邹平县| 新巴尔虎左旗| 阜新市| 大姚县| 厦门市| 慈溪市| 德江县| 潞城市| 宜君县| 凤冈县| 左云县| 怀远县| 饶平县| 海阳市| 屏山县| 基隆市| 高陵县| 台东县| 孟村|