Colly是一個高度可定製的抓取框架。它有合理的默認值,並提供了大量的選項來更改它們。網絡
收集器屬性的完整列表能夠在這裏找到。初始化收集器的推薦方法是使用 colly.NewCollector(options...)。框架
建立一個具備默認設置的收集器:dom
c1 := colly.NewCollector()
建立另外一個收集器,並更改用戶代理和url從新操做:url
c2 := colly.NewCollector( colly.UserAgent("xy"), colly.AllowURLRevisit(), )
或者代理
c2 := colly.NewCollector() c2.UserAgent = "xy" c2.AllowURLRevisit = true
經過覆蓋收集器的屬性,能夠在抓取做業的任什麼時候候更改配置。code
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()) })
收集器的默認配置能夠經過環境變量更改。這容許咱們在不從新編譯的狀況下微調收集器。環境解析是收集器初始化的最後一步,所以初始化以後的每一個配置更改都會覆蓋從環境中解析的配置。blog
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)Colly使用Golang的默認http客戶端做爲網絡層。能夠經過更改默認的HTTP往返器調整HTTP選項。ip
c := colly.NewCollector() c.WithTransport(&http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, DualStack: true, }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, }