summaryrefslogtreecommitdiff
path: root/crawler/scrape.go
blob: 31b3618df3df00ec15d505757084b7c79dbdffb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package main

import (
	"log"
)

func (app *App) ScrapeHTML(shops []Shop) {

	wait := make(chan int)
	count := 0

	for _, shop := range shops {

		go func() {
			var W []Angebot
			var err error

			W = ScrapeShop(shop)

			W = sanitize_offer(W)

			err = app.save_offer(W)
			if err != nil {
				log.Fatal(err)
			}
			err = app.remove_expired(W)
			if err != nil {
				log.Fatal(err)
			}

			wait <- 1

		}()

		count++

	}

	/*
		Wait until all go routines finished
	*/
	for i := 0; i < count; i++ {
		<-wait
	}
}

func ScrapeShop(shop Shop) []Angebot {

	switch shop.Name {
	case "Bottleworld":
		return ScrapeBottleWord(shop)
	case "MC Whisky":
		return ScrapeMCWhisky(shop)
	case "Rum & Co":
		return ScrapeRumundCo(shop)
	case "Whic":
		return ScrapeWhic(shop)
	case "Whisky.de":
		return ScrapeWhiskyde(shop)
	case "Whiskysite.nl":
		return ScrapeWhiskysitenl(shop)
	case "Whisky World":
		return ScrapeWhiskyworld(shop)
	case "Whiskyzone":
		return ScrapeWhiskyzone(shop)
	default:
		log.Println(shop.Name + ": No Crawler")
	}

	return []Angebot{}
}