Sha256: 0b87c19b47de636a86ad37bb3ae0655ce2467169cf213d3cb5cd30c7691e0f85

Contents?: true

Size: 967 Bytes

Versions: 5

Compression:

Stored size: 967 Bytes

Contents

class NikkeiScraper < StockIndex::BaseScraper

  def scrape
    doc = Nokogiri::HTML(open(StockIndex::INDICES['^N225'][:url]))
    @wikipedia_hash = parse_wikipedia_page(Nokogiri::HTML(open(StockIndex::INDICES['^N225'][:wikipedia_url])))
    parse_rows doc.css('table.cmn-table tr.cmn-charcter')
  end

  private

  def parse_rows(rows)
    rows.inject([]) do |array, tr|
      symbol = tr.css('td')[0].text
      market = 'XJPX'
      if symbol && market
        component = StockIndex::Component.new(symbol, market, @wikipedia_hash[symbol], :jp)
        array << component.attributes if component.valid?
      end
      array
    end
  end

  def parse_wikipedia_page(wikipedia_doc)
    wikipedia_doc.css('li').inject({}) do |hash, li|
      md = li.text.match(/.+\(TYO:\s+(\d{4})/)
      if md
        symbol = md[1]
        link = build_wikipedia_link(li.css('a').first.attributes['href'].value)
        hash[symbol] = link
      end
      hash
    end
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stock_index-0.8.3 lib/stock_index/scrapers/nikkei_scraper.rb
stock_index-0.8.2 lib/stock_index/scrapers/nikkei_scraper.rb
stock_index-0.8.1 lib/stock_index/scrapers/nikkei_scraper.rb
stock_index-0.8.0 lib/stock_index/scrapers/nikkei_scraper.rb
stock_index-0.7.0 lib/stock_index/scrapers/nikkei_scraper.rb