阅读(1082) (0)

参数配置

2019-03-22 12:16:05 更新

Colly是一个高度可定制的爬虫框架。具有合理的默认值,并提供了很多选项来更改这些默认值。

Collector 配置

Collector的所有属性可以在[这里](https://godoc.org/github.com/gocolly/colly#Collector)查到。官方推荐的初始化Collector的方式是`colly.NewCollector(options...)`。
  • 使用缺省值创建一个Collector
    c1 := colly.NewCollector()
  • 创建Collector并修改 User-Agenturl revisit选项:
    c2 := colly.NewCollector(
    colly.UserAgent("xy"),
    colly.AllowURLRevisit(),
    )

    或者你也可分开设置:

    c2 := colly.NewCollector()
    c2.UserAgent = "xy"
    c2.AllowURLRevisit = true

其实可以在爬虫job的任意时刻,通过修改Collector的属性来修改配置,一个比较好的实践就是创建一个 User-Agent switcher,这样可以在每次请求之前,更换新的User-Agent。

const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"


func RandomString() string {
b := make([]byte, rand.Intn(10)+10)
    for i := range b {
        b[i] = letterBytes[rand.Intn(len(letterBytes))]
    }
    return string(b)
}


c := colly.NewCollector()


c.OnRequest(func(r *colly.Request) {
    r.Headers.Set("User-Agent", RandomString())
})

通过环境变量来配置Collector

colly支持通过环境变量更改Collector的默认配置。这允许我们在不重新编译的情况下调整Collector。环境解析是Collector初始化的最后一步,因此初始化后的每个配置更改都会覆盖从环境解析的配置。

可配置的环境变量

  • ALLOWED_DOMAINS (可访问的域名,是一个切片)
  • CACHE_DIR (string)
  • DETECT_CHARSET (y/n)
  • DISABLE_COOKIES (y/n)
  • DISALLOWED_DOMAINS (禁止访问的域名,是一个切片)
  • IGNORE_ROBOTSTXT (y/n)
  • MAX_BODY_SIZE (int)
  • MAX_DEPTH (int - 0 意味着无限制)
  • PARSE_HTTP_ERROR_RESPONSE (y/n)
  • USER_AGENT (string)

HTTP 配置

Colly使用Golang的默认http客户端作为网络层。可以通过更改默认的HTTP roundtripper来调整HTTP选项。