Визуальный конструктор блоков для реализации логики
-
Столкнулся с такой ситуацией: на входе есть данные для реализации логики - они связаны с элементом на странице - элемент не имеет четкой структуры и периодически меняется - пытался воплотить следующий алгоритм:
получить текст на странице - проверить его по входным данным - дать ответ по совпадению НО - получить текст не всегда получается - есть три элемента css - и они различные - отследить связи по которым они изменяются не удается - решил переиначить - поставил блок игнорировать ошибки - и в нем получить текст - пооочередно на все три элемента - в разные переменные - затем присвоить переменную и указал три перменных - но выдает ошибку - так как одно из действий получения текста выполняется с ошибкой - соответственно перемная не содержит ничего - и здесь облом. Построить цепочку действий в таком случае не получается -
вот если бы можно было как то наглядно прокладывать пути меджу блоками действий для связки - было бы супер - а так получается что несколько днефй работы пришли к своему логическому заключению из - за специфики BAS...
@support - если бы Вы сделали на каждом действии да и нет - для прокладки путей - это бы многим облегчило жизнь и дало бы возможность делать более сложные скрипты...
Ведь это же возможно - как блок схемы, которые мы рисовали на уроках программирования....
-
сделай проверку на существование, и если елемент существует уже получай текст и ложи его в переменную.
Проверить существование css1 IF IS_EXIST Получить текст в переменную [[TEXT]] Проверить существование css2 IF IS_EXIST Получить текст в переменную [[TEXT]] Проверить существование css3 IF IS_EXIST Получить текст в переменную [[TEXT]]
Как то так. В итоге не будет лишних переменных, и проблем с ними
-
@DrPrime спасибо - всегда оперативно выручаешь - я вначале использовал этот метод - пока не уперся головой в стену - предложенный вариант это идеальное решение, но в моем случае 2 из 3 css блоков всегда существуют, только принадлежат к разным блокам (на одной странице нужный текст находится в css1 на другой этот же текст в css2, а порой и в css3 но 2 из 3 блоков всегда присутствуют только правильный из них всего один...) - что посоветуете в этом случае???
-
@Turutur ну тут уже по странице нужно смотреть
сразу и не скажешь. Есть какие то особености текста?
-
@Turutur Вам нужно более точнее определиться с алгоритмом работы. Не понятно какой блок вам нужен.
но 2 из 3 блоков всегда присутствуют только правильный из них всего один
Если существуют 2 блока и один из них всегда правильный, как выбрать какой именно?
-
@support @DrPrime ребята - все так и есть как написал - попробую по другому описать проблему:
тз - нужно спарсить со страницы анкор ссылки, который является подкатегорией и исходя из анкора сделать следующее действие - это все просто, НОподкатегории лежат в разных категориях и блоки обрамления имеют разный вид, например на одной странице :nth-child(12) > ul > :nth-child(3) > a
и этот же анкор в другой категории :nth-child(4) > ul > :nth-child(1) > a
я конечно пробовал найти общие элементы для всех страниц - но общих блоков не нашел - есть такие например
project_234234234_хххххххх - где номер проекта разный в каждой странице!!!так жже пробовал через получить код элемента и через match - все меняется - я первый раз с такими сложностями сталкиваюсь - для большей наглядности:
страница https://www.fl.ru/projects/3069383/sdelat-ochen-prostoy-logotip.html
страница https://www.fl.ru/projects/3069216/natyanut-vrstku-na-bitriks.html
и страница https://www.fl.ru/projects/3068197/dorabotka-internet-magazina-na-wordpress.html
я пробовал получать эти элементы с 9ти подкатегорий - сегодня они срабатывают - завтра нет - так как элементы на некоторых страницах отличаются - закономерностей не нашел.
Поэтому я и делал "игнорировать ошибки" > "полусить текст 1" > "получить текст 2" > "получить текст 3"
и
и блоком игнор ошибок
присвоить переменную [[text1]][[text2]][[text3]] - на выходе получаю ошибку - так как текст 2 или 3 получить не удается, а текст 1 либо принадлежит анкору либо другому тексту на странице((((
-
@Turutur
Получить подкатегорию(то что выделено красным на скринах) у меня получилось используя второй вариант предложенный БАС::nth-child(2) > :nth-child(1) > :nth-child(4) > :nth-child(2)
Проект parseflsub.xml
И даже если структура страницы была бы всегда разная, всегда можно получить код страницы и регуляркой искать вот этот кусок
<a href="/freelancers/razrabotka-sajtov/">Разработка сайтов</a> / <a href="/freelancers/web-programmist-razrabotka-sajtov/">Веб-программирование</a>
Или еще. На всех 3 страницах есть всего 2 ссылки, вида
/freelancers/что-то там
и вторая как раз та, что вам нужна. Их легко найти через регулярку/xpath
-
@support said in Визуальный конструктор блоков для реализации логики:
Получить подкатегорию(то что выделено красным на скринах) у меня получилось используя второй вариант предложенный БАС:
:nth-child(2) > :nth-child(1) > :nth-child(4) > :nth-child(2)@support - получить у меня то же получилось - но потом они поменялись(, буду пробовать xpath - спасибо!
-
вот шаблон xpath который вернет анкор подкатегории //div[contains(@class, "b-layout__txt_fontsize_11")]/a[last()]/text()
-
@support said in Визуальный конструктор блоков для реализации логики:
Или еще. На всех 3 страницах есть всего 2 ссылки, вида /freelancers/что-то там и вторая как раз та, что вам нужна. Их легко найти через регулярку/xpath
подскажите какой либо конструктор выражения - а то гугл не знает ничего приличного кроме теории - я получил путь //*[@id="project_info_3069383"]/div[1]/div[4]/a[2] - но он мне тоже не подходит(
-
@Turutur лучший конструктор - внутри браузера http://prnt.sc/dkg4m0
-
@support - все печально( - //*[@id="project_info_3069383"]/div[1]/div[4]/a[2] - я так и получал (((
-
@koward said in Визуальный конструктор блоков для реализации логики:
//div[contains(@class, "b-layout__txt_fontsize_11")]/a[last()]/text()
спасибо за готовое решение - пока работает - подскажите как составляли - владеете материалом или софт есть какой?
-
@Turutur составлять xpath выражения можно научится за вечер ничего сложного в нем нет, вот вам 2 ссылок для ознакомления http://zvon.org/xxl/XPathTutorial/Output_rus/examples.html
http://onedev.net/post/458
-
@koward спасибо - то что надо!
-
@support - я в недоумении - @koward уже дал готовое решение - но я не могу применить его на практике! выполняю следующие действия - Браузер(код страницы) - Xpath(получить текст) - текст для применения xpath код страницы - xpath запрос - //div[contains(@class, "b-layout__txt_fontsize_11")]/a[last()]/text() - в итоге переменная xpath_text - содержит "" ??? Что не так???
-
@Turutur Я тоже в шоке, у меня работает
-
@support - помогите разобраться, что не так делаю?
здесь работает
а в проекте нет - какие действия или настройки не так делаю?
0_1482024502441_xpath_test.xml
-
@Turutur
Либо используйте//div[contains(@class, "b-layout__txt_fontsize_11")]/a[last()]/text()
и Xpath получить xml
либо
//div[contains(@class, "b-layout__txt_fontsize_11")]/a[last()]
и Xpath получить текст
-
@support said in Визуальный конструктор блоков для реализации логики:
//div[contains(@class, "b-layout__txt_fontsize_11")]/a[last()]/text()
спасибо!