2012-12-28 112 views
1

这里是一个网页我的样本数据使用WWW ::在Perl模块机械化

<hr> 
<h4>This is Second line</h4> 
Some Text Here<br> 
Some More Text Here<br> 

<h4>This is First line</h4> 
Mem Capacity : 130.65 MB<br> 
Mem Used : 74.52 MB<br> 
Mem Available : 56.13 MB<br> 
Mem Used Percentage : 57<br> 

我使用下面的代码来提取之类的东西

Mem Capacity : 130.65 MB 
Mem Used : 74.52 MB 
Mem Available : 56.13 MB 
Mem Used Percentage : 57 

的从网页中提取线代码是这样的:

#!/usr/bin/perl 
use WWW::Mechanize; 

$mech = WWW::Mechanize->new(); 
$url = 'some url'; 
$result = $mech->get($url); 
$content = $result->as_string(); 
print $content; 
if($content =~ /Mem Capacity :([\d.]+)/) 
{ 
$value = $1; 
print "Memory Capacity $value MB n"; 
} 

我没有得到任何输出。任何人都可以告诉我,我哪里错了?

+1

您应该'使用严格的;使用警告;'。在这种情况下,我还会建议使用HTML解析器而不是WWW :: Mechanize,如果您只有HTML解决方案。 – squiguy

+0

@squiguy你能告诉我怎样才能用HTML解析器实现相同的代码? – UKR

+2

这显然是从这个问题的延续:http://stackoverflow.com/questions/14051191/how-do-i-parse-html-with-perl和我的问题仍然是相同的:你如何定义行您正在寻找? –

回答

1

试试这个 - 如果($内容=〜/Mem\s*Capacity\s*:\s*(\d+(.\d+)?)/i)

+0

It Worked ..谢谢了! – UKR