0

Добрый день,Выбор только из определенной таблицы на странице WWW :: Механизмы и Селекторы CSS?

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

<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 :: Объект не имеет выбора функций в следующей строке:

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"]'); 
+0

Благодаря Ганга, сначала не писал результаты, но потом я изменил его на '[@ класс =" dTable] [2] 'и это сработало. Самое смешное, что в HTML это третий 'dTable' появится – surfer190

+0

@StephenH В информатике вы начинаете считать с 0 не 1. Итак, в 1-й таблице есть позиция 0, 2-я таблица имеет позицию 1 и т. д. – e1che

+0

Вы заставляете ее звучать так, будто я полный сумасшедший. сказать 4-й «dTable», чтобы он появился. Так что это одно ... – surfer190