#!/usr/bin/perl -w
use strict;
use utf8;
use LWP::Simple;
use XML::LibXML;
use URI;

# Przygotowanie parsera, ustawienie go w tryb ignorowania bdw,
# aby moliwa bya obsuga bdnego kodu HTML
my $parser = XML::LibXML->new(  ); $parser->recover(1);

# Analizowanie strony, przeksztacenie jej w drzewo DOM
my $url  = 'http://junglescan.com/';
my $data = get($url) or die $!;
my $doc  = $parser->parse_html_string($data);

# Pobranie wierszy tabeli (jako tablicy referencji 
# do wzw DOM)
my @winners = $doc->findnodes(q{
    /html/body/table/tr/td[1]/font/form[2]/table[2]/tr
});

# Pierwsze dwa wiersze zawieraj nagwki,
# nas interesuje jedynie pierwszych pi elementw,
# wic wybieramy tylko cz tablicy.
@winners = @winners[2..6];

foreach my $product (@winners) {
    # Pobranie zmian procentowych i typu
    # Uywamy metody find, gdy potrzebujemy jedynie acuchw
    my $change = $product->find('td[4]');
    my $type = $product->find('td[3]//img/@alt');

    # Pobranie tytuu. Przeszkadzaj nam pewne biae znaki, wic
    # usuwamy je za pomoc wyrae regularnych.
    my $title = $product->find('td[3]//tr[1]');
    $title =~ s/^\s*//; $title =~ s/\xa0$//;

    # Pobieramy pierwsze hipercze ("Visit Amazon.com page")
    # Jest ono podane wzgldem adresu URL strony, wic przeksztacamy
    # ten adres na adres bezwzgldny
    my $relurl = $product->find('td[3]//a[1]/@href');
    my $absurl = URI->new($relurl)->abs($url);

    # Wynik. Nie zawsze wystpuje typ, wic nie przejmujemy si jego brakiem.
    print "$change  $title";
    print " [$type]" if $type;
    print "\n       Amazon info: $absurl\n\n";
}

