2010-07-09 75 views
0

我试图提取使用硒和perl输入字段中的所有名称值。值的一部分,足以确定它是已知的,其余的是未知的:与硒和perl XPath循环

这个XPath的工作原理中找到所有相关的匹配:

//tr/td//input[contains(@name,'partofname')] 

所以,在Perl:

my $xpath = qq(//tr/td//input[contains(\@name,'partofname')]); 
my $count = $sel->get_xpath_count($xpath); 

很好,$ count给出了合适的匹配次数。

但是,如何提取每个单独匹配的@name属性的值?

我明白一个道理是构建一个循环:

foreach my $row (1 .. $count) { 
#extract here 
}; 

不过,我似乎无法构建一个XPath表达式将努力找到每个$行的表达相匹配。所以我认为这是正确的xpath表达式来获得我需要帮助的每个单独的匹配。

任何指针赞赏

回答

1

尝试//tr/td/descendant::input[contains(@name,'partofname')][1]

与柜台更换1。如果这不能为你的问题添加一些HTML,那么我可以建议一个更好的XPath? 。

+0

您好 - 感谢您的建议,但由此产生: 无效的xpath [2]:// TR/TD /后代::输入[含有( 每个节点 的HTML只是一个表,其中行和一些表数据条目 - 其中一个包含输入属性,包括名称,ID等 – CColin 2010-07-11 10:15:52

+0

你的HTML的一个片段仍然是有用的 – 2010-07-11 10:59:52

+0

什么最小尺寸的代码段会有用吗?每一行 - 会有一行有几个​​标签,其中一个包含追求的属性,做什么? – CColin 2010-07-12 05:35:23