$ ./1.dom.pl
./1.dom.pl
123
Test
123
a
b
b
a
a:Test
b:123
Test
123
789
456
$ cat 1.dom.pl
#!/usr/bin/perl
use strict;
use warnings;
use Mojo::URL;
use Mojo::Util qw(dumper);
use Mojo::UserAgent;
use Data::Dump;
use Log::Log4perl;
use 5.016;
use Mojo::DOM;
my $log_conf3 = "/home/hogan/Documents/hogan/logs/conf_files/3.conf";
my $log_conf4 = "/home/hogan/Documents/hogan/logs/conf_files/4.conf";
#Log::Log4perl::init($log_conf3); #debug
Log::Log4perl::init($log_conf4); #info
my $logger = Log::Log4perl->get_logger();
$logger->info("$0");
# pretend to be a browser
my $uaname =
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36';
my $ua = Mojo::UserAgent->new;
$ua->max_redirects(5)->connect_timeout(20)->request_timeout(20);
$ua->transactor->name($uaname);
## example from https://docs.mojolicious.org/Mojo/DOM
#use Mojo::DOM;
# Parse
my $dom = Mojo::DOM->new('');
# Find
say $dom->at('#b')->text;
say $dom->find('p')->map('text')->join("\n");
say $dom->find('[id]')->map( attr => 'id' )->join("\n");
# Iterate
$dom->find('p[id]')->reverse->each( sub { say $_->{id} } );
# Loop
for my $e ( $dom->find('p[id]')->each ) {
say $e->{id}, ':', $e->text;
}
# Modify
$dom->find('div p')->last->append('456
');
$dom->at('#c')->prepend( $dom->new_tag( 'p', id => 'd', '789' ) );
$dom->find(':not(p)')->map('strip');
# Render
say "$dom";
__END__
$ ./4.dom.pl
./4.dom.pl
Test
bar
bar
foo
baz
=====
comment
doctype
pi
text
root
tag
text
$ cat 4.dom.pl
#!/usr/bin/perl
use strict;
use warnings;
use Mojo::URL;
use Mojo::Util qw(dumper);
use Mojo::UserAgent;
use Data::Dump;
use Log::Log4perl;
use 5.016;
use Mojo::DOM;
my $log_conf3 = "/home/hogan/Documents/hogan/logs/conf_files/3.conf";
my $log_conf4 = "/home/hogan/Documents/hogan/logs/conf_files/4.conf";
#Log::Log4perl::init($log_conf3); #debug
Log::Log4perl::init($log_conf4); #info
my $logger = Log::Log4perl->get_logger();
$logger->info("$0");
## examples from https://docs.mojolicious.org/Mojo/DOM
my $dom7 = Mojo::DOM->new();
my $str7 =
$dom7->parse('Test
123
')->at('h2')->previous;
$logger->info($str7);
# "bar"
my $dom8 = Mojo::DOM->new();
my $str8 = $dom8->parse("")->at('p')->text;
say "$str8";
$logger->info($str8);
# "foo\nbaz\n"
my $dom9 = Mojo::DOM->new();
my $str9 = $dom9->parse("")->at('div')->text;
$logger->info($str9);
$logger->info('=====');
my $dom1 = Mojo::DOM->new();
my $str1 = $dom1->parse('')->child_nodes->first->type;
$logger->info($str1);
# "doctype"
$str1 = $dom1->parse('')->child_nodes->first->type;
$logger->info($str1);
# "pi"
$str1 = $dom1->parse('')->child_nodes->first->type;
$logger->info($str1);
$str1 =
$dom1->parse('Test')->at('title')->child_nodes->first->type;
$logger->info($str1);
$str1 = $dom1->parse('Test
')->type;
$logger->info($str1);
$str1 = $dom1->parse('Test
')->at('p')->type;
$logger->info($str1);
$str1 = $dom1->parse('Test
')->at('p')->child_nodes->first->type;
$logger->info($str1);
__END__
$