FedEx Parcel Tracker
Christmas is coming, and Santa has outsourced his deliveries to Federal Express. Lucky us, as that means we can use FedEx’s online shipment tracker to watch our parcels wend their merry way here. Except the tiresome chore of refreshing the FedEx site is just too much to handle. Let’s let a nice script elf take care of it and create a feed for every parcel.
Although FedEx and its rivals do provide APIs, we won’t be using them here. FedEx’s page is easy enough to scrape by brute force, and it’s fun to do so. Of course, when it next changes its page layout, this script will need rejigging. It’s easy to see how to do that when it happens.
Walking Through the Code
So, starting with the usual Perl standards of
warnings;, strict;,
XML::RSS, and CGI,
let’s use LWP::Simple to retrieve
the page and the marvellous HTML::TokeParser to do
the dirty work. More on that anon.
use warnings; use strict; use XML::RSS; use CGI qw(:standard); use LWP::Simple 'get'; use HTML::TokeParser;
Now let’s set up some variables to use later, then fire up the CGI module and grab the tracking number from the query string. To use this script, therefore, you need to request:
http://www.example.org/fedextracker.cgi?track=123456789
where 123456789 is the tracking number of the
parcel:
my ( $tag, $headline, $url, $date_line );
my $last_good_date;
my $table_end_check;
my $cgi = CGI::new( );
my $tracking_number = $cgi->param('track');Now we’re ready to jingle. Using
LWP::Simple’s
get method, pull down ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access