首页
读书
网课

正文

在用 scrapy 的时候,它提供了非常好用的 shell 帮助我们非常方便地实现 debug。但非常可惜 colly 中并没有类似功能,这里的 debugger 主要是指运行时的信息收集。

debugger 是一个接口,我们只要实现它其中的两个方法,就可完成运行时信息的收集。

type Debugger interface {    // Init initializes the backend
    Init() error    // Event receives a new collector event.
    Event(e *Event)
}

源码中有个典型的案例,LogDebugger。我们只需提供相应的 io.Writer 类型变量,具体如何使用呢?

一个案例,如下:

package mainimport (    "log"
    "os"

    "github.com/gocolly/colly"
    "github.com/gocolly/colly/debug")func main() {
    writer, err := os.OpenFile("collector.log", os.O_RDWR|os.O_CREATE, 0666)    if err != nil {        panic(err)
    }

    c := colly.NewCollector(colly.Debugger(&debug.LogDebugger{Output: writer}), colly.MaxDepth(2))
    c.OnHTML("a[href]", func(e *colly.HTMLElement) {        if err := e.Request.Visit(e.Attr("href")); err != nil {
            log.Printf("visit err: %v", err)
        }
    })    if err := c.Visit("http://go-colly.org/"); err != nil {        panic(err)
    }
}

运行完成,打开 collector.log 即可查看输出内容



上一篇: 没有了
下一篇: 没有了
圣贤书院