Colly 是一个可高度定制话的爬虫框架, 它提供了很多对其定制化的方式。
在代码中配置
创建一个默认的collectorc1 := colly.NewCollector()
创建collector时,修改UA和revisit(多次访问同一个url)
c2 := colly.NewCollector(
colly.UserAgent("user agent"),
colly.AllowURLRevisit(),
)
在发出请求前修改UA
c := colly.NewCollector()
c.OnRequest(func (r *colly.Request) {
r.Headers.Set("User-Agent", "your user agent")
})
通过环境变量配置
Collector默认配置信息,可以通过环境变量进行配置,这样就不同为了修改一点配置而重新编译程序
环境变量:
ALLOWED_DOMAINS (comma separated list of domains)
CACHE_DIR (string)
DETECT_CHARSET (y/n)
DISABLE_COOKIES (y/n)
DISALLOWED_DOMAINS (comma separated list of domains)
IGNORE_ROBOTSTXT (y/n)
MAX_BODY_SIZE (int)
MAX_DEPTH (int - 0 means infinite)
PARSE_HTTP_ERROR_RESPONSE (y/n)
USER_AGENT (string)
HTTP配置
colly使用了Golang默认的Http client作为网络层,要修改http请求过程中的参数,如加入代理,超时之类的,可以通过修改默认的HTTProundtrripper来修改
c := colly.NewCollector()
c.WithTransport(&http.Transport{
Proxy: http.ProxyFormEnvironment,
DiaContext: (&net.Dialer{
Timeout: 30*time.Second,
KeyAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimepout : 1 * time.Second,
})