Если фри, то выше кинули, если через сервисы, можно также "вдохновиться" моим скриптом решалки Яндекс капчи, там ровно такая же суть, но прикручено решение через антигейт (с ручными индусами), но можно так и любой сервис с индусами прикрутить. Решение на гуру не чекал, баланса небыло на аке)
Визуальный конструктор блоков для реализации логики
-
Столкнулся с такой ситуацией: на входе есть данные для реализации логики - они связаны с элементом на странице - элемент не имеет четкой структуры и периодически меняется - пытался воплотить следующий алгоритм:
получить текст на странице - проверить его по входным данным - дать ответ по совпадению НО - получить текст не всегда получается - есть три элемента 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 Вам нужно более точнее определиться с алгоритмом работы. Не понятно какой блок вам нужен.
но 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 - спасибо!
-
@support said in Визуальный конструктор блоков для реализации логики:
Или еще. На всех 3 страницах есть всего 2 ссылки, вида /freelancers/что-то там и вторая как раз та, что вам нужна. Их легко найти через регулярку/xpath
подскажите какой либо конструктор выражения - а то гугл не знает ничего приличного кроме теории - я получил путь //*[@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 -
@support - я в недоумении - @koward уже дал готовое решение - но я не могу применить его на практике! выполняю следующие действия - Браузер(код страницы) - Xpath(получить текст) - текст для применения xpath код страницы - xpath запрос - //div[contains(@class, "b-layout__txt_fontsize_11")]/a[last()]/text() - в итоге переменная xpath_text - содержит "" ??? Что не так???
