go - 如何使用 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(假设不会重复切换)?
解决方案
推荐阅读
- laravel - 如何在 Laravel+lighthouse graphql 中实现高级验证规则?
- flyway - 在 Quarkus 中打包自定义 Flyway 版本
- javascript - 如何每秒在索引中连续输出每个数字?
- sql - SQL 查询未返回预期结果
- javascript - 纯 JavaScript 防止键盘输入/单击,直到计时器用完
- .htaccess - How can I Redirect subdomain with path to root domain without this path
- sql - SQL MAX() 函数未按预期工作
- excel - 如何在没有VBA的情况下在EXCEL中反转文本
- tensorflow2.0 - 使用损失`binary_crossentropy`时。这种损失期望目标具有与输出相同的形状
- sql - Bigquery Full Join ON 多个条件