...

Source file src/github.com/playwright-community/playwright-go/examples/scraping/main.go

Documentation: github.com/playwright-community/playwright-go/examples/scraping

     1  //go:build ignore
     2  // +build ignore
     3  
     4  package main
     5  
     6  import (
     7  	"fmt"
     8  	"log"
     9  
    10  	"github.com/playwright-community/playwright-go"
    11  )
    12  
    13  func main() {
    14  	pw, err := playwright.Run()
    15  	if err != nil {
    16  		log.Fatalf("could not start playwright: %v", err)
    17  	}
    18  	browser, err := pw.Chromium.Launch()
    19  	if err != nil {
    20  		log.Fatalf("could not launch browser: %v", err)
    21  	}
    22  	page, err := browser.NewPage()
    23  	if err != nil {
    24  		log.Fatalf("could not create page: %v", err)
    25  	}
    26  	if _, err = page.Goto("https://news.ycombinator.com"); err != nil {
    27  		log.Fatalf("could not goto: %v", err)
    28  	}
    29  	entries, err := page.QuerySelectorAll(".athing")
    30  	if err != nil {
    31  		log.Fatalf("could not get entries: %v", err)
    32  	}
    33  	for i, entry := range entries {
    34  		titleElement, err := entry.QuerySelector("td.title > a")
    35  		if err != nil {
    36  			log.Fatalf("could not get title element: %v", err)
    37  		}
    38  		title, err := titleElement.TextContent()
    39  		if err != nil {
    40  			log.Fatalf("could not get text content: %v", err)
    41  		}
    42  		fmt.Printf("%d: %s\n", i+1, title)
    43  	}
    44  	if err = browser.Close(); err != nil {
    45  		log.Fatalf("could not close browser: %v", err)
    46  	}
    47  	if err = pw.Stop(); err != nil {
    48  		log.Fatalf("could not stop Playwright: %v", err)
    49  	}
    50  }
    51  

View as plain text