colly 配置 ##4

配置

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)

HTTP配置

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,
}
相關文章
相關標籤/搜索