Colly是一個高度可定制的爬蟲框架。具有合理的默認值,并提供了很多選項來更改這些默認值。
Collector的所有屬性可以在[這里](https://godoc.org/github.com/gocolly/colly#Collector)查到。官方推薦的初始化Collector的方式是`colly.NewCollector(options...)`。
c1 := colly.NewCollector()
User-Agent
和 url revisit
選項:
c2 := colly.NewCollector(
colly.UserAgent("xy"),
colly.AllowURLRevisit(),
)
或者你也可分開設(shè)置:
c2 := colly.NewCollector()
c2.UserAgent = "xy"
c2.AllowURLRevisit = true
其實可以在爬蟲job的任意時刻,通過修改Collector的屬性來修改配置,一個比較好的實踐就是創(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())
})
colly支持通過環(huán)境變量更改Collector的默認配置。這允許我們在不重新編譯的情況下調(diào)整Collector。環(huán)境解析是Collector初始化的最后一步,因此初始化后的每個配置更改都會覆蓋從環(huán)境解析的配置。
Colly使用Golang的默認http客戶端作為網(wǎng)絡層。可以通過更改默認的HTTP roundtripper來調(diào)整HTTP選項。
更多建議: