Проверка конструкторе действий наличия текста перед и после искомого элемента

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

prodox

Client
Регистрация
28.08.2018
Сообщения
282
Реакции
57
Баллы
28
Очень часто нужно сделать действие с элементом, каких много одинаковых на странице, и ничем не отличающиеся друг от друга, но только в определенном месте, после конкретного текста или элемента.
Например на странице много одинаковых блоков с разными заголовками и, например нужно кликнуть на ссылку которая находится только после конкретного заголовка.
xPath тут не покатит, например, если это блог или постоянно меняется окружающая верстка и текст.

Или например, нужно найти все лайки в блоках где есть определенный текст в каком то теге.
То есть ищется сначала конкретный текст, а потом ближайший элемент, до него или после него.
например, в конструктор действия добавить поле с переключателем обязятельный текст "до" и "после"

На рисунке видно что много блоков с одинаковыми тегами и в каждом есть лайки.
Допустим мне надо кликнуть те лайки перед которыми есть конкретное название канала
Или мне нужно спарсить текст из блока после которого есть конкретное название канала

То есть некоторый аналог поиска look-ahead look-behind в regexp

Может я что то не так делаю но в конструкторе не работают такие регулярные выражения


58636
 
потерто
 
в конструкторе действия поиск идет по одному элементу. поэтому там невозможно сделать такие вещи.
те кто работают с регулярками, парсят из DOM.

а вот такие вещи как
Допустим мне надо кликнуть те лайки перед которыми есть конкретное название канала
Или мне нужно спарсить текст из блока после которого есть конкретное название канала
легко делаются с помощью xpath. первое с помощью поиска предков, второе с помощью поиска родителей.

и да, соглашусь с постом выше. шо опять ? :) опять вместо задавания вопросов в теме вопросы новичков, перепутал темы и залез в предложения ? лучше бы то время которое потратил на создание вот этой простыни потратил на просмотр видео как составлять пути xpath.
 
легко делаются с помощью xpath. первое с помощью поиска предков, второе с помощью поиска родителей.
это то понятно, как при этом два условия соблюсти, я вот тут играюсь чето не выходит
это див выше лежит
//div/a[contains(@href,'gazeta.ru')]

это кнопка лайка
/div[contains(@class,'mitten-view')]

спускался поднимался, чето не выходит.

по идеи так должно быть
//div[contains(@class,'mitten-view')][//a[contains(@href,'gazeta.ru')]]

но че то не то выделяет.
 
Последнее редактирование:
Часто юзаю свойства NextSibling, PreviousSibling, ParentElement, FirstChild, GetChildren().GetByNumber() в цепочке - решают все задачи поиска элементов и без xPath, хотя почти тоже самое.
Мне так удобнее, нагляднее и проще менять, если сменилась верстка.
 
Часто юзаю свойства NextSibling, PreviousSibling, ParentElement, FirstChild, GetChildren().GetByNumber() в цепочке - решают все задачи поиска элементов и без xPath, хотя почти тоже самое.
Мне так удобнее, нагляднее и проще менять, если сменилась верстка.
не совсем понял, это где такие свойства используешь ? Имеешь ввиду методы шарпа ?
 
Последнее редактирование:
вот, легко и просто. нашли ссылку , перешли к родителю и от родителя нашли кнопку лайка. это самый простой случай.

58651

и как выше заметили, переход по элементам можно и без xpath делать.

складывается такое ощущение, что цель автора поста, не работать и решать поставленные задачи, а тупо иногда поныть на форуме, вот типа купил программу, ничего не понимаю в ней , дайка достану разрабов :-)
ну реально, все его посты в таком ключе. если пишет сообщение то это сразу претензия. а по факту , просто незнание/нехотение разбираться с функционалом программы.
а просто написать в разделе вопросы , корона упадет что ли ? все пишут, спрашивают, а тут прям синдром вип клиента, которому все должны.
 
Последнее редактирование:
  • Спасибо
Реакции: luk911
но че то не то выделяет.

в Content Downloader отлично придумано в парсере
Пишешь в одно поле что должно быть до искомого
и в другом поле то что после искомого текста
И просто используешь"<skip>" - что означает пропустить любое число символов,

Пишем до: Любой искомый текст до нужного элемента <skip><div<skip><svg<skip><g>
После:</g>
Все чистым текстом и
без всяких регулярок, и никаких заморочек с тегами, классами, регулярками, атрибутами и xPath-ами

Это как раз тот случай, если обещали софт без знания программирования - то выполнили.


