class Scraper

Public Class Methods

scrape_site(input) click to toggle source
# File lib/gigs/scraper.rb, line 2
def self.scrape_site(input)
  link = input.gsub(" ", "-")

  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')
  driver = Selenium::WebDriver.for :chrome, options: options
  driver.get "http://www.bigstub.com/#{link}-tickets.aspx"

  begin
    wait = Selenium::WebDriver::Wait.new(:timeout => 5)
    wait.until { /title-holder/.match(driver.page_source) }
  rescue Selenium::WebDriver::Error::TimeOutError
    return nil
  end

  doc = Nokogiri::HTML(driver.page_source)
  driver.quit

  concerts = []
  doc.css("div#upcomingEventsList div.item2").each do |info|
    artist = info.css('div.title-holder h3 a').text
    venue = info.css('div.title-holder strong.title').text
    date = info.css('div.ueDate span.midline1').text

    concerts << {
    input: input,
    artist: Artist.find_or_create_by_name(artist),
    venue: Venue.find_or_create_by_name(venue),
    date: date
  }

  # Venue.find_or_create_by_name(venue).add_date(date)
  end
  concerts
end