| xxyygorich Sat Jul 15, 2006 9:17 am |
|
|
Tech post: Perl sub to retrieve Key Statistics from Yahoo The following code is a part of script to retrieve all info from key statistics page of a stock from yahoo.com
It might be not enlightening, however it works. :)
Code: #!/usr/local/bin/perl
# Author: xxyygorich.
# Copy right @2006
# This script can be freely distributed. No warranty of any kind will be provided.
# Usage: stock_para.pl <symbol>
# This script is to show a subroutine stock_para() to retrieve info from yahoo.com
# "key statistics" of a stock symbol.
use strict;
use LWP::Simple;
my $symbol = shift;
my %para;
$para{$symbol} = stock_para ($symbol); # sub stock_para() returns a hash reference.
print "Market Capital\t".$para{$symbol}->{'mktcap'}."\n"; # example print out Market Capital.
# The key and value
# 'mktcap' => Market Capital
# 'EV' => Enterprise Value
# 'TPE' => Trailing P/E
# 'FPE' => Forward P/E
# 'PEGR' => PEG Ratio
# 'P_S' => Price/Sale
# 'P_B' => Price/Book
# 'EV_Rev => Enterprise Value/Revenue
# 'EV_EBITDA => Enterprise Value/EBITDA
# 'Pft_Mgn' => Profit Margin
# 'Opt_Mgn' => Operating Margin
# 'ROA' => Return on Assets
# 'ROE' => Return on Equity
# 'Rev' => Revenue
# 'RPS' => Revenue Per Share
# 'Q_Rev_Gr' => Qtrly Revenue Growth/EBITDA
# 'GPrt' => Gross Profit
# 'EBITDA' => EBITDA
# 'Net_Icm2common' => Net Income Avl to Common
# 'dEPS' => Diluted EPS
# 'Q_Eng_Gr' => Qtrly Earning Growth
# 'tCash' => Total Cash
# 'tCPS' => Total Cash per Share
# 'tDbt' => Total Debt
# 'tDbt_Eqt' => Total Debt/Equity
# 'CR' => Current Ratio
# 'BPS' => Book Value per Share
# 'OCF' => Operating Cash Flow
# 'LFCF' => Leveraged Free Cash Flow
# 'Beta' => Beta
# '52wkCh' => 52_week Change
# 'SP500_52wkch' => S&P500 52wk Change
# '52wkH' => 52wk High
# '52wkL' => 52wk Low
# '50dMA' => 50-day Moving Average
# '200dMA' => 200-day Moving Average
# 'Sh_OST' => Shares Outstanding
# 'Sh_FLT' => Shares Float
# 'Hld_Isd' => Held by Insiders
# 'FADR' => Forward Annual Dividend Rate
# 'FADY' => Forward Annual Dividend Yield
# 'TADR' => Trailing Annual Dividend Rate
# 'TADY' => Trailing Annual Dividend Yield
############################################################
# Subroutine: stock_para() #
# Input: $symbol #
# Output: the reference of a hash which contains all para #
# listed on the yahoo "key statistic" page #
############################################################
sub stock_para () {
my ($symbol) = @_;
my %para;
my $address_front = "http://finance.yahoo.com/q/ks?s=";
my $URL = $address_front.$symbol;
my $page = get ($URL);
$page =~ s/\n//g;
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Market Cap\s+\(intraday\)\:\<\/td\>\s*\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>\<\/tr\>/) {
$para{'mktcap'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Enterprise Value\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'EV'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Trailing P\/E\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'TPE'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Forward P\/E\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'FPE'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>PEG Ratio\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'PEGR'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Price\/Sales\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'P_S'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Price\/Book\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'P_B'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Enterprise Value\/Revenue\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'EV_Rev'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Enterprise Value\/EBITDA\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'EV_EBITDA'} = $1;
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Profit Margin\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Pft_Mgn'} = $1;
#print "here Pft_Mgn $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Operating Margin\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Opt_Mgn'} = $1;
#print "here Opt_Mgn $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Return on Assets\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'ROA'} = $1;
#print "here ROA $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Return on Equity\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'ROE'} = $1;
#print "here ROE $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Revenue\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Rev'} = $1;
#print "here Rev $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Revenue Per Share\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'RPS'} = $1;
#print "here RPS $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Qtrly Revenue Growth\/EBITDA\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Q_Rev_Gr'} = $1;
#print "here Q_Rev_Gr $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Gross Profit\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'GPrt'} = $1;
#print "here GPrt $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>EBITDA\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'EBITDA'} = $1;
#print "here EBITDA $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Net Income Avl to Common\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Net_Icm2common'} = $1;
#print "here Net_Icm2common $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Diluted EPS\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'dEPS'} = $1;
#print "here dEPS $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Qtrly Earnings Growth\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Q_Eng_Gr'} = $1;
#print "here Q_Eng_Gr $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Total Cash\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'tCash'} = $1;
#print "here tCash $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Total Cash Per Share\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'tCPS'} = $1;
#print "here tCPS $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Total Debt\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'tDbt'} = $1;
#print "here tDbt $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Total Debt\/Equity\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'tDbt_Eqt'} = $1;
#print "here tDbt_Eqt $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Current Ratio\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'CR'} = $1;
#print "here CR $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Book Value Per Share\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'BPS'} = $1;
#print "here BPS $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Operating Cash Flow\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'OCF'} = $1;
#print "here OCF $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Levered Free Cash Flow\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'LFCF'} = $1;
#print "here LFCF $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Beta\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Beta'} = $1;
#print "here Beta $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>52\-Week Change\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'52wkCh'} = $1;
#print "here 52wkCh $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>S\&P500 52\-Week Change\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'SP500_52wkch'} = $1;
#print "here SP500_52wkch $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>52\-Week High\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'52wkH'} = $1;
#print "here 52wkH $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>52\-Week Low\s+\(.*?\).*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'52wkL'} = $1;
#print "here 52wkL $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>50\-Day Moving Average\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'50dMA'} = $1;
#print "here 50dMA $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>200\-Day Moving Average\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'200dMA'} = $1;
#print "here 200dMA $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Shares Outstanding\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Sh_OST'} = $1;
#print "here Sh_OST $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Float\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Sh_FLT'} = $1;
##print "here Sh_FLT $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>\% Held by Insiders\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'Hld_Isd'} = $1;
#print "here Hld_Isd $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Forward Annual Dividend Rate\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'FADR'} = $1;
#print "here FADR $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Forward Annual Dividend Yield\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'FADY'} = $1;
#print "here FADY $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Trailing Annual Dividend Rate\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'TADR'} = $1;
#print "here TADR $1\n";
}
if ($page =~ /<td\s+class\=\"yfnc_tablehead1\"\s+width\=\"\d+\%\"\>Trailing Annual Dividend Yield\s*.*?\:\<\/td\>\<td class\=\"yfnc_tabledata1\"\>(\S+?)\<\/td\>/) {
$para{'TADY'} = $1;
#print "here TADY $1\n";
}
return \%para;
}
|
|
| |
Search Engine Indexer
BlastInvest @2005 p h p B B © 2001, 2002 p h p B B Group
|