А в Зеннопостер - сначала покупаешь, потом понимаешь что нифига без программирования не обойтись и всякие там классы зеннопостера
Обидно что элементарные вещи, прокрутить до нужного элемента или навести мышку, нужно искать сниппет

Потом лежит несколько лет.
А потом когда человек уже научится кодить, скажет а нафик мне он, я в сишарпе на Net Framework напишу.


Делали разные люди наверное -
один делал конструктор действий
второй делал свойства действий
Третий делал запись действий.
В каждом есть своя фишка а вобщем одно и та же цель

По сути три способа разных, но то что в одном способе есть в другом нет
И прыгаешь как кузнечик из свойств действий в конструктор действий.
Потому что в конструкторе можно совпадения посмотреть и сколько их
А свойствах действий можно больше условий поиска задать, но найти на странице нельзя.
А вот посчитать совпадения можно только в сишарпе
а спарсить в список можно только в парсере, какими то непонятными 4 способами и там явно других фишек нет что в конструкторе и в свойствах.

Вообще можно было одним инструментом обойтись, просто до ума довести конструктор, сделать интерфейс как свойствах действий, добавить в RISE прокрутить и навести и число совпадений в лист
И не нужен больше ни парсер ни отдельные окна для конструктора и свойств действий.
Три велосипеда для одной жопы, только на одном руля нет у другого сиденья у третьего педалей нет
Извиняюсь за офтоп, наболело.
 
Мало было си шарпа с xPаth Zenno классами, тут Node подвезли.
Куда node подвезли ?

Вообще без xpath жить тяжело :) так что лучше прочитать пару статей.
Забавно вы про контент даунлодер вспомнили и я вспомнил, купил его, пылился он у меня, так ни разу и не пользовался, зато теперь проще на зене любой парсер накидать.
 
это то понятно, как при этом два условия соблюсти, я вот тут играюсь чето не выходит

спускался поднимался, чето не выходит.

по идеи так должно быть
//div[contains(@class,'mitten-view')][//a[contains(@href,'gazeta.ru')]]

но че то не то выделяет.


58655
Так получилось отличить лайк от дизлайка. классы у них одинаковые Только через innerHtml

И дополнительный вопрос почему в конструкторе нельзя также поиск сделать несколько параметров поиска?
 
тебе уже раз 100500 написали, изучи xpath, сядь уже своей жопой на один велосипед и все твои проблемы уйдут. Там изучать то с гулькин нос, люди за вечер основы познают. Ты больше времени потратил на написание всех этих бесполезных простыней с нытьем.
 
Вам @Phoenix78 готовый xpath сделал:
CSS:
Развернуть Свернуть Копировать
//a[contains(@href,'gazeta.ru')]/parent::div//div[@aria-label="like"]

Пару таких примеров внимательно прочитайте и поймете что к чему и пару статей прочитайте.
 
Куда node подвезли ?

Вообще без xpath жить тяжело :-) так что лучше прочитать пару статей.
Забавно вы про контент даунлодер вспомнили и я вспомнил, купил его, пылился он у меня, так ни разу и не пользовался, зато теперь проще на зене любой парсер накидать.
В зене ты каталог не спарсишь с 10000 страниц, надо еще все урлы товаров собрать,
Как ты зене спарсишь свойства товаров которых разное количества в каждом товаре
Вложенную таблицу с разным числом элементов, несколько картинок. в СD парсер каталога за полчаса можно сделать
 
И дополнительный вопрос почему в конструкторе нельзя также поиск сделать несколько параметров поиска?
потому что это инструмент для поиска начального уровня. и кубики на основе него тоже для пользователей начального уровня.
если нужен продвинутый уровень то c# велком. не нравиться программирование то xpath велком.
только не надо вот опять ныть про то что там в рекламе у зеннолаба написано. на заборе то же много что написано. на дворе 21 век, главное клиента заманить. странно что занимаешься строительством бота под яндекс дзен и не понимать таких элементарных вещей :)
 
В зене ты каталог не спарсишь с 10000 страниц, надо еще все урлы товаров собрать,
Как ты зене спарсишь свойства товаров которых разное количества в каждом товаре
Вложенную таблицу с разным числом элементов, несколько картинок. в СD парсер каталога за полчаса можно сделать
ну так и иди и работай в другом софте. тебя держат тут чтоль насильно ?
 
  • Спасибо
Реакции: luk911
Мне кажется автору надо запрет дать на постинг в разделе предложений. Была уже тема, и было предложено несколько решений. В том числе и от меня было решение.

