Как посчитать колличество тегов или элементов?

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Подскажите пожалуйста, как посчитать количество тегов "li", в первом ol"?
1588174536799.png

Моих знаний пока не хватает. Через парсер я смог вытащить только три строки из div, со всеми данными из li. (
 
  • Спасибо
Реакции: SlipDez

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
C#:
return tab.FindElementsByXPath(".//*[@id='ShareList']/ol[1]/li").Count().ToString();
 
  • Спасибо
Реакции: djaga

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Через экшен "Парсинг данных" ищем по XPath .//div[@id='ShareList']/ol[1]/li (возможно это выражение надо будет слегка подправить). Результат сохраняем в список, потом экшен "Операции над списком" => "Получить количество строк".
 
  • Спасибо
Реакции: djaga

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
C#:
return tab.FindElementsByXPath(".//*[@id='ShareList']/ol[1]/li").Count().ToString();
Указал на переменную, но:
Выдает такую ошибку:
21:35:33 Компиляция кода Ошибка в действии "CS0103" "Имя "tab" отсутствует в текущем контексте". [Строка: 0; Cтолбец: 8]

Через экшен "Парсинг данных" ищем по XPath .//div[@id='ShareList']/ol[1]/li (возможно это выражение надо будет слегка подправить). Результат сохраняем в список, потом экшен "Операции над списком" => "Получить количество строк".
Сделал через "Парсинг данных" .//div[@id='ShareList']/ol[1]/li
Результат выдал = 54, но так же написано "не удалось спарсить данные!"
1588185494554.png
При добавлении в проект и воспроизведении пишет такую же ошибку.
21:41:44 Компиляция кода Ошибка в действии "CS0103" "Имя "tab" отсутствует в текущем контексте". [Строка: 0; Cтолбец: 8]

Возможно потому, что я обрезал дерево. Сначала, разве нужно полностью указывать путь?
1588185999492.png
 
  • Спасибо
Реакции: SlipDez

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
При добавлении в проект и воспроизведении пишет такую же ошибку.
21:41:44 Компиляция кода Ошибка в действии "CS0103" "Имя "tab" отсутствует в текущем контексте". [Строка: 0; Cтолбец: 8]
Это из-за того что в экшене "Свой с# код" код написан с ошибкой. ПМ не выполнит ни один другой экшен пока ошибка не будет исправлена.

Результат выдал = 54, но так же написано "не удалось спарсить данные!"
Я данным экшеном почти не пользовался, поэтому могу только предполагать: попробовать изменить атрибут (на скрине стоит innerText, поставить innerHtml или что-то ещё); возможно стоит снять чекбокс "Фильтровать".
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
попробовать изменить атрибут (на скрине стоит innerText, поставить innerHtml или что-то ещё); возможно стоит снять чекбокс "Фильтровать".
Пытался.) Спасибо огромное за подсказку. По крайней мере я понял немного логику регулярки.
C#:
return instance.ActiveTab.FindElementsByXPath(".//*[@id='ShareList']/ol[1]/li").Count().ToString();
Спасибо, что помогли. Все работает!))
 
  • Спасибо
Реакции: SlipDez

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Подскажите, пожалуйста. Я методом проб и ошибок смог получить вот такую регулярку: .//*[@id="content"]/div/div/form/fieldset/dl/dd/a, парсер считает, но при отладке, выдаёт ошибку.
Как её правильно записать C#?

1588222453233.png 1588222821698.png
 
Последнее редактирование:
  • Спасибо
Реакции: SlipDez

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
  • Спасибо
Реакции: djaga

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Мне это очень помогло, но не хватает связи, что к чему от чего и т.д.))
Начал тестить через инспектор и все получилось!)

Решение: return instance.ActiveTab.FindElementsByXPath("//fieldset/dl[1]/dd/a").Count().ToString();
Количество "a" в переменную =)

@nicanil, спасибо за наводку.)
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)