Sha256: 1d4a2f327539e9c018da754fe5079bf46d78736a646adc1ac438183fb46dd04c

Contents?: true

Size: 758 Bytes

Versions: 2

Compression:

Stored size: 758 Bytes

Contents

class SP500Scraper < StockIndex::BaseScraper

  def scrape
    doc = Nokogiri::HTML(open(StockIndex::INDICES['^GSPC'][:url]))
    parse_rows doc.css('table.wikitable.sortable')[0].css('tr')
  end

  private

  def symbol(tr)
    symbol_td = td(tr, 0)
    s = symbol_td ? symbol_td.css('a').first.text : nil
    SymbolParser.new(s).sp500_to_bsym
  end

  def market(tr)
    market_td = td(tr, 0)
    market_link = market_td ? market_td.css('a').first.attributes['href'].value : nil
    StockIndex::Market.new(parse_market_link(market_link)).to_iso10383
  end

  def wikipedia_link(tr)
    wikipedia_position(tr, 1)
  end

  def parse_market_link(market_link)
    if market_link
      uri = URI(market_link)
      uri.host
    else
      nil
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stock_index-0.7.0 lib/stock_index/scrapers/SP500_scraper.rb
stock_index-0.6.0 lib/stock_index/scrapers/SP500_scraper.rb