Fix DuckDuckGo error handling (#5, #6) #35

Merged
Claude merged 1 commits from fix/duckduckgo-error-handling into main 2026-02-15 16:18:50 +00:00
3 changed files with 14 additions and 8 deletions
Showing only changes of commit a12c9f7cb6 - Show all commits

View File

@@ -86,7 +86,10 @@ func main() {
defer extractor.DeferClose(search) defer extractor.DeferClose(search)
res := search.GetResults() res, err := search.GetResults()
if err != nil {
return fmt.Errorf("failed to get results: %w", err)
}
fmt.Println("Results:", res) fmt.Println("Results:", res)
err = search.LoadMore() err = search.LoadMore()
@@ -95,7 +98,10 @@ func main() {
} }
time.Sleep(2 * time.Second) time.Sleep(2 * time.Second)
res = search.GetResults() res, err = search.GetResults()
if err != nil {
return fmt.Errorf("failed to get results: %w", err)
}
fmt.Println("Results:", res) fmt.Println("Results:", res)
return nil return nil

View File

@@ -130,5 +130,5 @@ func (c Config) Search(ctx context.Context, b extractor.Browser, query string) (
return nil return nil
}) })
return res, nil return res, err
} }

View File

@@ -9,7 +9,7 @@ import (
type SearchPage interface { type SearchPage interface {
io.Closer io.Closer
GetResults() []Result GetResults() ([]Result, error)
LoadMore() error LoadMore() error
} }
@@ -17,11 +17,10 @@ type searchPage struct {
doc extractor.Document doc extractor.Document
} }
func (s searchPage) GetResults() []Result { func (s searchPage) GetResults() ([]Result, error) {
var res []Result var res []Result
var err error
err = s.doc.ForEach(`article[id^="r1-"]`, func(n extractor.Node) error { err := s.doc.ForEach(`article[id^="r1-"]`, func(n extractor.Node) error {
var r Result var r Result
links := n.Select(`a[href][target="_self"]`) links := n.Select(`a[href][target="_self"]`)
@@ -30,6 +29,7 @@ func (s searchPage) GetResults() []Result {
return nil return nil
} }
var err error
r.URL, err = links[0].Attr(`href`) r.URL, err = links[0].Attr(`href`)
if err != nil { if err != nil {
@@ -53,7 +53,7 @@ func (s searchPage) GetResults() []Result {
return nil return nil
}) })
return res return res, err
} }
func (s searchPage) LoadMore() error { func (s searchPage) LoadMore() error {