Slide 15
Slide 15 text
func (crawler *SamasoniCrawler) Crawl() (*feeder.Items, error) {
query := url.Values{}
query.Add("perform_id", "85895")
query.Add("sort_key", "sale_start_at")
query.Add("sort_order", "asc")
res, err := http.Get(crawler.url + "?" + query.Encode())
if err != nil {
return nil, errors.New("failed to get html document")
}
defer res.Body.Close()
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
return nil, errors.New("failed to read from response body")
}
sec := doc.Find("div#tickets").Find("div.list-ticket")
items := &feeder.Items{}
sec := doc.Find("div#tickets").Find("div.list-ticket")
items := &feeder.Items{}
sec.Each(func(index int, s *goquery.Selection) {
if s.HasClass("list-ticket") {
title := s.Find("h2").Find("a").Text()
path, _ := s.Find("h2").Find("a").Attr("href")
t := time.Now()
item := &feeder.Item{ Title: title, Link: &feeder.Link{ Href:
"https://tiketore.com" + path,
Rel: "", Type: "", Length: "",},
Id: path,
Created: &t,
}
items.Items = append(items.Items, item)
}
})
return items, nil
}
ྫνέοταΠτΛΫϩʔϧ