Archive

Archive for May, 2008

Perl HTML::TableExtract Table Finder Loop

May 23rd, 2008

This script parses a web page and prints out all of the coordinates for tables found. This should make your life easier as far as determining the location of the table you are looking to parse.

#!c:\perl\bin\perl.exe

use LWP::Simple;
use LWP::UserAgent;
use HTML::TableExtract;

use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $cgi = new CGI;

my $url = “http://www.drudgereport.com/”;
my $capture = get($url);

$depth = 0;
$count = 0;

while ($depth <= 10) {
DoLoop();
$depth++;
}

sub DoLoop {
for ($i = 0; $i <= 10; $i++)
{
$te = HTML::TableExtract->new( depth => “$depth”, count => $i );
$te->parse($capture);
my $table = $te->first_table_found;
foreach my $ts ($te->tables)
{
print “Table found at “, join(’,', $ts->coords), “:\n”;
foreach $row ($ts->rows) {
$x = 0;
print join(’,', @$row), “\n”;

}
}
}

}

Greg Perl

Yahoo Finance Economic Events to XML with Perl

May 23rd, 2008

This is a very simple script which gets yahoo economic events from the yahoo finance website and converts it to XML.


#!c:\perl\bin\perl.exe

use LWP::Simple;
use LWP::UserAgent;
use HTML::TableExtract;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $cgi = new CGI;

my $url = “http://biz.yahoo.com/c/e.html”;
my $capture = get($url);
#http://www.treasurydirect.gov/xml/PendingAuctions.xml
print $cgi->header(-type => ‘application/xml’); # make browser expect xml

$te = HTML::TableExtract->new( depth => 0, count => 5 );
print “\n”;
$te->parse($capture);
my $table = $te->first_table_found;
foreach my $ts ($te->tables)
{
#print “Table found at “, join(’,', $ts->coords), “:\n”;
#print @$row;
$count = 0;
foreach $row ($ts->rows) {
$a = @$row->[0];
$b = @$row->[1];
$c = @$row->[2];
$d = @$row->[3];
$e = @$row->[4];
$f = @$row->[5];
$g = @$row->[6];
$h = @$row->[7];
$i = @$row->[8];
#print “$a,$b,$c,$d,$e,$f,$g,$h,$i\n”;
if ($count > 0) { ###skip first line
printXML();
}
$count++
#print join(’,', @$row), “\n”;
}
}

print “\n”;
sub printXML {
print “\t\n”;
print “\t\t$a\n” .
“\t\t\n” .
“\t\t$c\n” .
“\t\t$d\n” .
“\t\t$e\n” .
“\t\t$f\n” .
“\t\t$g\n” .
“\t\t

$h\n” .
“\t\t$i\n”;
print “\t\n”
}sub printXMLHeader {
print $cgi->header(-type => ‘application/xml’); # make browser expect xml
#print “\<\?xml version=\”1.0\” encoding=\”UTF-8\”\?>\n”;
}

Greg Finance, Perl

Yahoo Finance Get Industry and Sector using Perl

May 20th, 2008

This script parses yahoo finance an pulls the Industry and sector for any ticker symbol you pass it. I used it to create a stock screener I am working on. Hope it becomes useful for you.


#!c:\perl\bin\perl.exe
use LWP::Simple;
use LWP::UserAgent;
use HTML::TableExtract;

if ($#ARGV != 0) {
print “$#ARGV usage: need to pass in a symbol\n”;
exit;
}
$sym = $ARGV[0];

my $url = “http://finance.yahoo.com/q/in?s=$sym”;
my $capture = get($url);

$te = HTML::TableExtract->new( depth => 2, count => 0 );
#print “$depth,$i\n”;
$te->parse($capture);
my $table = $te->first_table_found;
foreach $ts ($te->tables) {
#print “Table found at “, join(’,', $ts->coords), “:\n”;
foreach $row ($ts->rows)
{
$a = @$row->[0];
$b = @$row->[1];
print “$a $b\n”;
}
}

Greg Finance, Perl

Dividend Reinvestment Calculator

May 15th, 2008

I have been a moderate investor in Dividend Reinvestment Plans. aka (DRIPS) If you are not sure what that is, check out http://www.fool.com/school/drips.htm as they do a pretty good job explaining it.

But basically it allows investors to buy shares of a particular equity on a periodic basis (bi-weekly, monthly,quarterly etc). Dividends on that equitiy are automatically reinvested when they are distributed, thus buying fractional shares of the company.

My calculator below simulate a DRIP over time.

View code
Title: DRIP Calculator
Description: Click the link to see it full screen

I have not found a tool out there that really tracks how a stock + dividend reinvestment performs over time. So I wrote this little tool to track it. You can find it at http://www.gregjessup.com/DRIP If you know of something similar, please post a comment with the link. If you think my math is wrong, also post a comment and challenge me.

If you want to see some changes made to it, send me an email. I’ll have a look and try to post a change.

Happy DRIPing!

By the way..This is by no means guaranteed to be accurate. Although I use the tool myself, and trust my work…it is not investment advice. Use it at your own risk. Persons seeking investment advice should consult a financial professional. Data not guaranteed to be accurate.

Greg FLEX, Finance

How to Create a Stored Proc in MySQL

May 15th, 2008

I haven’t seen this very well and clearly documented, as far as passing parameters go. Here is a simple create user proc.

DELIMITER $$

DROP PROCEDURE IF EXISTS `portfoliomanager`.`createNewUser` $$
CREATE PROCEDURE `portfoliomanager`.`createNewUser` (IN username varchar(45),IN pass varchar(45))
BEGIN
INSERT INTO portfoliomanager.users (email,password) VALUES(username,pass);
END $$

DELIMITER ;

Greg MySQL

FLEX and Perl Export to Excel

May 1st, 2008

Need to export a Flex Datagrid to Excel CSV?

Here is a link to the Flex code

The flex code will convert the DataGrid to a CSV string. Which you will then post to a cgi….code below.

You can see it in action on my Dividend Reinvestment Tool 

#!/usr/bin/perl
use CGI qw(:standard);
my $cgi = new CGI;
my $count = 0;
use CGI::Carp qw(fatalsToBrowser);
$title=$cgi->param('title');
$html=$cgi->param('htmltable');
$type = $cgi->param('type');
if ($type = "CSV") {
print $cgi->header(-expires=>'now', -type=>'application/x-csv', -content_disposition=>"attachment; filename=$title.csv");
print "$html";
}
else {
print $cgi->header(-expires=>'now', -type=>'application/octet_stream', -content_disposition=>"attachment; filename=$title.xls");
print $cgi->start_html(-title => 'Export'
);
print "$html";
print $cgi->end_html;

Greg FLEX, How-To, Perl