首页 >> Golang >> 内容页

GoColly的Collector配置方式

Colly 是一个可高度定制话的爬虫框架, 它提供了很多对其定制化的方式。

在代码中配置

创建一个默认的collector
c1 := 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,
})