【发布时间】:2015-10-13 07:34:08
【问题描述】:
我在这里想要实现的是将 标签 HTML 中的 values 提取到我成功的 CSV 文件中。我想要的是对正在生成的输出进行一些控制。
HTML 值是:
<input type=hidden id=batterystatus value="Charging" >
<input type=hidden id=batterylevel value="80 %" >
<input type=hidden id=signalStrength value="4" >
<input type=hidden id=ulCurrentDataRate value="5 Kbps" >
<input type=hidden id=dlCurrentDataRate value="136 Kbps" >
<input type=hidden id=ConnectionTime value="00:15:33:10" >
<input type=hidden id=noOfClient value="2" >
现在,我使用 perl 编写脚本。
#!usr/bin/perl
use strict;
use warnings;
use HTML::TokeParser::Simple;
my $url = 'http://192.168.225.1';
my $parser = HTML::TokeParser::Simple->new(url => $url);
my %tags;
while (my $tag = $parser->get_tag('input')) {
my $id=$tag->get_attr('id'); # get id attribute value
my $value = $tag->get_attr('value'); # get value attribute value
$tags{$id}=$value;
}
my @tags;
my @values;
for (keys %tags){
push (@tags, $_);
push (@values, $tags{$_});
}
open(my $OUTFILE, ">", "test.csv")
or die "Unable to open testfile for writing : $!";
print $OUTFILE join(",",@tags)."\r\n";
print $OUTFILE join(",",@values)."\r\n";
CSV文件中生成的数据是:
然后当我重新运行这段代码时,我发现了这样的东西:
问题:
- 如何修复单元格 ID,这样我总是在
Cell A1中得到IMSI以及特定单元格中的其他输出? - 如何重命名每个单元格标题?例如
batterylevel重命名为Battery Level或connectedStatus重命名为Connected Status。
【问题讨论】:
-
Sidenode:你知道
<input>的id不是表单使用的标识符吗?那些使用name。只是说。 :) -
@simbabque - 问题已被编辑。添加了示例 HTML 代码
-
我想知道如果输入中没有名称,这是一个什么样的页面。可能是 Kies Air 状态页面或类似的移动设备具有网络服务器并且您可以从网络访问它的地方?关键是,这些列没有排序,但它们都存在。
-
@simbabque - 我没有复制整个 html 页面,因为我更关心从那里挑选出值。如果你想看看,请告诉我,我也会分享。
标签: perl csv automation