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)
res := search.GetResults()
res, err := search.GetResults()
if err != nil {
return fmt.Errorf("failed to get results: %w", err)
}
fmt.Println("Results:", res)
err = search.LoadMore()
@@ -95,7 +98,10 @@ func main() {
}
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)
return nil

View File

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

View File

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