如何使用 OnError 函数获取代理错误

问题描述

在爬虫项目中,我觉得通常会出现代理不可用的情况。因此,我想在 OnError() 中捕获此错误。但是我无法获取此请求中使用的 IP(为了从代理池中删除此 ip 以避免其他收集器从池中获取此 ip),我打印了 r.Request.PorxyUrl,但是一个空字符串

p,_ := proxy.RoundRobinProxySwitcher("1.1.1.1","2.2.2.2","3.3.3.3")
c.SetProxyFunc(p)
// c.SetProxy("1.1.1.1")

c.OnError(func(r *colly.Response,e error) {
    fmt.Println("------------------")
    fmt.Println(r.Request.ProxyURL)
    fmt.Println(e)
    fmt.Println("------------------")
})
e := c.Visit("https://www.google.com")
fmt.Println(e)

我从标准输出得到这些:

------------------
                  <- proxyUrl ouput nothing
Get "https://www.google.com": proxyconnect tcp: dial tcp :0: connect: can't assign requested address
------------------
Get "https://www.google.com": proxyconnect tcp: dial tcp :0: connect: can't assign requested address

我没有在官方文档中找到有关代理错误的信息。因此,我只能使用查找键字符串,例如 error msg 中的 proxyconnect 来定位代理错误

还有一个问题是,如果我使用Retry(),会不会切换到别人的代理ip(假设不会重复切换)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)