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