gpt4 book ai didi

html - 试图在 xpath 读取值

转载 作者:行者123 更新时间:2023-12-03 17:18:50 24 4
gpt4 key购买 nike

我正在尝试获取此网站上列出的学区的值(value):http://gis.nyc.gov/dcp/at/f1.jsp?submit=true&house_nbr=310&street_name=Lenox+Avenue&boro=1

我使用 Firebug 来获取该值的 XPath:
/html/body/table/tbody/tr[2]/td/table/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr[3]/td/table/tbody/tr[2]/td[2]/table/tbody/tr[2]/td/table/tbody/tr[10]/td[2]

并想用 Perl 阅读它。我写了以下代码:

#!/usr/bin/perl -w

use HTML::TreeBuilder::XPath;
use Data::Dumper;

my $tree= HTML::TreeBuilder::XPath->new;

$tree->parse_file("test.html");

my @nb=$tree->findvalue( '/html/body/table/tbody/tr[2]/td/table/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr[3]/td/table/tbody/tr[2]/td[2]/table/tbody/tr[2]/td/table/tbody/tr[10]/td[2]');

print Dumper(@nb);

但它只返回 $VAR1 = ''; .

有什么建议么。为了让它运行,我只是将网页中的源代码复制到 test.html 中。

谢谢!

最佳答案

某些 HTML 元素(HTML、HEAD、BODY 和 TBODY)的开始标签是可选的。看一眼

...<table><tr><td>Foo</td></tr></table>...

根据 HTML,该片段代表了四个元素:
TABLE
TBODY
TR
TD

Firefox 创建所有四个元素,因此它为 TD 元素提供以下 xpath:
.../table/tbody/tr/td

HTML::TreeBuilder 可能不会在元素的开始标签被省略时创建元素,因此它只会为该片段创建三个元素:
TABLE
TR
TD

您需要使用以下 xpath 来定位 TD 元素:
.../table/tr/td

我敢打赌,如果您删除 tbody,您会找到结果。来自您的 xpath 的测试,因为 TBODY 元素很可能在文件中找不到。

关于html - 试图在 xpath 读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7732116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com