web scraper structure in golang code example
Example 1: golang for web scraping
func main() {
c := colly.NewCollector()
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
e.Request.Visit(e.Attr("href"))
})
c.OnRequest(func(r *colly.Request) {
fmt.Println("Visiting", r.URL)
})
c.Visit("http://go-colly.org/")
}
Example 2: webscraper using Go
# Web Scraper in Golang
# source: golangcode.com/basic-web-scraper
package main
import (
"fmt"
"log"
"net/http"
"github.com/PuerkitoBio/goquery"
)
func main() {
blogTitles, err := GetLatestBlogTitles("https://golangcode.com")
if err != nil {
log.Println(err)
}
fmt.Println("Blog Titles:")
fmt.Printf(blogTitles)
}
func GetLatestBlogTitles(url string) (string, error) {
resp, err := http.Get(url)
if err != nil {
return "", err
}
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
return "", err
}
titles := ""
doc.Find(".post-title").Each(func(i int, s *goquery.Selection) {
titles += "- " + s.Text() + "\n"
})
return titles, nil
}