Выбор только из определенной таблицы на странице WWW::Mechanize и CSS Selector?

Добрый день,

Я собираю несколько страниц, на которых отображаются данные, которые мне нужны в таблицах. На странице есть несколько таблиц со следующими:

<table class="dTable" cellspacing="1" cellpadding="1" border="0">

Элементы, которые я хочу очистить, находятся в ячейках таблицы:

<td class="dCell" align="right">

К сожалению, на странице много ячеек с одинаковым классом. Кроме того, некоторые страницы содержат дополнительные dCells для дополнительной информации. Таким образом, указав конкретные ячейки в сценарии формы:

my @thing = $mech->selector('td.dCell');

my $val = $thing[14]->text();

Дадут разные результаты на разных страницах, т.е. Я не получу то, что хочу все время скрести.

Так что, как частичное решение, я думаю, что было бы лучше выбрать из конкретной таблицы.

my @table = $mech->selector('table.dTable');

my @required = $table[3]->selector('td.dCell');

#the info is in the third dTable on the page

#the third table does not contain changing data, ie. I can use required[1] and it will be the same all of the time.

Я попробовал это, и это не работает, ошибка получена:

MozRepl:: RemoteObject:: Object не имеет селектора функций в следующей строке:

my @required = $table[3]->selector('td.dCell');

Так что на данный момент я застрял. Я ценю всю помощь.

1 ответ

Решение

Вам нужно использовать node вариант selector:

my @required = $mech->selector( 'td.dCell', { node => ... } );

Но почему вы не используете XPath?

my @required = $mech->xpath('//table[@class="dTable"][3]//td[@class="dCell"]');
Другие вопросы по тегам