googlepagination.coffee 948 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 == 0
  casper.echo "usage: $ casperjs my search terms"
  casper.exit()

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

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

  if casper.exists "#pnnext"
    currentPage++
    casper.echo "requesting next page: #{currentPage}"
    casper.thenClick("#pnnext").then(processPage)
  else
    casper.echo "that's all, folks."

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

casper.then ->
  # google's being all ajaxy, wait for results to load...
  @waitForSelector 'table#nav', => processPage(casper)

casper.run()