Идентификация элементов на сайте

  • Автор темы Автор темы SlavenTyz
  • Дата начала Дата начала

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 173
Реакции
37
Баллы
48
Многие из нас сталкивались с сайтами где идентификация элементов затруднена и приходится открывать инструменты web-разработчика, но там тоже сильное различие от Дерева Элементов. При этом в "инструментt web-разработчика", то же сложновсти найти, например Мышкой приходится дергать от элемента на сайте и нужным злементом в этом инструменте.

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

Но имеются у меня реальные сложности с Идентификацией элементов, что там виснет, то с поиском нужного XPhath пути и т.д. Сайты постоянно меняются, и на многих виснет система с Идентификацией элементов. Что посоветуете
 
Opencv
А там уже по координатам.
 
Opencv
А там уже по координатам.
Нет, не так. Есть более надежный и гуманный метод с помощью ИИ.

Многие из нас сталкивались с сайтами где идентификация элементов затруднена и приходится открывать инструменты web-разработчика, но там тоже сильное различие от Дерева Элементов. При этом в "инструментt web-разработчика", то же сложновсти найти, например Мышкой приходится дергать от элемента на сайте и нужным злементом в этом инструменте.

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

Но имеются у меня реальные сложности с Идентификацией элементов, что там виснет, то с поиском нужного XPhath пути и т.д. Сайты постоянно меняются, и на многих виснет система с Идентификацией элементов. Что посоветуете

1. Открываем инструмент разработчика в Project Maker.
2. Копируем нужный элемент кода.
3. Переходим в ChatGPT скармливаем ему этот код с просьбой составить нам самый короткий и устойчивый xPath.
Вот и весь лайфхак.
 
  • Спасибо
Реакции: 6585_Лягуша
Спасибо, но бывают и с этим сложности. Интересно в ЗенноПостере будут реализованы надежные инструменты индетификации элемента на сайте, бывает подвисают системы
 
Многие из нас сталкивались с сайтами где идентификация элементов затруднена и приходится открывать инструменты web-разработчика, но там тоже сильное различие от Дерева Элементов. При этом в "инструментt web-разработчика", то же сложновсти найти, например Мышкой приходится дергать от элемента на сайте и нужным злементом в этом инструменте.

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

Но имеются у меня реальные сложности с Идентификацией элементов, что там виснет, то с поиском нужного XPhath пути и т.д. Сайты постоянно меняются, и на многих виснет система с Идентификацией элементов. Что посоветуете

Я бы вам посоветовал освоить работу с xPath. Вот есть неплохая статья Учимся искать элементы с помощью xpath.
На первый взгляд он может показаться сложным, но на самом деле он даже проще, чем Регулярные выражения.

90% элементов можно находить таким шаблоном, меняя только тег и атрибуты под нужные элементы:
C#:
Развернуть Свернуть Копировать
//div[contains(@class, 'btn')]
 
реализованы надежные инструменты индетификации элемента
Сложно придумать что то надежнее xpath. Просто надо разобраться в нем. Например когда кажется что незачто зацепится, можно выстраивать цепочки типа "Найти элемент-перейти к его родителю-взять третий элемент выше-найти в нем тег-отступить ниже на три тега". Очень гибкая штука. Но, как сказали выше, почти всегда достаточно элементарного.
ЗЫ не пугайся того что под спойлером, такое почти никогда не надо)

Сгенерируй како то очень сложный xpath для демонстрации его мощи и коротко опиши его
Код:
Развернуть Свернуть Копировать
//div[
  contains(concat(' ', normalize-space(@class), ' '), ' product ')
  and
  .//span[
    matches(normalize-space(.), '^(Premium|VIP)\s+Item$', 'i')
  ]
  and
  count(
    .//a[
      starts-with(@href, 'https')
      and not(contains(@href, 'tracking'))
    ]
  ) >= 3
  and
  not(
    ancestor::div[
      @data-disabled = 'true'
      or contains(@style, 'display:none')
    ]
  )
]
/descendant-or-self::div[
  position() = last()
]
/following-sibling::*[
  self::script or self::style
][1]

Короткое объяснение, что здесь происходит

Этот XPath:


  1. Ищет div с классом product
    (корректно, через normalize-space + concat, а не наивный contains(@class))
  2. Проверяет наличие вложенного span,
    где текст строго соответствует Premium Item или VIP Item
    (с использованием регулярных выражений matches(), XPath 2.0+)
  3. Считает количество ссылок <a> внутри блока:
    • только https
    • без tracking в URL
      → должно быть не меньше 3
  4. Исключает скрытые или отключённые элементы:
    • родитель с data-disabled="true"
    • или display:none
  5. Переходит к последнему div внутри найденного блока
  6. Берёт первый следующий script или style после него

