问题描述
在爬虫项目中,我觉得通常会出现代理不可用的情况。因此,我想在 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 (将#修改为@)