HTML::TokeParser - 查找标签之间和之后的文本

标签 html perl tags

我正在尝试使用以下代码从 HTML 页面中提取以下文本,但我的代码失败了..

预算 - 25,000,00 美元

总收入(全局)- 58,500,00 美元

#!/usr/bin/perl
use HTML::TokeParser;

my $content = <<HTML;
<h5>Budget</h5>
$25,000,000 (estimated)<br/>
<br/>

<h5>Opening Weekend</h5>
$727,327 (USA) (<a href="/date/09-25/">25 September</a> <a href="/year/1994/">1994</a>) (33 Screens)<br/>
<br/>

<h5>Gross</h5>
$28,341,469 (USA) (<a href="/date/08-05/">5 August</a> <a href="/year/2012/">2012</a>)<br/>&#163;2,344,349 (UK) (<a href="/date/05-18/">18 May</a> <a href="/year/1995/">1995</a>)<br/>&#163;1,732,123 (UK) (<a href="/date/04-16/">16 April</a> <a href="/year/1995/">1995</a>)<br/>$58,500,000 (Worldwide)<br/>$555,480 (Belgium)<br/>ESP 637,291,985 (Spain)<br/>
<br/>

<h5>Admissions</h5>
82,890 (Belgium)<br/>163,594 (France) (<a href="/date/03-28/">28 March</a> <a href="/year/1995/">1995</a>)<br/>410,811 (Germany) (<a href="/date/12-31/">31 December</a> <a href="/year/1995/">1995</a>)<br/>1,245,604 (Spain)<br/>
<br/>

<h5>Filming Dates</h5>
<a href="/date/06-16/">16 June</a> <a href="/year/1993/">1993</a>&nbsp;-&nbsp;<a href="/date/09-10/">10 September</a> <a href="/year/1993/">1993</a><br/>
<br/>
HTML

my $description = "";
my $tp = HTML::TokeParser->new(\$content) || die "Can't open: $!";

while (my $token = $tp->get_tag("h5")) {
    my $text = $parser->get_text();
    last if $text =~ /budget/i;
}

最佳答案

这可能不是最优雅的解决方案,但它确实有效。

while (my $token = $tp->get_tag("h5")) {
    my $heading = $tp->get_text();
    $tp->get_tag("/h5");
    my $amount = $tp->get_trimmed_text =~ s/[^\d,\$]//gr;
    next unless $amount =~ m/\d/;
    say qq{$heading - $amount};
}

根据HTML::TokeParser docs您可以使用 get_tag 获取开始和结束标签.启动后<h5>我们可以捕获标题,然后继续结束 </h5> .那一个后面有一个文本节点,其中包含货币值。

关于HTML::TokeParser - 查找标签之间和之后的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21825549/

相关文章:

Javascript - 表格内容的加载器

javascript - 使用一个全局数据库查询填充多个网页输出?

perl - 如何在 Perl 中测试包含 ANSI 颜色代码的字符串是否等效?

postgresql - 我可以在连接后定义 DBIx::Class::ResultSource::View 吗?

css - div 输入标签值改变颜色

html - Eclipse - 如何扩展 HTML 编辑器以添加自定义标签?

javascript - 设置列表元素宽度文本宽度

css - HTML DIV 和填充问题

javascript - 为什么我的表单发布函数会打开我的 .pl 文件而不是执行它?

amazon-web-services - AWS CloudFormation 是否支持 AWS::EC2::VPCEndpoint 的标签属性