獲取網頁html內容

                                                                    獲取網頁html內容

一、前言:轉載地址

    今天寫個簡單的程序,根據指定的 URL 來抓取相應的網頁內容,然後存入本地文件。這個程序會涉及到網絡請求和文件操作等知識點,下面是實現代碼:

二、代碼

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
)

func main() {
	//待獲取的網頁數據
	//url := os.Args[1]
	url := "https://blog.csdn.net/qq_36025814/article/details/85061666"

	// 根據URL獲取資源
	res, err := http.Get(url)

	if err != nil {
		fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
		os.Exit(1)
	}

	// 讀取資源數據 body: []byte
	body, err := ioutil.ReadAll(res.Body)

	// 關閉資源流
	res.Body.Close()

	if err != nil {
		fmt.Fprintf(os.Stderr, "fetch: reading %s: %v\n", url, err)
		os.Exit(1)
	}

	// 控制檯打印內容 以下兩種方法等同
	fmt.Printf("%s", body)
	fmt.Printf(string(body))

	// 寫入文件
	ioutil.WriteFile("site.txt", body, 0644)
}

三、代碼說明

    上面的代碼中,我們引入了 net/http 網絡包,然後調用 http.Get(url) 方法獲取 URL 對應的資源,之後讀取出資源數據,然後在控制檯打印,並將內容寫入到本地文件中。

    需要注意的是,在讀取資源數據完畢後,應該及時將資源流關閉,避免出現內存資源的泄露。

    另外,在處理異常時,我們使用了 fm.Fprintf() 這個方法,它是格式化三大方法之一:

  • Printf: 格式化字符串並輸出到 os.Stdout 中。
  • Fprintf: 格式化字符串並輸出到指定文件設備中,所以參數比 Printf 多一個文件指針 FILE*。
  • Sprintf: 格式化字符串並輸出到指定字符串中,所以參數比 Printf 多一個 char*,那就是目標字符串地址。

四、運行完程序,在當前目錄中會生成一個 site.txt 文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章