colly 使用多个收集器 ##8

使用多个收集器

如果任务足够复杂或具有不同类型的子任务,建议为一个抓取工作使用多个收集器。coursera course scraper就是一个很好的例子,它使用了两个收集器——一个解析列表视图并处理分页,另一个收集课程的详细信息。

注意:使用收集器。ID在调试中区分不同的收集器

 

克隆收集器

如果收集器具有类似的配置,可以使用收集器的Clone()方法。Clone()复制具有相同配置但没有附加回调的收集器。

c := colly.NewCollector(
	colly.UserAgent("myUserAgent"),
	colly.AllowedDomains("foo.com", "bar.com"),
)
// Custom User-Agent and allowed domains are cloned to c2
c2 := c.Clone()

  

在收集器之间传递自定义数据

使用collector的Request()函数可以与其他收集器共享上下文。

共享上下文的例子:

c.OnResponse(func(r *colly.Response) {
	r.Ctx.Put(r.Headers.Get("Custom-Header"))
	c2.Request("GET", "https://foo.com/", nil, r.Ctx, nil)
})

  

转载于:https://www.cnblogs.com/liujie-php/p/11571117.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值