class GoogleFinance::Financials
Constants
- COR_ROW
- DNA_ROW
- INT_ROW
- NET_ROW
- OTH_ROW
- REV_ROW
Row positions in the HTML grid
- RND_ROW
- SGA_ROW
- UNU_ROW
- YEAR_1
year positions in the HTML grid
- YEAR_2
- YEAR_3
- YEAR_4
Attributes
years[RW]
Public Class Methods
new(ticker)
click to toggle source
# File lib/GoogleFinance/Financials.rb, line 42 def initialize(ticker) @years = {} # build URL in the right format, in pages of 100 day quotes @financial_url = "https://www.google.com/finance?q=#{ticker}&fstype=ii" @page = Nokogiri::HTML(open(@financial_url)) # yr1 = Statement.new yr2 = Statement.new yr3 = Statement.new yr4 = Statement.new # map the value to the correct areas in the financial statement objects yr1.revenue, yr2.revenue, yr3.revenue, yr4.revenue = get_figures(REV_ROW, @page) yr1.cost_of_rev, yr2.cost_of_rev, yr3.cost_of_rev, yr4.cost_of_rev = get_figures(COR_ROW, @page) yr1.sg_and_a, yr2.sg_and_a, yr3.sg_and_a, yr4.sg_and_a = get_figures(SGA_ROW, @page) yr1.r_and_d, yr2.r_and_d, yr3.r_and_d, yr4.r_and_d = get_figures(RND_ROW, @page) yr1.d_and_a, yr2.d_and_a, yr3.d_and_a, yr4.d_and_a = get_figures(DNA_ROW, @page) yr1.interest, yr2.interest, yr3.interest, yr4.interest = get_figures(INT_ROW, @page) yr1.unusual, yr2.unusual, yr3.unusual, yr4.unusual = get_figures(UNU_ROW, @page) yr1.others, yr2.others, yr3.others, yr4.others = get_figures(OTH_ROW, @page) yr1.net_income, yr2.net_income, yr3.net_income, yr4.net_income = get_figures(NET_ROW, @page) # get the fiscal years as in the statements @years[get_fiscal_date(YEAR_1, @page)] = yr1 @years[get_fiscal_date(YEAR_2, @page)] = yr2 @years[get_fiscal_date(YEAR_3, @page)] = yr3 @years[get_fiscal_date(YEAR_4, @page)] = yr4 end
Public Instance Methods
get_figures(row, page)
click to toggle source
Based on reequest row (class constant) will get the figures for the 4 years
# File lib/GoogleFinance/Financials.rb, line 78 def get_figures(row, page) # get the requested figure for the 4 years that are shown element = page.xpath("//div[@id='incannualdiv']/table[1]/tbody/tr[#{row}]/td[#{YEAR_1}]") figure_yr1 = element.inner_html.gsub(",", "").to_f element = page.xpath("//div[@id='incannualdiv']/table[1]/tbody/tr[#{row}]/td[#{YEAR_2}]") figure_yr2 = element.inner_html.gsub(",", "").to_f element = page.xpath("//div[@id='incannualdiv']/table[1]/tbody/tr[#{row}]/td[#{YEAR_3}]") figure_yr3 = element.inner_html.gsub(",", "").to_f element = page.xpath("//div[@id='incannualdiv']/table[1]/tbody/tr[#{row}]/td[#{YEAR_4}]") figure_yr4 = element.inner_html.gsub(",", "").to_f return [figure_yr1, figure_yr2, figure_yr3, figure_yr4] end
get_fiscal_date(year, page)
click to toggle source
get the end date of the fiscale period associated with the years [1..4]
# File lib/GoogleFinance/Financials.rb, line 99 def get_fiscal_date(year, page) element = page.xpath("//div[@id='incannualdiv']/table/thead/tr/th[#{year}]") return element.inner_html.gsub(/^.*ending /, "").gsub("\n", "") end