使用perl从网页上的表中提取信息

时间:2012-10-05 20:22:37

标签: perl

我是perl的新手,需要一些从网页中提取表格的帮助。我今天能够弄清楚如何使用perl打印页面。现在我只需要提取表中指出温度的信息。 我目前的代码是:

# perl
use strict;
# use LWP::Simple;
use LWP::UserAgent;
my $ua = new LWP::UserAgent;
$ua->timeout(120);
my $url='http://MyTempSite/';
my $request = new HTTP::Request('GET', $url);
my $response = $ua->request($request);
my $content = $response->content();
print $content;

我正试图从这个html文件中获取温度读数:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><body    bgcolor="#C0C0C0" text="#000000" vlink="#800080" link="#0000FF"><P><h1>TempTrax Digital Thermometer</h1><BR><table cellpadding=0 cellspacing=0 border=0><TR><TD>Model:</TD><TD width=10 rowspan=7><BR></TD><TD>E4</TD><TR><TD>Manufacturer:</TD><TD>Sensatronics</TD> </TR><TR><TD>Website:</TD><TD><a href="http://www.sensatronics.com">http://www.sensatronics.com</a></TD></TR><TR><TD>Firmware Version:</TD><TD>1.2</TD></TR><TR><TD>Release Date:</TD><TD>December 16, 2003</TD></TR><TR><TD>Serial Number:</TD><TD>EA8E6L0T121</TD></TR><TR><TD>Unit name:</TD><TD>LiveTempMonitor</TD></TR></TABLE><P><h3>Current temperature readings:</h3><p><table><TR><TD width=200>Probe1:</TD><TD> 75.1</TD></TR>
<TR><TD width=200>Probe2:</TD><TD>-99.9</TD></TR>
<TR><TD width=200>Probe3:</TD><TD>-99.9</TD></TR>
<TR><TD width=200>Probe4:</TD><TD>-99.9</TD></TR>
</table></body></html>

我应该如何仅获取“当前温度读数”表中的信息?谢谢大家提前看看这个。

1 个答案:

答案 0 :(得分:1)

use 5.010;
use strict;
use warnings;

use XML::LibXML qw( );

my $html = $response->decoded_content( charset => 'none' );
my $doc  = XML::LibXML->load_html( string => $html );
my $root = $doc->documentElement();
my @readings =
   map $_->textContent(),
    $root->findnodes(
       '//table[ position() = 2 ]/tr/td[ position() = 2 ]'
    );

say for @readings;