Esempio n. 1
0
// node returns a string representation of the selection.
func node(i int, s *goquery.Selection) string {
	switch node := s.Get(0); {
	case node.Data == "h1":
		return fmt.Sprintf(" \033[%dm# %s\033[0m\n\n", blue, text(s))
	case node.Data == "h2":
		return fmt.Sprintf(" \033[%dm## %s\033[0m\n\n", blue, text(s))
	case node.Data == "h3":
		return fmt.Sprintf(" \033[%dm### %s\033[0m\n\n", blue, text(s))
	case node.Data == "p":
		return fmt.Sprintf("\033[%dm%s\033[0m\n\n", none, indent(text(s), 1))
	case node.Data == "pre" || s.HasClass("highlight"):
		return fmt.Sprintf("\033[1m%s\033[0m\n\n", indent(text(s), 2))
	case node.Data == "a":
		return fmt.Sprintf("%s (%s) ", s.Text(), s.AttrOr("href", "missing link"))
	case node.Data == "li":
		return fmt.Sprintf("  • %s\n", contents(s))
	case node.Data == "ul":
		return fmt.Sprintf("%s\n", nodes(s))
	case node.Data == "code":
		return fmt.Sprintf("\033[1m%s\033[0m ", s.Text())
	case node.Type == html.TextNode:
		return strings.TrimSpace(node.Data)
	default:
		return ""
	}
}
Esempio n. 2
0
func (c Boot24Crawler) Create(s *goquery.Selection) Entry {
	link := s.AttrOr("href", "none")
	price := s.Find(".sr-price").Text()
	desc := s.Find(".sr-objektbox-us").Text()
	details := strings.Fields(s.Find(".details_left").Text())
	boatType := details[0]
	manufactureDate := details[3]
	condition := details[5]

	return Entry{
		Condition:       condition,
		Description:     desc,
		Link:            link,
		ManufactureDate: manufactureDate,
		Price:           price,
		Type:            boatType,
	}
}