...
1
2
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