googlepagination.coffee 989 Bytes
###
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()
currentPage = 1

if casper.cli.args.length is 0
    casper
        .echo("Usage: $ casperjs googlepagination.coffee my search terms")
        .exit(1)

processPage = ->
    @echo "capturing page #{currentPage}"
    @capture "google-results-p#{currentPage}.png"

    # don't go too far down the rabbit hole
    return if currentPage >= 5

    if @exists "#pnnext"
        currentPage++
        @echo "requesting next page: #{currentPage}"
        url = @getCurrentUrl()
        @thenClick("#pnnext").then ->
            @waitFor (->
                url isnt @getCurrentUrl()
            ), processPage
    else
        @echo "that's all, folks."

casper.start "http://google.fr/", ->
    @fill 'form[action="/search"]',  q: casper.cli.args.join(" "), true

casper.then processPage

casper.run()