如何使用 Mojolicious 打印段落元素中的文本

How to print the text in a paragraph element using Mojolicious

 use strict;
 use warnings;
 use feature 'say';

 use Mojo;

 my $ua = Mojo::UserAgent->new;

 my $array = $ua->get('http://blogs.perl.org/')->res->dom->find('div > p ')->map('text')->join("\n");

 my @arr = split("\n",$array);
 print "\n$arr[0]\n";

当我运行这段代码时,我得到以下输出

lets you write your Perl 6 code using Roman numerals:

但我希望输出为:

perl6-slang-roman lets you write your Perl 6 code using Roman numerals:

谁能帮帮我?

  • text 方法将仅获取紧接在 节点内的文本节点。要获取所有后代文本节点,您需要使用 all_text

  • 使用join然后再次split将元素分隔成一个列表也是相当难看的。 find方法returns一个Mojo::Collection可以直接索引的对象

  • 并且把选中的div限制在需要的class

像这样

use strict;
use warnings;
use feature 'say';

use Mojo;

my $ua = Mojo::UserAgent->new;

my $collection = $ua->get('http://blogs.perl.org/')->res->dom->find('div.entry-body > p ');

say $collection->[0]->all_text;

输出

perl6-slang-roman lets you write your Perl 6 code using Roman numerals: