douzhan8303 2019-05-02 03:34
浏览 1069
已采纳

Golang url.Parse总是返回无效的控制字符URL

I'm trying to scrape some site using proxy that i get from free-proxy-list.net and apply it in my local http request using Golang, but when i parse the proxy using url.Parse() always return Invalid Control Character URL

func getProxy() *url.URL {
    proxyUrl := "https://www.proxy-list.download/api/v1/get?type=http&country=US"
    client := &http.Client{}
    req, err := http.NewRequest("GET", proxyUrl, nil)
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Error proxy ", err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("Error response body", err)
    }
    details := string(body)
    temp := strings.Split(details, "
")
    fmt.Println("http://" + temp[rand.Intn(30)])
    checkProxy, err := url.Parse("http://" + temp[rand.Intn(10)])
    if err != nil {
        fmt.Println("Bad proxy URL", err)
    }

    return checkProxy
}
  • 写回答

2条回答 默认 最新

  • douao3063 2019-05-02 04:17
    关注
    proxyUrl := "https://www.proxy-list.download/api/v1/get?type=http&country=US"
    

    The content of this URL are lines in the format ip:port ´, i.e. the line delimiter is `, (DOS/Windows style).

    temp := strings.Split(details, "
    ")
    

    This splits the content by , i.e. the UNIX style line delimiter. This leaves the from the DOS line delimiter in the string, resulting in ip:port.

    ... always return Invalid Control Character URL

    It is the remaining in the line it is complaining about.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 请回答用户的提问 10月24日

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