Судя по другим темам, автору особо то и не нужна помощь.
 
Зато вон Phoenix78 мастер класс с парентами показал :)
 
Мне кажется автору надо запрет дать на постинг в разделе предложений. Была уже тема, и было предложено несколько решений. В том числе и от меня было решение.

Судя по другим темам, автору особо то и не нужна помощь.
Спасибо за "доброту" Костыли и я сам давно нарыл. Тут вроде вопрос об улучшении софта а не то что это невозможно сделать вообще. Есть Мастера на велике и без руля ездить и без сиденья, и даже с закрытыми глазами.
У меня вопрос был не как костылями сделать, а как бы не плохо было если бы интерфейс позволял выполнять задачи, а не искать решения, для обычной задачи поиска элемента
Просто вопрос в том что обещан законченный софт. и минимальные вещи должны делаться без мегазнаний, как обещано
 
Последнее редактирование:
  • Спасибо
Реакции: Zoloo
Это что за программа? В нижней строке xPath у тебя показывает. в файрфоксе приблуда?
DefTools, встроен в зенку уже. вот небольшой видосик https://zennolab.com/discussion/threads/registrator-akkauntov-mail-ru.65251/post-538906
ctrl + f вызывает в нем строку поиск куда и вбивается текст или xpath. удобная штука , однако :)
 
Вам @Phoenix78 готовый xpath сделал:
CSS:
Развернуть Свернуть Копировать
//a[contains(@href,'gazeta.ru')]/parent::div//div[@aria-label="like"]

Пару таких примеров внимательно прочитайте и поймете что к чему и пару статей прочитайте.

Кстати баг - думал строка не работает. Но в конструкторе не работает клик на xPath
кликает вообще в другом месте
если добавить в проект то кликает правильно

Перерыл полинтернета и не нашел нормальный мануал по xpath

В этой конструкции не понятно div//div именно тут что значит двойная черта?
почему перед parent слеш не понятно и потом двойной слеш тоже не понятно.
слеш это разделитель пути или еще имеет какое то значение?
Почему потом идут две черты?
 

тут 3 шага.
//a[contains(@href,'gazeta.ru')] находит все элементы a содержащие gazeta.ru
/parent::div для найденных элементов переходит к родителю , если тип родителя div
//div[@aria-label="like"] от всех найденных ищет все элементы где aria-label="like"
 
  • Спасибо
Реакции: prodox и luk911
Знание и применение xPath это круто и профессионально
Знание C# это круто и профессионально
Есть еще много гениальных программистов, которые напишут все без зеннопостера, на одном Net Framework
Все это заслуживает уважения и примером для подражания,
Но для софта, обещанного как для среднего пользователя без знания программирования это не придает крутости. тТакж значительно уменьшает круг люей которые бы это купили

Я больше чем уверен, что если была возможнсть поиска элемента по схеме:
Текст до искомого элемента + пропуск любого числа символов - поиск по атрибуту или по тексту. + пропуск любого числа символов и текст после элемента

То даже профессионалы 80 level использовали бы этот вариант

Поймите же вы наконец главное быстро выполнить требуемую задачу, а не ради самооценки написать крутой код

Все это фигня xPath, regexp, сниппеты просто <h1 class="zagol">*</h2>*<a*class="ghop">искомое поле</a>
Найти можно все что хочешь без личшнич сотен часов изучения программирования.

Чтобы смотреть телевизор я не хочу изучать электронику и устройство телевизора

Зачем компаться в в дереве писать xPath regexp и прочие крутости сниппеты, методы FindByxPath и прочую ненужную для быстрой задачи хрень.

Вы чуваки крутые, знающие профессионалы, кто-то может на ассемблере предпочитает или еще с 20 фреймоворками. Честь вам и уважуха на софт должен быть для людей как пишется в рекламе, без знания программирования.
 
  • Спасибо
Реакции: Zoloo
@prodox

Ну если для вас две регулярки
C#:
Развернуть Свернуть Копировать
<g\ transform="scale\(-1,\ -1\)\ translate\(-18,\ -26\)">
C#:
Развернуть Свернуть Копировать
\d+
И Java
Java:
Развернуть Свернуть Копировать
550/100*20

Это "программирование", то мне сказать нечего))

Причем первая делается в конструкторе за 1 минуту.
Вторая взята с памятки по REGEX.

Ну а то что в зенке нету калькулятора это конечно недочет 8-)
 

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