开发者社区 问答 正文

Golang使用goquery报错 400 请求报错 

最近刚开始学习golang,想着做个例子练练手,本想着做个小爬虫的,结果就这么出错了

I:\GoPath\src\github.com\andybalholm\cascadia\parser.go:11:2: cannot find package "golang.org/x/net/html" in any of:
c:\go\src\golang.org\x\net\html (from $GOROOT)
I:\GoPath\src\golang.org\x\net\html (from $GOPATH)

import (
    "github.com/PuerkitoBio/goquery"

	)

展开
收起
kun坤 2020-05-29 23:03:24 577 分享 版权
阿里云 AI 助理回答

遇到这个错误是因为Go在尝试导入golang.org/x/net/html包时找不到它。这个问题通常可以通过以下几个步骤解决:

  1. 设置代理:由于golang.org的包实际上托管在Google服务器上,直接访问可能受限,特别是在中国大陆地区。你可以通过设置环境变量来使用代理访问这些包。编辑你的系统环境变量,添加以下内容(如果你使用的是git代理,这应该已经设置好了):

    对于Windows:

    GOENV= GOPROXY=https://goproxy.io,direct
    

    对于Linux或macOS,在你的bashrc或zshrc文件中添加:

    export GOPROXY=https://goproxy.io,direct
    

    然后,重启终端或命令提示符。

  2. 安装缺少的包:确保你的go环境正确设置了GOPATHGOROOT。然后,使用下面的命令尝试手动安装缺失的包:

    go get -v golang.org/x/net/html
    
  3. 检查GO111MODULE: 如果你是在使用Go Modules(Go 1.11及以上版本引入),确认你的项目是否启用了模块功能。可以在命令行检查当前模块模式:

    go env GO111MODULE
    

    如果返回off且你想在这个项目中使用模块,可以临时开启模块支持或者在项目根目录下创建一个go.mod文件来自动启用。然后再次尝试安装包。

  4. 验证GOPATHGOBIN: 确保你的GOPATH设置正确,并且GOBIN(如果设置了的话)包含在你的系统PATH环境变量中。这样Go能够找到并使用正确的路径来安装和查找包。

  5. 清理并重新获取依赖:如果上述方法都不奏效,尝试清理旧的依赖并重新获取。进入你的项目目录,执行以下命令:

    go clean -modcache
    go mod tidy
    

    或者,如果你没有使用Go Modules:

    go clean
    go get -u ./...
    

完成以上步骤后,再尝试编译你的程序,问题应该得到解决。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: