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

prodox

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

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

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

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

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


58636
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
потерто
 

Phoenix78

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

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

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

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
легко делаются с помощью xpath. первое с помощью поиска предков, второе с помощью поиска родителей.
это то понятно, как при этом два условия соблюсти, я вот тут играюсь чето не выходит
это див выше лежит
//div/a[contains(@href,'gazeta.ru')]

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

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

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

но че то не то выделяет.
 
Последнее редактирование:

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Часто юзаю свойства NextSibling, PreviousSibling, ParentElement, FirstChild, GetChildren().GetByNumber() в цепочке - решают все задачи поиска элементов и без xPath, хотя почти тоже самое.
Мне так удобнее, нагляднее и проще менять, если сменилась верстка.
 

luk911

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

Phoenix78

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

58651

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

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

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
но че то не то выделяет.
в Content Downloader отлично придумано в парсере
Пишешь в одно поле что должно быть до искомого
и в другом поле то что после искомого текста
И просто используешь"<skip>" - что означает пропустить любое число символов,

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

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


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

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


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

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

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

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Мало было си шарпа с xPаth Zenno классами, тут Node подвезли.
Куда node подвезли ?

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

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
это то понятно, как при этом два условия соблюсти, я вот тут играюсь чето не выходит

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

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

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

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

И дополнительный вопрос почему в конструкторе нельзя также поиск сделать несколько параметров поиска?
 

Phoenix78

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

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Вам @Phoenix78 готовый xpath сделал:
CSS:
//a[contains(@href,'gazeta.ru')]/parent::div//div[@aria-label="like"]
Пару таких примеров внимательно прочитайте и поймете что к чему и пару статей прочитайте.
 

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Куда node подвезли ?

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

Phoenix78

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

Phoenix78

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

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
  • Спасибо
Реакции: luk911

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Мне кажется автору надо запрет дать на постинг в разделе предложений. Была уже тема, и было предложено несколько решений. В том числе и от меня было решение.

Судя по другим темам, автору особо то и не нужна помощь.
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Зато вон Phoenix78 мастер класс с парентами показал :-)
 

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Мне кажется автору надо запрет дать на постинг в разделе предложений. Была уже тема, и было предложено несколько решений. В том числе и от меня было решение.

Судя по другим темам, автору особо то и не нужна помощь.
Спасибо за "доброту" Костыли и я сам давно нарыл. Тут вроде вопрос об улучшении софта а не то что это невозможно сделать вообще. Есть Мастера на велике и без руля ездить и без сиденья, и даже с закрытыми глазами.
У меня вопрос был не как костылями сделать, а как бы не плохо было если бы интерфейс позволял выполнять задачи, а не искать решения, для обычной задачи поиска элемента
Просто вопрос в том что обещан законченный софт. и минимальные вещи должны делаться без мегазнаний, как обещано
 
Последнее редактирование:
  • Спасибо
Реакции: Zoloo

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Это что за программа? В нижней строке xPath у тебя показывает. в файрфоксе приблуда?
DefTools, встроен в зенку уже. вот небольшой видосик https://zennolab.com/discussion/threads/registrator-akkauntov-mail-ru.65251/post-538906
ctrl + f вызывает в нем строку поиск куда и вбивается текст или xpath. удобная штука , однако :-)
 

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Вам @Phoenix78 готовый xpath сделал:
CSS:
//a[contains(@href,'gazeta.ru')]/parent::div//div[@aria-label="like"]
Пару таких примеров внимательно прочитайте и поймете что к чему и пару статей прочитайте.
Кстати баг - думал строка не работает. Но в конструкторе не работает клик на xPath
кликает вообще в другом месте
если добавить в проект то кликает правильно

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

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

Phoenix78

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

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

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Знание и применение xPath это круто и профессионально
Знание C# это круто и профессионально
Есть еще много гениальных программистов, которые напишут все без зеннопостера, на одном Net Framework
Все это заслуживает уважения и примером для подражания,
Но для софта, обещанного как для среднего пользователя без знания программирования это не придает крутости. тТакж значительно уменьшает круг люей которые бы это купили

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

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

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

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

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

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

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

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
@prodox

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

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

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

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