Skip to content

Instantly share code, notes, and snippets.

@carpeliam
Created January 27, 2015 05:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save carpeliam/e51a4b173e40965296bd to your computer and use it in GitHub Desktop.
Save carpeliam/e51a4b173e40965296bd to your computer and use it in GitHub Desktop.
Inmate Prison Locator
#!/usr/bin/env ruby
require 'spreadsheet'
require 'capybara'
require 'csv'
include Capybara::DSL
COL_CDCR = 0
COL_NAME = 0
COL_PRISON = 4
namex = ARGV.first
book = Spreadsheet.open namex
sheet = book.worksheets.first
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Capybara.default_driver = :selenium
session = Capybara::Session.new(:selenium)
session.visit 'http://inmatelocator.cdcr.ca.gov/search.aspx'
session.click_button 'Agree'
CSV.open('output.csv', 'wb') do |csv|
sheet.each 1 do |row|
session.fill_in "ctl00_LocatorPublicPageContent_txtCDCNumber", :with => row[COL_CDCR]
session.click_button 'Search'
cells = session.all('#ctl00_LocatorPublicPageContent_gvGridView td')
csv << unless cells.empty?
[row[COL_CDCR], cells[COL_NAME].text, cells[COL_PRISON].text]
else
[row[COL_CDCR], '--', '--']
end
session.click_button 'New Search'
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment