package main import ( "fmt" "net/http" "time" "github.com/PuerkitoBio/goquery" ) type NvidiaParser struct { } func (this NvidiaParser) Parse() []*RssEntry { var result []*RssEntry resp, err := http.Get(this.RootUrl() + "/publications") if err != nil { } doc, err := goquery.NewDocumentFromResponse(resp) // parse articles and links doc.Find(".views-field-title").Each(func(i int, s *goquery.Selection) { link := s.Find("a") href, exists := link.Attr("href") if exists { result = append(result, &RssEntry{title: link.Text(), url: this.RootUrl() + href}) } }) // parse times for _, re := range result { resp, err := http.Get(re.url) if err != nil { } doc, err := goquery.NewDocumentFromResponse(resp) re.descripiton = doc.Find(".field--type-text-with-summary").Text() date, exists := doc.Find(".field--name-field-publication-date").Find("time").Attr("datetime") if exists { t, err := time.Parse(time.RFC3339, date) if err == nil { re.time = t } } fmt.Println(re.url) } return result } func (this NvidiaParser) Title() string { return "NVidia Research" } func (this NvidiaParser) Description() string { return "NVidia Research papers" } func (this NvidiaParser) RootUrl() string { return "https://research.nvidia.com" } func (this NvidiaParser) ImageUrl() string { return this.RootUrl() + "/themes/custom/nvidia/favicon.ico" } func (this NvidiaParser) ServerUrl() string { return "/nvidia" } func (this NvidiaParser) CacheName() string { return "NvidiaParser" } func (this NvidiaParser) CacheTimeout() int { return 7200 }