colly 配置 ##4

配置

Colly是一个高度可定制的抓取框架。它有合理的默认值,并提供了大量的选项来更改它们。

 

收集器的配置

收集器属性的完整列表可以在这里找到。初始化收集器的推荐方法是使用 colly.NewCollector(options...)。

创建一个具有默认设置的收集器:

c1 := colly.NewCollector()

创建另一个收集器,并更改用户代理和url重新操作:

c2 := colly.NewCollector(
	colly.UserAgent("xy"),
	colly.AllowURLRevisit(),
)

  

或者

c2 := colly.NewCollector()
c2.UserAgent = "xy"
c2.AllowURLRevisit = true

  

通过覆盖收集器的属性,可以在抓取作业的任何时候更改配置。

 一个很好的例子是用户代理切换器,它在每次请求时都会改变用户代理:
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())
})

 

通过环境变量进行配置 

收集器的默认配置可以通过环境变量更改。这允许我们在不重新编译的情况下微调收集器。环境解析是收集器初始化的最后一步,因此初始化之后的每个配置更改都会覆盖从环境中解析的配置。

 

环境变量配置

  • 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选项

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,
}

  

posted @ 2019-09-23 10:22  golang-jack  阅读(1042)  评论(0编辑  收藏  举报