咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 480|回复: 0

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

[复制链接]
  • TA的每日心情
    无聊
    2019-5-27 08:20
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2022-1-10 10:44:43 | 显示全部楼层 |阅读模式
    目录

      背景原因分析代码部分


    背景

    在使用Go语言做爬虫时,使用http.Get(url)去获取网页内容,状态码返回404,Body体为空。

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


    原因分析

    http.Get(url)是不需要设置header属性的http请求,比较简单快捷,但状态码返回418,表明我们需要设置其header属性,那么我们可以使用http.NewRequest,在设置其header属性即可~

    代码部分
    1. func main7()  {
    2.         client := &http.Client{}
    3.         url := "https://movie.douban.com/top250?start=0&filter="
    4.         reqest, err := http.NewRequest("GET", url, nil)
    5.         //设置header属性
    6.         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")
    7.         if err!=nil {
    8.                 fmt.Println(err)
    9.                 return
    10.         }
    11.         response, _ := client.Do(reqest)
    12.         defer response.Body.Close()
    13.         buf := make([]byte,4096)
    14.         var result string
    15.         for  {
    16.                 n,err:=response.Body.Read(buf)
    17.                 if n == 0 {
    18.                         fmt.Println("读取网页完成")
    19.                         break
    20.                 }
    21.                 if err!=nil && err!=io.EOF {
    22.                         fmt.Println("resp body err",err)
    23.                         return
    24.                 }
    25.                 result += string(buf[:n])
    26.                 //打印读取的网页
    27.                 fmt.Println(result)
    28.         }
    29. }
    复制代码
    到此这篇关于Go语言做爬虫状态码返回418的问题解决的文章就介绍到这了,更多相关Go语言爬虫返回418内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!

    原文地址:https://www.jb51.net/article/231862.htm

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-29 13:23

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表