Skip to content

Commit 7f0f32a

Browse files
committed
Handle failed navigation
1 parent ba94c69 commit 7f0f32a

File tree

5 files changed

+38
-14
lines changed

5 files changed

+38
-14
lines changed

baidu/search.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ func (baid *Baidu) Search(query core.Query) ([]core.SearchResult, error) {
7474
return nil, err
7575
}
7676

77-
page := baid.Navigate(url)
77+
page, err := baid.Navigate(url)
78+
if err != nil {
79+
return nil, err
80+
}
7881

7982
results, err := page.Timeout(baid.Timeout).Search("div.c-container.new-pmd")
8083
if err != nil {
@@ -154,7 +157,11 @@ func (baid *Baidu) SearchImage(query core.Query) ([]core.SearchResult, error) {
154157
}
155158

156159
// Get anti-crawler cookies first, then reload page
157-
page := baid.Navigate(url)
160+
page, err := baid.Navigate(url)
161+
if err != nil {
162+
return nil, err
163+
}
164+
158165
if !baid.LeavePageOpen {
159166
defer page.Close()
160167
}

core/browser.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (b *Browser) IsInitialized() bool {
9797
}
9898

9999
// Open URL
100-
func (b *Browser) Navigate(URL string) *rod.Page {
100+
func (b *Browser) Navigate(URL string) (*rod.Page, error) {
101101
logrus.Debug("Navigate to: ", URL)
102102

103103
b.browser = rod.New().ControlURL(b.browserAddr)
@@ -127,15 +127,19 @@ func (b *Browser) Navigate(URL string) *rod.Page {
127127
page.MustEmulate(devices.Device{
128128
AcceptLanguage: b.LanguageCode,
129129
})
130-
page.MustNavigate(URL)
130+
131+
err := page.Navigate(URL)
132+
if err != nil {
133+
return nil, err
134+
}
131135

132136
wait := page.MustWaitRequestIdle()
133137
// may cause bugs with google
134138
if b.WaitRequests {
135139
wait()
136140
}
137141

138-
return page
142+
return page, nil
139143
}
140144

141145
func (b *Browser) Close() error {

core/browser_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,12 @@ func TestBot(t *testing.T) {
3838
t.Fatalf("Error failed initializing browser: %s", err)
3939
}
4040

41-
page := browser.Navigate("https://bot.sannysoft.com")
41+
page, _ := browser.Navigate("https://bot.sannysoft.com")
4242
page.MustScreenshotFullPage("./test/screenshot_bot.png")
4343

44-
page = browser.Navigate("https://www.whatismybrowser.com/")
44+
page, _ = browser.Navigate("https://www.whatismybrowser.com/")
4545
page.MustScreenshotFullPage("./test/screenshot_browser.png")
4646

47-
page = browser.Navigate("https://abrahamjuliot.github.io/creepjs/")
47+
page, _ = browser.Navigate("https://abrahamjuliot.github.io/creepjs/")
4848
page.MustScreenshotFullPage("./test/screenshot_creep.png")
49-
5049
}

google/search.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func (gogl *Google) getTotalResults(page *rod.Page) (int, error) {
7070
func (gogl *Google) solveCaptcha(page *rod.Page, sitekey, datas string) bool {
7171
logrus.Debugf("Solve google Captcha: sitekey=%s, datas=%s, url=%s", sitekey, datas, page.MustInfo().URL)
7272

73-
resp, err := gogl.CaptchaSolver.SolveReCaptcha2(sitekey, page.MustInfo().URL, datas)
73+
resp, err := gogl.CaptchaSolver.SolveReCaptcha2(sitekey, page.MustInfo().URL)
7474
if err != nil {
7575
logrus.Errorf("Error solving google captcha: %s", err)
7676
return false
@@ -143,7 +143,11 @@ func (gogl *Google) Search(query core.Query) ([]core.SearchResult, error) {
143143
if err != nil {
144144
return nil, err
145145
}
146-
page := gogl.Navigate(url)
146+
page, err := gogl.Navigate(url)
147+
if err != nil {
148+
return nil, err
149+
}
150+
147151
defer gogl.close(page)
148152
gogl.preparePage(page)
149153

@@ -338,7 +342,11 @@ func (gogl *Google) SearchImage(query core.Query) ([]core.SearchResult, error) {
338342
return nil, err
339343
}
340344

341-
page := gogl.Navigate(url)
345+
page, err := gogl.Navigate(url)
346+
if err != nil {
347+
return nil, err
348+
}
349+
342350
defer gogl.close(page)
343351

344352
for len(searchResultsMap) < query.Limit {

yandex/search.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,10 @@ func (yand *Yandex) Search(query core.Query) ([]core.SearchResult, error) {
124124
return nil, err
125125
}
126126

127-
page := yand.Navigate(url)
127+
page, err := yand.Navigate(url)
128+
if err != nil {
129+
return nil, err
130+
}
128131

129132
// Get all search results in page
130133
searchRes, err := page.Timeout(yand.Timeout).Search("li.serp-item")
@@ -185,7 +188,10 @@ func (yand *Yandex) SearchImage(query core.Query) ([]core.SearchResult, error) {
185188
}
186189
searchPage += 1
187190

188-
page := yand.Navigate(url)
191+
page, err := yand.Navigate(url)
192+
if err != nil {
193+
return nil, err
194+
}
189195

190196
if !yand.LeavePageOpen {
191197
defer page.Close()

0 commit comments

Comments
 (0)