Кликнуть по ссылкам во вложенном меню. Нужна идея. )

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

nail2501

Client
Регистрация
19.04.2015
Сообщения
515
Реакции
50
Баллы
28
В качестве примера возьмем https://big-book-edu.ru/
Тут ссылки городов находятся в скрытых DIV. Не меню конечно, но около того.
Пока не нажмешь "ВСЕ ГОРОДА", то ссылки не увидишь. Но как вы догадываетесь шаблон об этом не знает.
Шаблон сейчас тупо парсит все ссылки без разбора (либо все на странице, либо в видимой области). Переход в лоб, без имитации мыши не устраивает.
Хочется по человечески - сначала сделать ссылки видимыми, развернув DIV, а затем кликнуть.
Нужна идея, хочу универсальный вариант реализовать.

1.) Подскажите как это реализовать на примере этого сайта? Исходник - спаршенная ссылка, любой город, например АБАКАН. Ее координаты 0, значит вероятно она свернута. Как определить координаты элемента, по которому надо кликнуть, чтобы DIV с моей ссылкой развернулся и она стала доступна для наведения и клика?
2.) Какую инфу почитать?

СПАСИБО.
 
Последнее редактирование:
готов купить более-менее универсальное решение. пишите цену.
Желательно используя xPath и регулярки, что бы не быть привязанным к одному сайту..
 
Последнее редактирование:
На примере сайта не могу, сделал на примере youtube.
 

Вложения

Любой интернет магазин возьмем. Например https://tsum.ru
Когда я паршу ссылки, то по многим из них, особенно из меню, я кликнуть не смогу, так как они не видны.
Задача определить объект, на который надо навести или кликнуть, чтобы появилась возможность кликнуть по ссылкам из меню. Желательно используя xPath и Regexp. Т.е. выцепить материнский объект, чаще всего это тоже <a>, находящаяся выше в иерархии ДОМ модели, по отношению к изначально спаршенной мной "невидимой" ссылке.
Если есть у кого универсальный вариант то готов купить.
 
Последнее редактирование:
C#:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByAttribute("ТЕГ", "АТРИБУТ", "ЗНАЧЕНИЕ", "ТИП ПОИСКА", НОМЕР СОВПАДЕНИЯ);
if (he.IsVoid)
    throw new Exception("Не найдено поле ввода");
{
    instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
    instance.ActiveTab.FullEmulationMouseClick("left", "click");
 

Вложения

  • Поиск.JPG
    Поиск.JPG
    33,8 KB · Просмотры: 154
C#:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByAttribute("ТЕГ", "АТРИБУТ", "ЗНАЧЕНИЕ", "ТИП ПОИСКА", НОМЕР СОВПАДЕНИЯ);
if (he.IsVoid)
    throw new Exception("Не найдено поле ввода");
{
    instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
    instance.ActiveTab.FullEmulationMouseClick("left", "click");

Да, я это знаю. ))
Начальные данные - ссылки по которым кликнуть нельзя, так как они во вложенном меню/подменю или как на сайте https://big-book-edu.ru/ . Больше ничего не известно. Известно что на странице есть некий элемент который сделает эти ссылки видимыми. Надо определить этот элемент, опеределить кликать на него или навести просто,, навести (кликнуть) на него, тем самым откроется нужное подменю или расхлопнется скрытый div и там уже кликнуть на ссылку. Вот такая задача. Пример - любой инет магазин со сложным меню. Универсальный вариант - если меню любой вложенности и для любых сайтов. Если у кого есть - пишите предложения.
 
Последнее редактирование:
C#:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByAttribute("ТЕГ", "АТРИБУТ", "ЗНАЧЕНИЕ", "ТИП ПОИСКА", НОМЕР СОВПАДЕНИЯ);
if (he.IsVoid)
    throw new Exception("Не найдено поле ввода");
{
    instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
    instance.ActiveTab.FullEmulationMouseClick("left", "click");
Для ЦУМ, самый простой вариант.
вот ссылка допустим.
Чтобы на нее перейти с главной надо сначала навести на "ЧАСЫ", а для этого шаблон должен рассчитать что именно там прячется нужная нам ссылка. Шаблон не знает в каком меню прячется та или иная ссылка, этот алгоритм мне и нужен. Затем надо определить наводить мышь на "часы" или кликать, затем опередлившись навести на нее и только потом появится возможность кликнуть используя
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
 
Последнее редактирование:
ну и в чём проблема...
цепляйся к //div[@id="list-town"] откидываешь всё лишние. дальше обрабатываешь как хочешь
 
Все еще куплю шаблон, который может кликать по сложным меню любой вложенности.пишите предложения. Универсальный подходящий под большинство сайтов с адекватной версткой.
 
Последнее редактирование:
ну и в чём проблема...
цепляйся к //div[@id="list-town"] откидываешь всё лишние. дальше обрабатываешь как хочешь
Пробовал отбросить и выйти на материнский list-town-button, не получается. Я только xpath изучаю и не могу понять почему regexp не работает у меня.
 
Все еще куплю шаблон, который может кликать по сложным меню любой вложенности.пишите предложения. Универсальный подходящий под большинство сайтов.
у каждого сайта своя верстка. и структура менюшки сделаны по разному. где то вложенные div, где то через таблицы, где то через списки.
 
у каждого сайта своя верстка. и структура менюшки сделаны по разному. где то вложенные div, где то через таблицы, где то через списки.
ну мне бы реализацию увидеть согласно концепту моему - для tsum и для big-book-edu.ru. Есть ссылка. Требуется поиск родительского <A> для нее через xPath и Regexp, далее треб определить кликнуть по нему или навести, ну и дальше допустим наводим на родительский, открываем свернутое меню, наводим на нашу дочернюю ссылку, кликаем.
 
Последнее редактирование:
Актуально. У кого есть решение по имитации переходов по сложным вложенным меню или кто может сделать за деньги - пишите. Не универсальный вариант донат небольшой. Универсальный вариант - обсудим цену.
 

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