gpt4 book ai didi

perl - 没有ID/名称的Perl HTML::Treebuilder XPATH表标签

转载 作者:行者123 更新时间:2023-12-03 17:05:38 31 4
gpt4 key购买 nike

我想提取HTML页面中特定表单元格中存在的一些文本。

现在,问题是,此单元格存在于没有ID /名称的表标签内。

我正在使用HTML :: TreeBuilder :: XPath来使用XPATH表达式提取值。

HTML内容如下所示:

<table border="0">
<tr>
<td>Some Text</td>
<td>The Text I want comes here</td>
</tr>


这是我的XPATH表达式的样子:

@nodes=$tree->findnodes(q{//table[8]/tr/td[2]/text()});
print $_->string_value."\n" foreach(@nodes); # corrected, thanks mirod.


它不显示输出。

我使用了table [8],因为它是HTML页面中的八个表标签(假设索引从1开始)。

另外,我使用了td [2],因为我想要第二个td标签之间的innerHTML。

谢谢。

最佳答案

如果在XPath查询的末尾删除text(),会发生什么情况?我认为在td本身上调用string_value就足够了。

同样,方法调用不会内插在字符串中,因此您需要编写print $_->string_value, "\n"

这将为您提供内容的文本,而不是标记。为此,您需要使用as_HTML,并剥离外部标签(HTML :: Element中没有提供内部HTML的方法):

#!/usr/bin/perl

use strict;
use warnings;

use HTML::TreeBuilder::XPath;

my $tree= HTML::TreeBuilder::XPath->new_from_content( <DATA>);

my @nodes=$tree->findnodes(q{//table[1]/tr/td[2]});
print $_->string_value, "\n" foreach(@nodes); # text
print $_->as_HTML, "\n" foreach(@nodes); # outerHTML



__DATA__
<html>
<body>
<table border="0">
<tr>
<td>Some Text</td>
<td>The Text I want comes here with <b>nested</b> content</td>
</tr>
</body>
</html>

关于perl - 没有ID/名称的Perl HTML::Treebuilder XPATH表标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11965075/

31 4 0