Какое выражение следует использовать для поиска всех узлов td
после того, как текст Foo
или Bar
и остановка перед следующим <td colspan="4">
с неизвестным текстом. Благодарю.Найти узлы до состояния с использованием XPath
<td colspan="4">Foo || Bar</td>
<td rowspan="4">TEXT1</td>
<td valign="top">TEXT2</td>
<td valign="top">TEXT3</td>
...
<td colspan="4">VARIABLE</td>
...
UPDATE:
use strict;
use warnings;
use autodie;
use utf8;
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
my $url = 'www.perl.org';
my $mech = WWW::Mechanize->new;
$mech->agent_alias('Windows Mozilla');
$mech->get($url);
my $tree= HTML::TreeBuilder::XPath->new;
$tree->parse($mech->content);
for my $nodes ($tree->findnodes('//td[
preceding-sibling::td
[contains(., "Foo") or contains(., "Bar")]
and following-sibling::td[@colspan="4"]
]')) {
print $nodes->as_text;
}
Спасибо. Если это выражение работает в HTML :: TreeBuilder :: XPath, потому что по какой-то причине я не получаю результатов. – thebourneid
@thebourneid, я понятия не имею, работает ли он с HTML: TreeBuilder :: XPath'. Я предоставляю только действующий стандартный XPath. –
Хорошо. Я сделаю еще несколько тестов. Вы очень помогли. Благодарю. – thebourneid