Skip to content

后端Redis 存储


go
package main

import (
	"log"

	"github.com/gocolly/colly"
	"github.com/gocolly/colly/queue"
	"github.com/gocolly/redisstorage"
)

func main() {
	urls := []string{
		"http://httpbin.org/",
		"http://httpbin.org/ip",
		"http://httpbin.org/cookies/set?a=b&c=d",
		"http://httpbin.org/cookies",
	}

	c := colly.NewCollector()

	// 创建一个redis db
	storage := &redisstorage.Storage{
		Address:  "127.0.0.1:6379",
		Password: "",
		DB:       0,
		Prefix:   "httpbin_test",
	}

	// 添加存储到收集器
	err := c.SetStorage(storage)
	if err != nil {
		panic(err)
	}

	// 删除收集器之前的数据
	if err := storage.Clear(); err != nil {
		log.Fatal(err)
	}

	// 关闭 redis client
	defer storage.Client.Close()

	// 用redis存储器 创建一个新的请求队列
	q, _ := queue.New(2, storage)

	c.OnResponse(func(r *colly.Response) {
		log.Println("Cookies:", c.Cookies(r.Request.URL.String()))
	})

	// 添加URL到队列
	for _, u := range urls {
		q.AddURL(u)
	}
	// 消费请求
	q.Run(c)
}