2013-10-04 41 views
1
... 
<div class="termContainer"> 
<h4>SUMMER 2013</h4> 
<ul> 
<li> 
<a href="url" title="A"> 
<span>A</span> 
</a></li> 
<li><a href="url" title="B"> 
<span>B</span> 
</a></li> 
<li><a href="url" title="C"> 
<span>C</span> 
</a></li> 
</ul> 
</div> 
... 
<div class="termContainer"> 
<h4>SPRING 2013</h4> 
...other links 
</div> 
... 

我写一个Perl脚本来获得链接的标题里面解析HTML标题

<div class="termContainer"> 

在HTML代码中。我的预期结果是A,B,C。

我真的不知道如何处理它。任何建议?

非常感谢。

+1

HTLM :: TreeBuilder作为:: XPath的 – Suic

回答

4
use HTML::TreeBuilder::XPath; 

my $html = <<EOFHTML; 
... 
<div class="termContainer"> 
<h4>SUMMER 2013</h4> 
<ul> 
<li> 
<a href="url" title="A"> 
<span>A</span> 
</a></li> 
<li><a href="url" title="B"> 
<span>B</span> 
</a></li> 
<li><a href="url" title="C"> 
<span>C</span> 
</a></li> 
</ul> 
</div> 
... 
<div class="termContainer"> 
<h4>SPRING 2013</h4> 
...other links 
</div> 
... 
EOFHTML 

my $tree = HTML::TreeBuilder::XPath->new_from_content($html); 

foreach my $title ($tree->findvalues('//div[@class="termContainer"]//a/@title')) { 
    print $title, "\n"; 
} 
+0

我有这样的错误 '\ DIV [@cl ... ^^^ 无效查询某处在这里(我认为)'。任何想法? – novo

+0

不应该是// // div [@ class =“termContainer”]/a \ @ title'? – mirod

+0

当我将函数更改为自己的方式时,这是错误@mirod'// div [@ class =“termContainer”]/a \ @title ... .............. ................ ^^^ 无效的查询在这里(我认为)' – novo