加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Perl获取值

发布时间:2020-12-15 23:31:08 所属栏目:大数据 来源:网络整理
导读:所以我有一个报告工具,它在 HTML文件中吐出作业调度统计信息,我希望使用Perl来使用这些数据.我不知道如何逐步浏览HTML表格. 我知道如何使用jQuery做到这一点 $.find('tr').each(function(){ variable = $(this).find('td').text}); 但我不知道如何用Perl做同
所以我有一个报告工具,它在 HTML文件中吐出作业调度统计信息,我希望使用Perl来使用这些数据.我不知道如何逐步浏览HTML表格.

我知道如何使用jQuery做到这一点

$.find('<tr>').each(function(){
  variable = $(this).find('<td>').text
});

但我不知道如何用Perl做同样的逻辑.我该怎么办?下面是HTML输出的示例.每个表行包括三个相同的统计信息:对象名称,状态和返回代码.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="UC4 Reporting Tool V8.00A">
<Title></Title>
<style type="text/css">
th,td {
font-family: arial;
font-size: 0.8em;
}

th {
background: rgb(77,148,255);
color: white;
}

td {
border: 1px solid rgb(208,213,217);
}  

table {
border: 1px solid grey; 
background: white;
}

body {
background: rgb(208,217);
}
</style>
</HEAD>
<BODY>
<table>
<tr>
  <th>Object name</th>
  <th>Status</th>
  <th>Return code</th>
</tr>
<tr>
  <td>JOBS.UNIX.S_SITEVIEW.WF_M_SITEVIEW_CHK_FACILITIES_REGISTRY</td>
  <td>ENDED_OK - ended normally</td>
  <td>0</td>
</tr>
<tr>
  <td>JOBS.UNIX.ADMIN.INFA_CHK_REP_SERVICE</td>
  <td>ENDED_OK - ended normally</td>
  <td>0</td>
</tr>
<tr>
  <td>JOBS.UNIX.S_SITEVIEW.WF_M_SITEVIEW_CHK_FACILITIES_REGISTRY</td>
  <td>ENDED_OK - ended normally</td>
  <td>0</td>
</tr>

解决方法

您可以使用RegExp,但Perl已经为此特定任务构建了模块.查看 HTML::TableContentParser

您可能会这样做:

use HTML::TableContentParser;

$tcp = HTML::TableContentParser->new;
$tables = $tcp->parse($HTML);

foreach $table (@$tables) {
  foreach $row (@{ $tables->{rows} }) {
    foreach $col (@{ $row->{cols} }) {
      # each <td>
      $data = $col->{data};
    }
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读