Am fost faci unele de web răzuire cu ajutorul colly, dar a vrut să-l rulați periodic folosind cron. Am încercat o abordare de bază pentru acesta.
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")
}
Se pare a nu fi de lucru, face un apel o dată și nu face periodic la următorul apel. Nu sunt sigur dacă eu sunt lipsesc pe ceva. Există și alte abordări care pot fi luate?
Orice ajutor ar fi apreciat.
Multumesc!!!
{1 {30s} 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0x6efa80 0x6efa80}]
. N-a fost de ajutor pentru mine. Ajută asta?