The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use JSON::XS;
use Web::Scraper;
use URI;

sub extract_url { (m!(http://\S*)!)[0] }

my $uri = URI->new( shift || "http://www.oembed.com/" );

my $scraper = scraper {
    process "//h3[contains(text(), 'Providers')]/following-sibling::ul", 'providers[]' => scraper {
        process "//li[contains(text(), 'URL scheme')]", url => [ 'TEXT', \&extract_url ];
        process "//li[contains(text(), 'endpoint') or contains(text(), 'Endpoint')]", api => [ 'TEXT', \&extract_url ];
    };
    result 'providers';
};

my @providers = grep { defined $_->{url} } @{ $scraper->scrape($uri) };
print encode_json(\@providers);