summaryrefslogblamecommitdiff
path: root/examples/flyscrapelib.go
blob: 641e7ac6d109eb20e16e4447e8d325a47223a6fb (plain) (tree)








































                                                                         
package main

import "github.com/philippta/flyscrape/flyscrape"

var config = flyscrape.Config{
	URL:      "https://news.ycombinator.com/",
	Browser:  true,
	Headless: false,
}

func scrape(ctx flyscrape.Context) any {
	var (
		post         = ctx.Doc.Find(".athing.submission").First()
		title        = post.Find(".titleline > a").Text()
		commentsLink = post.Next().Find("a").Last().Attr("href")
		comments     = ctx.Scrape(commentsLink, scrapeComments)
	)

	return flyscrape.M{
		"title":    title,
		"comments": comments,
	}
}

func scrapeComments(ctx flyscrape.Context) any {
	var comments []flyscrape.M

	for _, comment := range ctx.Doc.Find(".comtr").All() {
		comments = append(comments, flyscrape.M{
			"author": comment.Find(".hnuser").Text(),
			"text":   comment.Find(".commtext").Text(),
		})

	}

	return comments
}

func main() {
	flyscrape.Run(config, scrape)
}