diff --git a/sites/duckduckgo/cmd/duckduckgo/main.go b/sites/duckduckgo/cmd/duckduckgo/main.go index cd3ca25..9877943 100644 --- a/sites/duckduckgo/cmd/duckduckgo/main.go +++ b/sites/duckduckgo/cmd/duckduckgo/main.go @@ -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 diff --git a/sites/duckduckgo/duckduckgo.go b/sites/duckduckgo/duckduckgo.go index 820bd87..4fab8c3 100644 --- a/sites/duckduckgo/duckduckgo.go +++ b/sites/duckduckgo/duckduckgo.go @@ -130,5 +130,5 @@ func (c Config) Search(ctx context.Context, b extractor.Browser, query string) ( return nil }) - return res, nil + return res, err } diff --git a/sites/duckduckgo/page.go b/sites/duckduckgo/page.go index 8d85daf..70b2242 100644 --- a/sites/duckduckgo/page.go +++ b/sites/duckduckgo/page.go @@ -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 {