GoLang 爬蟲 模擬傳送HTTP請求

2021-09-26 14:44:14 字數 1960 閱讀 7800

golang的標準庫net/http可以實現client和server的功能開發。簡單來說,client就是我們向伺服器傳送http請求,常用於訪問api介面獲取相應資料、開發網路爬蟲等功能;server是開發伺服器web應用,也就說我們常說的**開發。

本博文講述如何使用golang的標準庫net/http開發網路爬蟲,我們首先以http的get請求為例,該請求實現自定義請求頭、設定cookies資訊和設定**ip,這三個功能滿足大多數網路爬蟲的開發需求,詳細**如下。

)//使用第三方mahonia實現網頁內容的轉碼

func converttostring(src string, srccode string, tagcode string) string

func main()

//為請求物件newrequest設定請求頭

//設定cookies資訊

//設定**ip,**ip必須以為fun形式表示

// 因為transport的proxy是以函式方法形式命名

//在client物件設定引數transport即可實現**ip

//執行http請求

resp, err := client.do(req)

//獲取http請求的響應內容

if err != nil

//讀取響應內容

body, err := ioutil.readall(resp.body)

//將響應內容轉換utf-8編碼

result := converttostring(string(body), "gbk", "utf-8")

if err != nil

//輸出網頁內容

fmt.println(result)

//輸出響應內容的cookies資訊

for _, v := range resp.cookies()

}上述**中,github.com/axgle/mahonia是第三方的包,因此我們需要在cmd視窗輸入安裝指令。

go get github.com/axgle/mahonia
如果上述**改為post請求,可以將請求物件newrequest改為post請求方式,**如下。

// 將req, err := http.newrequest("get",urls, nil)改為:

// strings.newreader("name=cjb")為請求引數data

req, err := http.newrequest("post", urls, strings.newreader("name=cjb"))

上述的post和get請求都是基於請求物件newrequest的基礎上實現的,它能根據開發需求設定不同的cookies、請求頭和**ip。如果我們只是想實現簡單的post和get請求,可以使用標準庫的get和post方法,詳細**如下。

// postform方法引數data必須為url.values格式,url.values來自標準庫"net/url"

// get方法只有引數url

golang語言傳送json格式的http請求

func testget resp,err client.do req if err nil defer resp.body.close fmt.println response status resp.status fmt.println response headers resp.header ...

Python 使用request傳送http請求

requests.get headers response requests.post login headers headers,data data response requests.post login allow redirects false 注 若不禁止重定向,則當響應是302時,req...

Golang 模擬搜尋引擎爬蟲

建立請求 在請求頭中新增指定的ua req.header.add user agent useragent 發起請求並返回結果 res,client.do req 讀取資源資料 body,ioutil.readall res.body 寫入檔案 ioutil.writefile source.txt...