Go语言爬虫出现403问题解决

前言

最近在做慕课网上《Google工程师带你深度了解Go语言》中的项目,一个单任务版的爬虫。现在爬取了网页信息,解析了用户页面之后,出现了错误,如下
Fetcher:errorfetching url http://album.zhenai.com/u/XXXX:wrong status code:403

代码如下:

resp, err := http.Get(url)

现在将解决的过程如下记录:
解决方案:模仿浏览器访问。

  1. 什么是Uuser-agent?
  • User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

  • 常常要用server抓资料时,都会碰到直接使用wget和curl被服务器拒绝的状况。通常简单加个user-agent伪装一下就会过了。

2.查看自己浏览器中的User-Agent 信息。
进入浏览器,我用的是qq浏览器,按住F12,或者单击右键点击检查
Go语言爬虫出现403问题解决_第1张图片

3.在Network中,点击ALL,如果没有结果,按ctrl+R,之后找到对应Name下的网站名,在Headers中最后可以看到user-agent
Go语言爬虫出现403问题解决_第2张图片

4.将以下代码替换:

	resp, err := http.Get(url)
	if err != nil {
		panic(err)
		return nil, err
	}

	defer resp.Body.Close()

替换成:

	client := &http.Client{}
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		panic(err)
		return nil, err
	}
	req.Header.Set("User-Agent", "XXXX")//刚才找到的浏览器中User-agent

	resp, err := client.Do(req)
	if err != nil {
		log.Fatalln(err)
	}


	defer resp.Body.Close()

之后运行就不会再出现403错误了。

你可能感兴趣的:(计算机语言---go语言)