主頁 > 知識庫 > Go語言實現(xiàn)的web爬蟲實例

Go語言實現(xiàn)的web爬蟲實例

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

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

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

復制代碼 代碼如下:
package main
import (
    "fmt"
)
type Fetcher interface {
        // Fetch 返回 URL 的 body 內(nèi)容,并且將在這個頁面上找到的 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: 不重復抓取頁面。
        // 下面并沒有實現(xiàn)上面兩種情況:
    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 是返回若干結(jié)果的 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語言程序設(shè)計有所幫助。

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Go語言實現(xiàn)的web爬蟲實例》,本文關(guān)鍵詞  語言,實現(xiàn),的,web,爬蟲,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go語言實現(xiàn)的web爬蟲實例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Go語言實現(xiàn)的web爬蟲實例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章