#!/usr/bin/perl -Tw use HTML::TokeParser; use LWP::Simple; use XML::Simple; use strict; my $html = get('http://www.perlmonks.org/'); die "LWP::Simple failed to retrieve source HTML - $!" unless ($html); my (%data, $formname, $selectname); my $parser = HTML::TokeParser->new(\$html) || die $!; while (my $token = $parser->get_token) { my $type = shift @{ $token }; if ($type eq "S") { my ($tag, $attr, $attrseq, $text) = @{ $token }; if ($tag eq "form") { $formname = $attr->{'name'} || 'none'; } elsif ($tag eq "input") { push (@{$data{$formname}}, { 'type' => $attr->{'type'}, 'field_name' => $attr->{'name'} || 'none', }) if defined $formname; } elsif ($tag eq "select") { $selectname = $attr->{'name'} || 'none'; } elsif ($tag eq "option") { push (@{$data{$formname}}, { 'type' => "select", 'field_name' => $selectname, 'value' => $attr->{'value'} }) if defined $selectname; }; }; }; my ($xml) = XML::Simple->new(); print STDOUT $xml->XMLout(\%data); exit 0; ####