تقدم بيئة تطوير الويب Mojolicious عدة مكتبات للتعامل مع الوظائف المختلفة، ومنها Mojo::DOM المختصة بتحليل مستندات HTML أو XML ومعالجتها. يمكن استخدام هذه المكتبة في أي وظيفة من وظائف السير في مستند HTML، وفي المثال التالي سنستعرض كيفية استحضار جميع روابط عروض الشرائح من SlideShare لحساب ما، وحفظها في ملف. تنزيل ملف صفحة الـHTML الأصل باستخدام Mojo::UserAgent. وسينتقل خلال الصفحات باستخدام متغير في عنوان الصفحة.

use Mojo;
use File::Slurp;

my $pages=2;

for (1..$pages) {
	Mojo::UserAgent->new->get("http://www.slideshare.net/Tim.Bunce/presentations/$_")->res->dom->find('li strong a.notranslate')->each(sub{
		write_file('output.txt', {append=>1}, "http://www.slideshare.net" . $_->attr('href') . "\n");
	});
}

في المثال التالي سنحمل جميع كتب Maupassant من موقع bouquineux باستخدام LWP::Simple. الكتب بالصيغتين pdf و epub

use LWP::Simple 'getstore';
use Mojo;

for (1..3) {
	Mojo::UserAgent->new->get("http://www.bouquineux.com/index.php?ebooks=47&Maupassant&page=$_")->res->dom->find('a.titre1')->each(sub {
		Mojo::UserAgent->new->get("http://www.bouquineux.com/index.php" . $_->attr('href'))->res->dom->find("a[href^='epub'],a[href^='pdf']")->each(sub{
			my $fname = $_->attr('href');
			$fname =~ s/.+?\///;
			getstore ('http://www.bouquineux.com/' . $_->attr('href'), $fname);
			say 'Downloaded: ' . $_->attr('href');
		});
	});
}

وهذا نفس المثال السابق لتحميل كتب Balzac

use LWP::Simple 'getstore';
use Mojo;

for (1..10) {
	Mojo::UserAgent->new->get("http://www.bouquineux.com/index.php?ebooks=10&Balzac&page=$_")->res->dom->find('a.titre1')->each(sub {
		Mojo::UserAgent->new->get("http://www.bouquineux.com/index.php" . $_->attr('href'))->res->dom->find("a[href^='epub'],a[href^='pdf']")->each(sub{
			my $fname = $_->attr('href');
			$fname =~ s/.+?\///;
			getstore ("http://www.bouquineux.com/" . $_->attr('href'), $fname);
            say $_->attr('href');
		});
	});
}

أما المثال التالي فيقوم باختيار نصوص دروس تعليم الفارسية للعرب من موقع إذاعة طهران ثم تنزيل الملف الصوتي وكتابة ملف HTML بمحتويات الدرس

use Mojo;
use File::Slurper qw(read_text write_text);
use LWP::Simple 'getstore';

getstore( "http://arabic.irib.ir/components/com_baramej/core/style.css ",
          "style.css" );

write_text("style.css", "html{direction: rtl}\n" . read_text("style.css"));
say "Downloaded: style.css";

for ( 1 .. 10 ) {
  my $dom
      = Mojo::UserAgent->new->get( "http://arabic.irib.ir/programs/776?page=$_" )
      ->res->dom->find('div.grid9 ul a')->each(
    sub {
      my $item = $_->attr('href');
      $item =~ s/.+\/(\d+)$/$1/;

      my $dom2 = Mojo::UserAgent->new->get(
                       "http://arabic.irib.ir" . $_->attr('href') )->res->dom;
      my $title  = $dom2->at('ul.Titel-Pro li')->all_text;
      my $text   = $dom2->at('div.TEXT')->content;
      my $a_link = $dom2->at('div[align="center"] a')->attr('href');

      write_text(
        "$title.html",
        qq{<!DOCTYPE html>\n<html>\n<head>\n<meta charset="utf-8"/>\n<link rel="stylesheet" href="style.css" type="text/css">\n<title>$title</title>\n</head>\n<body>$text</body>\n</html>}

      );
      getstore( "http://arabic.irib.ir" . $a_link, $title . ".mp3" );
      say $item;
    } );
}