在使用Colly之前,请确保您有最新的版本。有关详细信息,请参阅安装指南。
让我们从一些简单的例子开始。
首先,你需要导入Colly到你的代码库:
import "github.com/gocolly/colly"
采集器
Colly的主要实体是一个收集器对象。收集器管理网络通信,并在收集器作业运行时负责附加回调的执行。要使用colly,你必须初始化一个收集器:
c := colly.NewCollector()
回调
您可以将不同类型的回调函数附加到收集器,以控制收集作业或检索信息。请查看包文档中的相关部分。
向收集器添加回调
c.OnRequest(func(r *colly.Request) {
fmt.Println("Visiting", r.URL)
})
c.OnError(func(_ *colly.Response, err error) {
log.Println("Something went wrong:", err)
})
c.OnResponseHeaders(func(r *colly.Response) {
fmt.Println("Visited", r.Request.URL)
})
c.OnResponse(func(r *colly.Response) {
fmt.Println("Visited", r.Request.URL)
})
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
e.Request.Visit(e.Attr("href"))
})
c.OnHTML("tr td:nth-of-type(1)", func(e *colly.HTMLElement) {
fmt.Println("First column of a table row:", e.Text)
})
c.OnXML("//h1", func(e *colly.XMLElement) {
fmt.Println(e.Text)
})
c.OnScraped(func(r *colly.Response) {
fmt.Println("Finished", r.Request.URL)
})
回调的调用顺序
1. OnRequest
在请求之前调用
2. OnError
如果在请求期间发生错误,则调用
3. OnResponseHeaders
在接收到响应标头后调用
4. OnResponse
收到响应后调用
5. OnHTML
如果接收到的内容是HTML,就在OnResponse之后调用
6. OnXML
如果接收到的内容是HTML或XML,就在OnHTML之后调用
7. OnScraped
在OnXML回调后调用