Вопрос по XPath

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Как узнать сколько fullTag =table идет после p[2].На сайте в тэге р идет название таблицы, а table это сами таблицы которые и нужно спарсить
106309
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Так же интересует Как определить сколько всего p элементов
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
кубик парсинга, парсишь по xpath в список, потом получаешь количество строк в списке.

если знаешь C# , то гугли FindElementsByXPath , и его свойство .Count
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
кубик парсинга, парсишь по xpath в список, потом получаешь количество строк в списке.

если знаешь C# , то гугли FindElementsByXPath , и его свойство .Count
Не понял можете как нибудь по другому ответить. Тем более у меня тэг p вообще пустой106310
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
сначала надо составить правильный путь xpath, что бы в DevTools показывал то что надо и в том количестве сколько надо. а уж получить данные с валидного пути это дело техники.
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
сначала надо составить правильный путь xpath, что бы в DevTools показывал то что надо и в том количестве сколько надо. а уж получить данные с валидного пути это дело техники.
1) Путь ХPath правильный string XPath="//p";
2) Меня интересует как определить кол-во тэгов table например между p[1] и p[2] и как именно с ними по работать т.е спарсить данные
106311
 
  • Спасибо
Реакции: Sho

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
стоит все таки подтянуть знания по xpath :bk:
твой путь даст тебе возможность посчитать сколько p всего найдено.
для таблиц надо составить другой путь... погугли following-sibling::*
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
стоит все таки подтянуть знания по xpath :bk:
твой путь даст тебе возможность посчитать сколько p всего найдено.
для таблиц надо составить другой путь... погугли following-sibling::*
Спасибо за ответ я изучал XPath и сейчас разбираюсь , но following-sibling соберет все table, но мне нужно только 2 или 4 шт, которые между тыгами p[1] и p[2] потому что на одном и том же уровне находятся тэги p и table
 
  • Спасибо
Реакции: Sho

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
так спарси в список. и посчитай...
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Спасибо за ответ я изучал XPath и сейчас разбираюсь , но following-sibling соберет все table, но мне нужно только 2 или 4 шт, которые между тыгами p[1] и p[2] потому что на одном и том же уровне находятся тэги p и table
если цель составить xpath который выделяет именно эти 2 таблички, то это конечно надо под....ся, но думаю это возможно....
однако если цель по быстрому все сделать, то проще все спарсить в список и уже работая со списком посчитать по своей логике.
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
у таблиц могут быть свои атрибуты, к которым можно привязаться. или через счетчик. Мoжно в конструкторе действий подсмотреть варианты xpath
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Как узнать сколько fullTag =table идет после p[2].На сайте в тэге р идет название таблицы, а table это сами таблицы которые и нужно спарсить
Посмотреть вложение 106309
Привет.

Если не предполагается, что вы в дальнейшем собираетесь работать с данными из этого элемента, то можно использовать функцию count из синтаксиса XPath.
Функция count возвращает количество узлов в наборе узлов аргумента.
Так же данный вариант почти не увеличивает трату ресурсов компьютера, так как использует уже подготовленную среду инстанса.
Особенно полезно, когда нужно сделать пересчет раз в секунду на протяжении долгого времени.

Примеры:
count(//element/Element1[namespace-uri()='mynamespace'])
count(/student/stud)
/proceedings/contents/article[count(author)=1]/title
count(/proceedings/contents/article[count(author)>3])

Выполнять на текущей странице. Подробнее в прикрепленном шаблоне.
Использование функции XPath Сount на JS:
function xpathCount(xpath) {
    var iterator = document.evaluate('count(' + xpath + ')', document, null, XPathResult.NUMBER_TYPE, null);
    return iterator.numberValue;
}

return xpathCount("//img[contains(@src,'//avatars.mds.yandex.net')]");
Важно заметить, что в методах нет поддержки у Selenium и HtmlAgilityPack.
По крайней мере, я не нашел.

↓ Шаблон с примером приложил ↓
 

Вложения

  • Спасибо
Реакции: Sho

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