使用perl在HTML标记之间提取文本

时间:2014-06-21 08:26:48

标签: html perl

我在文档中有HTML标记,如下所示:

><H2 
align="justify"
><FONT size="+2" color="#008AD9"><B>ACCESS_NUMBER<FONT size="+2" color="#008AD9"><B>
</H2
>

我想从上面的HTML文本中仅提取ACCESS_NUMBER。

我该怎么做?我想确保只提取所有<H2>标记之间的文本。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

使用Mojo::DOM

#!/usr/bin/perl
use strict;
use warnings;
use Mojo::DOM;
my $HTML = <<"EOF";
<html>
<head>
<title>Test</title>
</head>
<body>
<h2>
<font><b>ACCESS_NUMBER</b></font> 
</h2>
</body>
</html>
EOF

my $dom = Mojo::DOM->new( $HTML );
print $dom->find('h2 font b')->text;

关于Mojo::DOMMojo::UserAgent的8分钟视频教程,请查看Mojocast Episode 5

答案 1 :(得分:1)

根据上面给出的内容,这会有效,但有些东西告诉我你有更复杂的HTML和/或你真的想要\ d +。

#!/usr/bin/perl
use strict;
use warnings;

while(<DATA>){
    print "$1\n" if />(\w+)</;
}

__DATA__
<H2
   align="justify"
  <FONT size="+2" color="#008AD9"><B>ACCESS_NUMBER<FONT size="+2" color="#008AD9"><B>S
  </H2

答案 2 :(得分:0)

对于每一行,删除这样的html标签:

$l=~s/<.+?>/ /g; # Replace each tag with a space so you don't get run-on words. 

您剩下的只是没有html标签的文字。

我使用的软件使用我必须删除的标签(不是html),所以我做了很多。