在使用Colly之前,请确保您有最新的版本。有关详细信息,请参阅安装指南

让我们从一些简单的例子开始。

首先,你需要导入Colly到你的代码库:

  1. import "github.com/gocolly/colly"

采集器

Colly的主要实体是一个收集器对象。收集器管理网络通信,并在收集器作业运行时负责附加回调的执行。要使用colly,你必须初始化一个收集器:

  1. c := colly.NewCollector()

回调

您可以将不同类型的回调函数附加到收集器,以控制收集作业或检索信息。请查看包文档中的相关部分

向收集器添加回调

  1. c.OnRequest(func(r *colly.Request) {
  2. fmt.Println("Visiting", r.URL)
  3. })
  4. c.OnError(func(_ *colly.Response, err error) {
  5. log.Println("Something went wrong:", err)
  6. })
  7. c.OnResponseHeaders(func(r *colly.Response) {
  8. fmt.Println("Visited", r.Request.URL)
  9. })
  10. c.OnResponse(func(r *colly.Response) {
  11. fmt.Println("Visited", r.Request.URL)
  12. })
  13. c.OnHTML("a[href]", func(e *colly.HTMLElement) {
  14. e.Request.Visit(e.Attr("href"))
  15. })
  16. c.OnHTML("tr td:nth-of-type(1)", func(e *colly.HTMLElement) {
  17. fmt.Println("First column of a table row:", e.Text)
  18. })
  19. c.OnXML("//h1", func(e *colly.XMLElement) {
  20. fmt.Println(e.Text)
  21. })
  22. c.OnScraped(func(r *colly.Response) {
  23. fmt.Println("Finished", r.Request.URL)
  24. })

回调的调用顺序


1. OnRequest

在请求之前调用

2. OnError

如果在请求期间发生错误,则调用

3. OnResponseHeaders

在接收到响应标头后调用

4. OnResponse

收到响应后调用

5. OnHTML

如果接收到的内容是HTML,就在OnResponse之后调用

6. OnXML

如果接收到的内容是HTML或XML,就在OnHTML之后调用

7. OnScraped

在OnXML回调后调用