解決Go語言做爬蟲狀態碼返回418
阿新 • • 發佈:2021-01-25
背景
在使用Go語言做爬蟲時,使用http.Get(url)
去獲取網頁內容,狀態碼返回404,Body體為空。
原因分析
http.Get(url)
是不需要設定header屬性的http請求,比較簡單快捷,但狀態碼返回418,表明我們需要設定其header屬性,那麼我們可以使用http.NewRequest
,在設定其header屬性即可~
程式碼部分
func main7() {
client := &http.Client{}
url := "https://movie.douban.com/top250?start=0&filter="
reqest, err := http.NewRequest("GET", url, nil)
//設定header屬性
reqest.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 OPR/66.0.3515.115")
if err!=nil {
fmt.Println(err)
return
}
response, _ := client.Do(reqest)
defer response.Body.Close()
buf := make([]byte,4096)
var result string
for {
n,err:=response.Body.Read(buf)
if n == 0 {
fmt.Println("讀取網頁完成")
break
}
if err!=nil && err!=io.EOF {
fmt.Println("resp body err",err)
return
}
result += string(buf[:n])
//列印讀取的網頁
fmt.Println(result)
}
}
問題解決~