Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl HTML::TableExtract-can';找不到标题_Perl_Perl Module - Fatal编程技术网

Perl HTML::TableExtract-can';找不到标题

Perl HTML::TableExtract-can';找不到标题,perl,perl-module,Perl,Perl Module,让HTML:TableExtract模块在perl中工作起来有点困难。问题是(我认为)表头包含html代码来生成下标和特殊符号,所以我不确定应该如何使用headers方法进行搜索。我尝试过使用完整的标题(带标签),也尝试过只使用文本,这两种方法都不管用。我试图从下一页中提取表格(以及其他同位素的类似表格): 由于我没有使用headers方法,所以我也尝试在对象构造函数中指定深度和计数(由于页面上只有一个顶级表,因此假定两者都为0),但它仍然没有找到任何内容。任何帮助都将不胜感激 以下是我使用h

让HTML:TableExtract模块在perl中工作起来有点困难。问题是(我认为)表头包含html代码来生成下标和特殊符号,所以我不确定应该如何使用headers方法进行搜索。我尝试过使用完整的标题(带标签),也尝试过只使用文本,这两种方法都不管用。我试图从下一页中提取表格(以及其他同位素的类似表格):

由于我没有使用headers方法,所以我也尝试在对象构造函数中指定深度和计数(由于页面上只有一个顶级表,因此假定两者都为0),但它仍然没有找到任何内容。任何帮助都将不胜感激

以下是我使用headers方法的尝试:

#!/usr/bin/perl -w



use strict;
use warnings;
use HTML::TableExtract;



my $numArgs = $#ARGV + 1;
if ($numArgs != 1) {
    print "Usage: perl convertlevels.pl  <HTML levels file>\n";
    exit;
}

my $htmlfile = $ARGV[0];
open(INFILE,$htmlfile) or die();

my $OutFileName;

if($htmlfile =~ /getdataset.jsp\?nucleus\=(\d+\w+)/){

    $htmlfile =~ /getdataset.jsp\?nucleus\=(\d+\w+)/;

    $OutFileName = "/home/dominic/run19062013/src/levels/".$1.".lev";

}

my $htmllines = <INFILE>;

open(OUTFILE,">",$OutFileName) or die();


my $te = new HTML::TableExtract->new(headers => ['E<sub>level</sub> <br> (keV)','XREF','J&pi;','T<sub>1/2</sub>'] );

$te->parse_file($htmllines);

if ($te->tables)
{
      print "I found a table!";
}else{

    print "No tables found :'(";

}


close INFILE;

close OUTFILE;
#/usr/bin/perl-w
严格使用;
使用警告;
使用HTML::TableExtract;
my$numArgs=$#ARGV+1;
如果($numArgs!=1){
打印“用法:perl convertLevel.pl\n”;
出口
}
my$htmlfile=$ARGV[0];
打开(infle,$htmlfile)或死亡();
我的名字;
如果($htmlfile=~/getdataset.jsp\?nucleus\=(\d+\w+/){
$htmlfile=~/getdataset.jsp\?nucleus\=(\d+\w+)/;
$OutFileName=“/home/dominic/run19062013/src/levels/”$1..lev”;
}
我的$HTMLINES=;
打开(OUTFILE,“>”,$OutFileName)或死();
my$te=new HTML::TableExtract->new(标题=>['Elevel
(keV)'、'XREF'、'J&pi;'、'T1/2']; $te->parse_文件($htmlines); 如果($te->tables) { 打印“我找到一张桌子!”; }否则{ 打印“未找到表:”(”; } 封闭填充; 关闭输出口;
请暂时忽略OUTFILE的情况-其目的是重新格式化表内容并打印到一个单独的文件中,以便其他应用程序轻松读取。我遇到的问题是,table extract方法找不到任何表,因此当我测试是否找到任何表时,结果总是错误的!我还ied表提取对象的构造函数中的一些其他选项,但每次尝试都是一样的!第一次使用,请原谅我的n00bishness


谢谢!

您在这里使用了两次新功能
my$te=new HTML::TableExtract->new(headers=>['Elevel
(keV)'、'XREF'、'J&pi;'、'T1/2'];
将其更改为
my$te=HTML::TableExtract->new(headers=>['Elevel
(keV)'、'XREF'、'J&pi;'、'T1/2')
谢谢Arunesh。我现在已经解决了这个问题-还有一个问题,我没有将整个输入文件输入到一个字符串中(我最终使用file::Slurp),因此HTML::TableExtract永远找不到任何内容。欢迎自行回答