首页 > 解决方案 > 如何使用 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

我没有在官方文档中找到有关代理错误的信息。所以,我只能使用查找密钥字符串,比如proxyconnect在错误消息中定位代理错误?

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

标签: gogo-colly

解决方案


推荐阅读