diff --git a/feeds/parser/parser.go b/feeds/parser/parser.go index 7391540..4842467 100644 --- a/feeds/parser/parser.go +++ b/feeds/parser/parser.go @@ -5,12 +5,13 @@ import ( "net/http" "net/url" - "github.com/PuerkitoBio/goquery" + "github.com/PuerkitoBio/goquery" ) var ( parsers = map[string]Parser{ - "cnbc.com": cnbcParser, + "a16z.com": a16zParser, + "cnbc.com": cnbcParser, "www.cnbc.com": cnbcParser, } ) @@ -29,24 +30,34 @@ func Parse(uri string) (string, error) { return "", errors.New("no parser for url") } -func cnbcParser(url string) (string, error) { - // Request the HTML page. - res, err := http.Get(url) - if err != nil { - return "", err - } +func classParser(class string) Parser { + return func(url string) (string, error) { + // Request the HTML page. + res, err := http.Get(url) + if err != nil { + return "", err + } - defer res.Body.Close() + defer res.Body.Close() - if res.StatusCode != 200 { - return "", errors.New("bad status code") - } + if res.StatusCode != 200 { + return "", errors.New("bad status code") + } - // Load the HTML document - doc, err := goquery.NewDocumentFromReader(res.Body) - if err != nil { - return "", err - } + // Load the HTML document + doc, err := goquery.NewDocumentFromReader(res.Body) + if err != nil { + return "", err + } - return doc.Find(".PageBuilder-col-9").Html() + return doc.Find(class).Html() + } +} + +func a16zParser(url string) (string, error) { + return classParser(".blog-content")(url) +} + +func cnbcParser(url string) (string, error) { + return classParser(".PageBuilder-col-9")(url) }