首页 > 文章列表 > Go语言做爬虫状态码返回418的问题解决

Go语言做爬虫状态码返回418的问题解决

golang
162 2022-12-17

背景

 在使用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)

	}

}