Почему это «мощно»

  • Использует:
    • ancestor, descendant-or-self, following-sibling
    • логические комбинации
    • регулярные выражения
    • подсчёт элементов (count)
    • защиту от ложных совпадений классов
  • Такой XPath заменяет сложную логику в коде (циклы + условия)
 
  • Спасибо
Реакции: Dmitriy_Zenno и Moonwalker
Поддержу. Правильно составленный xpath - гарантия нахождения элемента. Если дальше проблема с ним взаимодействовать, то это не проблема элемента, это проблема уже Зенки или чего-то другого.
 
Последнее редактирование:
Я бы вам посоветовал освоить работу с xPath. Вот есть неплохая статья Учимся искать элементы с помощью xpath.
На первый взгляд он может показаться сложным, но на самом деле он даже проще, чем Регулярные выражения.

90% элементов можно находить таким шаблоном, меняя только тег и атрибуты под нужные элементы:
C#:
Развернуть Свернуть Копировать
//div[contains(@class, 'btn')]
Я и работаю только через XPath, но сложность в том что в ProjectMarket в дерево элементов не всегда показывает элементы, и инструмент разработчиков то же подвисает
вот например сайт, да где то быстро определяет элементы, а где то настоящая проблема https://vprognoze.ru
 
Что мешает смотреть нужные элементы просто в браузере? И там же пути проверять? За столько лет работы с ЗП отродясь в devTools в PM не лазил ))
 
  • Спасибо
Реакции: Dmitriy_Zenno
Что мешает смотреть нужные элементы просто в браузере? И там же пути проверять? За столько лет работы с ЗП отродясь в devTools в PM не лазил ))
Это это то же самое, что и инструмент разработчика и он не удобен и подвисает и во вторых хочется иметь удобные инструменты в одном месте, а вы предлагаете костыли
 
Не знаю, что там может подвисать, если честно. Подвисать может только загрузка страницы в браузере, в devtools код уже загруженной страницы. Про костыли - смешно )) Это как говорить, мол, "почему для Зенки еще и интернет нужен, почему его там встроенного нет". Но если нужны шашечки, а не ехать, то да, согласен, пусть все будет из коробки ))) И желательно, само еще...
В общем, возвращаясь к первоначальному сообщению: правильный xPath - гарантия результата. Но для этого его придется подучить (ну или хотя бы логику понять и знать, куда подсмотреть или где спросить).
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitriy_Zenno и Dr.Pipetka
DevTools это инструмент разработчика от хрома, он в любом браузере одинаковый(мб немного +-). Круче ничего нет (мб что то не знаю). В зенке реализовано через костыль, как в принципе и вся нынешняя зенка. В одной версии работает одно, в другой не другое. 139069 вот так выглядит набор ~стабильной работы. Но, что касается xpath, в инструментах все работает норм(если выбрать нужную версию, нужный монитор, нужное масштабирование винды, нужное разрешение экрана). Как и в обычном браузере.
 
DevTools это инструмент разработчика от хрома, он в любом браузере одинаковый(мб немного +-). Круче ничего нет (мб что то не знаю). В зенке реализовано через костыль, как в принципе и вся нынешняя зенка. В одной версии работает одно, в другой не другое. Посмотреть вложение 139069 вот так выглядит набор ~стабильной работы. Но, что касается xpath, в инструментах все работает норм(если выбрать нужную версию, нужный монитор, нужное масштабирование винды, нужное разрешение экрана). Как и в обычном браузере.
Это ты столько копий держишь?
 
Это ты столько копий держишь?
Ну так приходится. В каждой свои приколы. В какой то клики не работаю, а в какой то девтулс. Было такое что сайты "неадекватно" работали и приходилось понижать версию (что очень странно). В большинстве случаев конечно пользуюсь последней.
 
  • Спасибо
Реакции: one
Это связано с тем, что многие веб-сайты используют технологию Shadow DOM(Shadow Root) , которая делает невозможным извлечение элементов. Эта проблема существует уже много лет, и ZennoPoster не может реализовать эту функцию из коробки. На форумах есть несколько сообщений, в которых подробно описаны обходные пути с использованием кода JavaScript.
 

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