Colly kullanarak bazı web kazıma yapıyordum ama cron kullanarak periyodik olarak çalıştırmak istedim. Temel bir yaklaşım denedim.
type scraper struct {
coll *colly.Collector
rc *redis.Client
}
func newScraper(c *colly.Collector, rc *redis.Client) scraper {
return scraper{coll: c, rc: rc}
}
func main() {
rc := redis.NewClient(&redis.Options{
Addr: "localhost:3000",
Password: "", // no password set
DB: 0, // use default DB
})
coll := colly.NewCollector()
scrape := newScraper(coll, rc)
c := cron.New()
c.AddFunc("@every 10s", scrape.scrapePls)
c.Start()
sig := make(chan int)
<-sig
}
func (sc scraper) scrapePls() {
sc.coll.OnHTML(`body`, func(e *colly.HTMLElement) {
//Extracting required content
//Using Redis to store data
})
sc.coll.OnRequest(func(r *colly.Request) {
log.Println("Visting", r.URL)
})
sc.coll.Visit("www.example.com")
}
Çalışmıyor gibi görünüyor, bir kez arama yapıyor ve periyodik olarak bir sonraki aramayı yapmıyor. Bir şeyi kaçırıp kaçırmadığımdan emin değilim. Alınabilecek başka yaklaşımlar var mı?
Herhangi bir yardım takdir edilecektir.
Teşekkürler!
{1 {30s} 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0x6efa80 0x6efa80}]
. Benim için yararlı olmadı. Bunun yardımı olur mu?