Кто имел дело с Selenium и/или с AngleSharp подскажите, как искать элементы правильно?
IWebElement element = driver.FindElement(By.ClassName("class1")
Данная строка находит элемент. Но вот как заставить его же искать элементы внутри найденного. Чтоб не приходилось по новой запускать поиск по всему документу. Есть ли способ сделать это через selenium?
Думал можно сделать так:
element.FindElement(By.ClassName("class2")
Но видимо это не так работает, так как выдает null.
С другой стороны может лучше просто сохранить html-код найденного элемента, а там уже обработать его через AngleSharp. Но вот как вытянуть "внутренности" найденного элемента? Кто уже сталкивал с этим - поделитесь опытом.
element.FindElement(By.ClassName("class2")- должно работать, выведите весь HTML этого элемента и посмотрите что там, есть ли вообще то, что вы хотите взять? И да, напомню не смотрите HTML через браузер!, ибо то, что вы получаете программно, может кардинально отличаться от того, что там! – EvgeniyZ Oct 05 '21 at 18:49подгружаются через ajax скрипты- JS тоже нужно брать от куда-то данные (с сервера), вот этот запрос и ищите, я уверен на 90%, что он там есть. Хотите конкретику, давайте сайт и что надо достать, будем искать вместе. Сейчас мы с вами по разные стороны баррикад, где я по своему опыту говорю, что вам скорей всего вовсе не нужен JS, Selenium и прочее, а вы утверждаете обратное. – EvgeniyZ Oct 05 '21 at 20:02GETна определенный (вроде динамический) адрес. Собственно, остается вам понять какие данные он требует, от куда берется этот адрес и брать нужное напрямую. Помните, JS не знает про данные, он их сначала должен получить от куда либо, вот первым делом ищите от куда все эти данные, а потом думайте как лучше их достать. – EvgeniyZ Oct 05 '21 at 21:28Вы возможно используете встроенные инструменты браузера- да, зачастую достаточно нажать F12, советую почитать один из моих давних ответов.И мне как раз не хотелось заниматься декодингом- а там по сути и нечего декодировать, просто неведомые символы, которые можно заменить на нормальные и будет нужный вид. Ну и адрес, нужный вам в итоге будетсайт/спорт/Значение_ML/Значение_MU. – EvgeniyZ Oct 06 '21 at 14:37m_1_26- 26 - это id страны (или нечто такое), он должен быть статичен, что пугает вас тут я не пойму)мне проще потом парсить- я вас не заставляю, я лишь говорю, что вам не нужно тащит в свой проект целый браузер, который будет кушать в разы больше ресурсов, чем само ваше приложение. Я говорю, чо есть альтернатива, правильная альтернатива, которая подразумивает под собой простой GET запрос на указанный адрес, который выдаст сразу вам ужные данные, без HTML, Selenium и прочего. А нужно вам это, ну, решать вам. – EvgeniyZ Oct 06 '21 at 14:57если некоторые индексы будут пропущены или вовсе отсутствовать- вспомните то, что я сказал вам раньшеПомните, JS не знает про данные, он их сначала должен получить от куда либо, то есть все нужные вам ID тоже где-то хранятся и получаются неким образом, найдите данные, а не занимайтесь подбором. Как, я вам уже все вроде дал и показал. Ищите запрос, который сайт посылает, или может в самом HTML хранится (получите его через простой C# и посмотрите что там до всех скриптов). – EvgeniyZ Oct 06 '21 at 20:13Клиент > Клиент > Сервер, то есть ваш клиент, обращается к клиенту (сайт), который в свою очередь обращается к серверу за данными. Я вам говорю "Научитесь отлавливать запросы", чтоб вы делалиКлиент > Сервер, то есть чтоб ваше приложение было заменой сайта, напрямую общаясь с сервером. Как вы выше уже заметили, у сайта есть адреса, куда можно отправить запрос и он простым текстовиком отдаст данные - это API, вот найдите API со всеми странами... – EvgeniyZ Oct 10 '21 at 14:33как их понимать?- ну у вас там 90% это картинки, 10% это JS (помним, что JS зачастую не содержит данных), остальное это запросы к серверу. Вот сортируем по типу и видим это, где document, fetch - некие данные, крутим ниже, там ещеxhtчасть из которых простые.js, не хранящие данные), а часть простые адреса с тоже некими данными. Еще есть некий запрос, который по таймингу занимает все время нахождения на сайте, это WebSocket - некий канал общения с сервером. – EvgeniyZ Oct 10 '21 at 15:27зашифрованные данные- я там такого не вижу, ведь "квадраты", это не шифр, а проблема с кодировкой, то есть браузер берет не ту кодировку, что требуется для соккета.401 Unauthorized- это означает то, что адрес требует дополнительные заголовки/cookie для доступа.эти данные мне нужны или все же другие?- это уже вам виднее. Я предположу, что вам нужны Id стран, вот найдите от куда их берет сайт.Regex- а он тут при чем?Я привык к простым get запросам- а тут чем они отличаются? Теж запросы, данные не в JSON, да, но без шифров и прочего, простой набор параметров (показывал выше).. – EvgeniyZ Oct 10 '21 at 16:31