Skip to content

Instantly share code, notes, and snippets.

@obradovic
Last active October 9, 2015 13:57
Show Gist options
  • Save obradovic/a403ed8e6b70a3127964 to your computer and use it in GitHub Desktop.
Save obradovic/a403ed8e6b70a3127964 to your computer and use it in GitHub Desktop.
Casper script to scrape imgix billing data for subsequent statsd automation/alerting
var system = require('system');
var casper = require('casper').create({
verbose: false,
logLevel: 'info',
userAgent: 'Mozilla/5.0 poi poi poi (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
viewportSize: { width: 1200, height: 600 },
waitTimeout: 20000,
pageSettings: {}
});
casper.on('remote.message', function(msg) {
this.echo(msg);
})
casper.start('https://webapp.imgix.com/login', function() {
this.evaluate(function() {
em = document.getElementsByName('email')[0];
pw = document.getElementsByName('password')[0];
btn = document.getElementById('submit-button');
em.value = system.env.imgix_login; // $IMGIX_LOGIN;
pw.value = system.env.imgix_passwordl // $IMGIX_PASSWORD;
btn.click();
});
});
casper.waitForSelector(".analyticsNumber-total-value", function() {
// TODO: gross wait here, better than traipsing through Angular data bindings
this.wait(5000, function() {
this.evaluate(function() {
var numbers = document.getElementsByClassName('analyticsNumber-total-value');
var masterImages = numbers[0].innerHTML.replace(/,/g, '');
var renderedImages = numbers[1].innerHTML.replace(/,/g, '');
var bandwidth = numbers[2].innerHTML.replace(/,/g, '');
var avgResponse = numbers[3].innerHTML.replace(/,/g, '');
var availability = numbers[4].innerHTML.replace(/%/g, '');
var requests = numbers[5].innerHTML.replace(/,/g, '');
var moneys = document.getElementsByClassName('money-amount-integer');
var baseCharges = moneys[0].innerHTML.replace(/,/g, '');
var bandwidthCharges = moneys[1].innerHTML.replace(/,/g, '');
var totalCharges = moneys[3].innerHTML.replace(/,/g, '');
console.log("DATA: " + masterImages + " " + renderedImages + " " + bandwidth + " " + avgResponse + " " + availability + " " + requests + " " + baseCharges + " " + bandwidthCharges + " " + totalCharges);
});
});
});
casper.run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment