googlepagination.coffee
1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
###
Capture multiple pages of google search results
Usage: $ casperjs googlepagination.coffee my search terms
(all arguments will be used as the query)
###
casper = require("casper").create(
waitTimeout: 1000
pageSettings:
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:23.0) Gecko/20130404 Firefox/23.0"
)
currentPage = 1
if casper.cli.args.length is 0
casper
.echo("Usage: $ casperjs googlepagination.coffee my search terms")
.exit(1)
terminate = ->
@echo("that's all, folks.").exit();
processPage = ->
@echo "capturing page #{currentPage}"
@capture "google-results-p#{currentPage}.png"
# don't go too far down the rabbit hole
if currentPage >= 5 || !@exists "#pnnext"
return terminate.call casper
currentPage++
@echo "requesting next page: #{currentPage}"
url = @getCurrentUrl()
@thenClick("#pnnext").then ->
@waitFor (->
url isnt @getCurrentUrl()
), processPage, terminate
casper.start "http://google.fr/", ->
@fill 'form[action="/search"]', q: casper.cli.args.join(" "), true
casper.waitForSelector "#pnnext", processPage, terminate
casper.run()