2
my $V1 = $sel->get_text("//body[\@id='ext-gen3']/div[14]/div[2]/div/div/div/div/div/div/div/div/div/div[2]/div/div/table/tbody/tr/td/div/div");
print($V1 . "\n");

上記のコマンドを実行すると、エラーなしで v1 を印刷できました。

私の目的は、そのような値を出力することです(たとえば、約20)。ただし、各変数の xpath はdiv要素によってのみ異なります (つまり、div要素の前にある要素は、反復ごとに置き換えられ、置き換えられる必要がtableありdiv[2],ます。div[2]div[3]

次のスニペットは、div[] 要素の置換を行います。しかし、無効なxpathと言っています。

my $xpath = q(//body[\@id='ext-gen3']/div[14]/div[2]/div/div/div/div/div/div/div/div/div/div[2]/div/div/table/tbody/tr/td/div/div);  
for my $i (0,2) 
{     
my @nodes = split qr'/', $xpath;     
$nodes[16] .= "[$i]" unless 0 == $i;     
#say join '/', @nodes; }
my @somenames = join('/',@nodes);
#print "\n";
#print @somenames ;
foreach my $val (@somenames) {
    chomp($val);
    #my @new_arr = $sel->get_text($val);
    print "\n";
    print $val; ***this prints the xpath value which i needed***
    my $V1 = $sel->get_text("$val"); ***#i'm passing the same xpath here within double quotes but says as invalid xpath***
     print($V1 . "\n");
    my @new_arr = $sel->get_text("$val");
  } 
}

xpath を渡す間違った方法に従っていますか? どうすればできますか?

4

1 に答える 1

2

あなたの XPath 文字列の定義と、前の回答の私の定義を比較してください。属していないコマーシャルの前にバックスラッシュを挿入しました。

于 2012-06-27T07:49:12.470 に答える