參數(shù)配置

2019-03-22 12:54 更新

Colly是一個高度可定制的爬蟲框架。具有合理的默認(rèn)值,并提供了很多選項(xiàng)來更改這些默認(rèn)值。

Collector 配置

Collector的所有屬性可以在[這里](https://godoc.org/github.com/gocolly/colly#Collector)查到。官方推薦的初始化Collector的方式是`colly.NewCollector(options...)`。
  • 使用缺省值創(chuàng)建一個Collector
    c1 := colly.NewCollector()
  • 創(chuàng)建Collector并修改 User-Agenturl revisit選項(xiàng):
    c2 := colly.NewCollector(
    colly.UserAgent("xy"),
    colly.AllowURLRevisit(),
    )

    或者你也可分開設(shè)置:

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

其實(shí)可以在爬蟲job的任意時刻,通過修改Collector的屬性來修改配置,一個比較好的實(shí)踐就是創(chuàng)建一個 User-Agent switcher,這樣可以在每次請求之前,更換新的User-Agent。

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())
})

通過環(huán)境變量來配置Collector

colly支持通過環(huán)境變量更改Collector的默認(rèn)配置。這允許我們在不重新編譯的情況下調(diào)整Collector。環(huán)境解析是Collector初始化的最后一步,因此初始化后的每個配置更改都會覆蓋從環(huán)境解析的配置。

可配置的環(huán)境變量

  • 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的默認(rèn)http客戶端作為網(wǎng)絡(luò)層??梢酝ㄟ^更改默認(rèn)的HTTP roundtripper來調(diào)整HTTP選項(xiàng)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號