[problem]
You want to use libcurl, driven through Perl.
[/problem]
[solution]
Beautiful for parse HTML and either extracted (screen scraping) content or performing actions based on results.
See the examples tab for this simple script, demonstrating the libcurl API for Perl.
[/solution]
[example]
#!/usr/bin/perl
$url="http://perl.coding-school.com/"; # set your url here
$|++;
use Curl::easy;
# Init the curl session
my $curl= Curl::easy::init() or die "curl init failed!n err: $!n";
sub body_callback {
my ($chunk,$context)=@_;
push @{$context}, $chunk;
return length($chunk);
}
Curl::easy::setopt
($curl, CURLOPT_PROXY, $proxy) if($proxy);
Curl::easy::setopt
($curl, CURLOPT_PROXYPORT, $proxyport) if($proxyport);
Curl::easy::setopt
($curl, CURLOPT_SSL_VERIFYHOST, 0);
Curl::easy::setopt
($curl, CURLOPT_SSL_VERIFYPEER, 0);
Curl::easy::setopt
($curl, CURLOPT_URL, $url);
Curl::easy::setopt
($curl, CURLOPT_WRITEFUNCTION, &body_callback);
my @body;
Curl::easy::setopt
($curl, CURLOPT_FILE, @body);
Curl::easy::setopt
($curl, CURLOPT_ERRORBUFFER, "errbuf");
if (Curl::easy::perform
($curl) != 0) { print "Failed : $errbufn"; };
Curl::easy::cleanup($curl);
# Separate each line into one element in array
@lines=();
foreach (@body) { push(@lines,split('n', $_, 9999)); }
foreach (@lines) {
# just to demonstrate it works!
if(/icons/) { print("$_n"); }
}
exit(0);
Here is a demo screen shot of this code using perl and libcurl.
[/example]
[reference]
[tags]Perl libcurl demo, Perl libcurl, Perl, libcurl, curl, Perl Coding School[/tags]
[/reference]
If you have found my website useful, please consider buying me a coffee below 😉