参数配置
2019-03-22 12:54 更新
Colly是一个高度可定制的爬虫框架。具有合理的默认值,并提供了很多选项来更改这些默认值。
Collector 配置
Collector的所有属性可以在[这里](https://godoc.org/github.com/gocolly/colly#Collector)查到。官方推荐的初始化Collector的方式是`colly.NewCollector(options...)`。
- 使用缺省值创建一个Collector
c1 := colly.NewCollector()
- 创建Collector并修改
User-Agent
和url 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选项。
以上内容是否对您有帮助:
← 快速上手
更多建议: