Форум сайта python.su
Суть прчины на видео. Легче будет понять по видео
YOUTUBE
Краткий пересказ:
Главная проблема: нужно с имитировать нажатия на кнопки клавиатуры.
второстепенная проблема: создание базы данных
мой код :
from config import yyour_ligin, yyour_password from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import time driver = webdriver.Chrome(executable_path="C:\\Users\\Nurmakhanov\\Desktop\\python scripts\\safiety_driving\\chromedriver.exe") try: # open site driver.get(url="http://safety-driving.kz/personal/") time.sleep(5) # send user`s login username = driver.find_element(By.NAME,'USER_LOGIN') username.clear username.send_keys(yyour_ligin) time.sleep(0.1) # send user`s password password = driver.find_element(By.NAME,'USER_PASSWORD') password.clear password.send_keys(yyour_password) time.sleep(0.1) # click "login" for login login_button = driver.find_element(By.NAME,'Login').click() time.sleep(5) # open link with tests driver.get(url="http://safety-driving.kz/online2/exam/beta/#pages/tests.php") time.sleep(5) # start test start_test_button = driver.find_element(By.CLASS_NAME, "btn.btn-primary").click() time.sleep(5) start_test_button = driver.find_element(By.CLASS_NAME, "bkt-start-test-button.btn.btn-primary.center-block").click() time.sleep(5) # select answer next_ans = driver.find_element(By.CLASS_NAME, "bkt-question-answers-container.col-xs-12.col-sm-5.col-lg-5").send_keys(Keys.NUMPAD1) time.sleep(2) next_ans = driver.find_element(By.CLASS_NAME, "bkt-question-answers-container.col-xs-12.col-sm-5.col-lg-5").send_keys(Keys.NUMPAD2) time.sleep(2) next_ans = driver.find_element(By.CLASS_NAME, "bkt-question-answers-container.col-xs-12.col-sm-5.col-lg-5").send_keys(Keys.NUMPAD3) time.sleep(2) ### time.sleep(10) except Exception as ex: print(ex) finally: driver.close() driver.quit()
Офлайн
В Data Mining создаёшь топики, которые не относятся к Data Mining. Data Mining - это получение данных из данных. Например, у тебя есть сто цыплят, ты можешь предположить, что их родили курицы в количестве, которое соответствует среднестатистическому количеству яиц, откладываемых одной курицей. Так ты из количества цыплят можешь выудить количество куриц и, соответственно, размер курятника, в котором они живут. Так у тебя из ста цыплят получается база данных стройматериалов, которых не было изначально вообще. Вот это Data Mining.
А у тебя - это просто парсинг новичковый.
Я думаю (ну, так, на первый взгляд), что ты нажатия клавиш передаёшь не тому элементу. Передаёшь контейнеру, а ловит их не контейнер. Поэтому это нужно всё равно сидеть тебе и разбираться со страницей, с тем, как она устроена, как её писал создатель этой страницы, иметь дело с его мозгами, с тем, что он там задумывал.
А вообще, парсить всё это нужно не Selenium'ом, а именно запросами по HTTP. Потому что браузер, когда ты в нём просматриваешь сайт, никакие нажатия клавиш никуда не посылает, он только автоматизирует запросы по HTTP. Соответственно, нажатие чего-то там преобразуется в какой-то HTTP-запрос или там в какое-нибудь редактирование DOM'а страницы. То есть нажатия видишь только ты и браузер, а сайт нажатий не видит, он видит только HTTP-запросы.
Так что, не знаю, кто тебе будет помогать. Выглядит всё так, что ты не понимаешь, как оно устроено всё, но при этом взял у кого-то какой-то заказ и хочешь, чтобы за тебя его делали бесплатно другие, пока ты там ночью бухаешь или укуриваешься. Заебись! Чотко придумал! Могёшь!
Отредактировано py.user.next (Фев. 24, 2023 04:49:37)
Офлайн
py.user.next
В Data Mining создаёшь топики, которые не относятся к Data Mining. Data Mining - это получение данных из данных. Например, у тебя есть сто цыплят, ты можешь предположить, что их родили курицы в количестве, которое соответствует среднестатистическому количеству яиц, откладываемых одной курицей. Так ты из количества цыплят можешь выудить количество куриц и, соответственно, размер курятника, в котором они живут. Так у тебя из ста цыплят получается база данных стройматериалов, которых не было изначально вообще. Вот это Data Mining.А у тебя - это просто парсинг новичковый.Я думаю (ну, так, на первый взгляд), что ты нажатия клавиш передаёшь не тому элементу. Передаёшь контейнеру, а ловит их не контейнер. Поэтому это нужно всё равно сидеть тебе и разбираться со страницей, с тем, как она устроена, как её писал создатель этой страницы, иметь дело с его мозгами, с тем, что он там задумывал.А вообще, парсить всё это нужно не Selenium'ом, а именно запросами по HTTP. Потому что браузер, когда ты в нём просматриваешь сайт, никакие нажатия клавиш никуда не посылает, он только автоматизирует запросы по HTTP. Соответственно, нажатие чего-то там преобразуется в какой-то HTTP-запрос или там в какое-нибудь редактирование DOM'а страницы. То есть нажатия видишь только ты и браузер, а сайт нажатий не видит, он видит только HTTP-запросы.Так что, не знаю, кто тебе будет помогать. Выглядит всё так, что ты не понимаешь, как оно устроено всё, но при этом взял у кого-то какой-то заказ и хочешь, чтобы за тебя его делали бесплатно другие, пока ты там ночью бухаешь или укуриваешься. Заебись! Чотко придумал! Могёшь!
Офлайн
nur_erbol_2002Он для тестирования сделан изначально, поэтому он стал заложником этого. Как бы он ни развивался, он всё равно теперь не может прыгнуть выше своей головы. Он не может выйти из собственной клетки, которую ему сделал хозяин изначально. Поэтому от него и надо отказываться первым делом. Сегодня он работает, завтра перестанет работать, а поменять ты это не сможешь. Надо будет тебе ждать, когда в нём исправят какой-то баг, а ждать исправления бага обычно приходится год, два года и так далее. Там такие периоды. То есть когда ты в Selenium'е, у тебя нет контроля над ситуацией.
Но с тем что мне нужно выбрать другой способ а не селениум я не соглашусь, ибо таких же популярных инструментов которые могут работать с js и могут позволить ему прогрузиться я не видел.
nur_erbol_2002Да ты хотя бы в консоль браузера заглядывал? Какие запросы идут, когда он там грузится, какие JavaScript-скрипты загружаются и что в них. Вот ты натолкнулся на то, что ты не можешь нажимать эти кнопки, вот тебе нужен способ нажатия на них или обход этого нажатия, чтобы его вообще делать не надо было. Это делается через анализ сайта.
Там во время начала теста сайт грузиться сразу а тесты дозагружаються. Любой парсер html будет думать что сайт загружен уже и останавливать дозагрузку.
nur_erbol_2002Так ты же не разбираешься в этом всём. Даже если ты их знаешь, например, надо ещё знать, как их применять и как их не применять. А это ты знаешь? Скальпель можно по-разному применять, он от этого скальпелем не перестаёт быть. Но им можно операцию классную провести, а можно какую-то хуйню сделать. И он тебе никак не скажет “вот ты чо щас печень протыкаешь насквозь мной?! это неправильно!”.
Откуда такая инфа? Пробовал уже через requests + bs4
nur_erbol_2002Ты просишь за тебя обокрасть этот сайт. А это тут не котируется. Кто-то сидел, собирал там это всё, сделал работу, имеет полное право монетизировать это всё. Ты не можешь ему предъявлять претензии, что он тебе бесплатно доступ не даёт туда, потому что он это всё сделал, а ты нет. К нему больше уважения, чем к тебе, какому-то халявщику. Иди на форум взломщиков, там уёбки собираются всякие, глисты, которые ничего не умеют, за счёт других живут. Ну вот, давай, вперёд. Только вот они тебя тоже ценить не будут, а тоже попытаются отыметь либо на деньги, либо на какую-нибудь хуйню ещё там какую-нибудь. Скины у тебя украдут в CS-GO для перепродажи, пока ты там уши развесишь. Ещё и бухаешь, алконафт - вообще находка. Ему что угодно говоришь - он что угодно делать будет.
Это мой первый личный не коммерческий проект, я не прошу писать за меня все.
nur_erbol_2002SQL нужен, когда ты умно искать собрался данные. Соответственно, для баз данных с SQL есть разные мощности. Начинается всё с SQLite'а, там вся база лежит в одном файле.Многие программы это используют; например, браузер свои куки хранит у себя в SQLite-файле. Потом там идёт MySQL. Он очень хорошо сделан, но он не выдерживает очень тяжёлые базы с миллиардами записей. Потом уже идёт PostgreSQL, который сделан похуже, чем MySQL, но он зато выдерживает огромные базы. А потом уже начинаются другие системы.
И совет с базой куда я буду записывать вопросы. Для нескольких тыс строк хватит ли самого пайтона или надо сюда и sql ставить?
Отредактировано py.user.next (Фев. 24, 2023 21:09:40)
Офлайн
py.user.nextХорошо. Спасибо, хотя там половина говно из твоих слов но все же 2ая половина немного полезна. Я не бухаю, не курую, не знаю откуда инфа такая, да и в игры не играю, понятия не имею о чем ты, обиженка ты какой то. У тебя что сайт кто то спарсил?? Кстати, пасибо, спасибо что подсказал где хранить базу. То что ты говоришь там про монитезацию, хакерство и тд, это называется “Пиратство”. Я собираюсь спиратить чей то платный сайт. Пиратство было и будет. Может для тебя пиратство это “ВАААА!! Ты чмо ебанное - ПИРАТ!!!”, но для меня это норма. Может выложу в телеграм бот, но:
Отредактировано nur_erbol_2002 (Фев. 25, 2023 11:07:17)
Офлайн
nur_erbol_2002Да есть там одна фигня какая-то, но она ненадёжная. В общем, если тебе понадобилось парсить с обязательным запуском JavaScript-скриптов, то что-то ты делаешь не то. То есть где-то ты что-то не доанализировал по HTTP-запросам.
Подскажи что есть кроме Selenium для парсинга с js?
nur_erbol_2002К requests вопросов нет. Инструмент эффективный.
Как раз таки заложник функционала тут requests.
nur_erbol_2002Ты пойми, этот сайт не последний. Везде тебе надо будет делать то же самое, но там не везде будут всякие такие возможности. И вот тогда наступит жопа - будет тупик в каком-то небольшом элементе, из-за которого ты всю программу не сделаешь в итоге. Поэтому и надо правильно учиться сразу, а не пробовать всякую хрень сначала.
Я нашел как посылать клики клавиш сайту. Через прямую эмуляцию клавиатуры, ахах.
Офлайн
py.user.nextОоо, в этот раз без осарблений)) Спасибо
Офлайн
Я посмотрел. Это приложение, которое работает в браузере. С сайта эти скрипты только загружаются и всё, и в самом сайте никаких вычислений не просходит. Только в браузере идут вычисления. Я до конца теста не доходил, чтобы проверить точно всё, так как там через каждые пять неверных ответов он перезапускает тест с начала, а я эти ответы не знаю.
nur_erbol_2002Не, это счётчик Яндекса, это левая фигня.
на счет HTTP запросов, я посмотрел, ты был прав, но я не разобрался, символы какие то
Отредактировано py.user.next (Фев. 26, 2023 02:36:25)
Офлайн
py.user.nextДа, Спасибо за помощь. Сейчас я уткнулся в проблему с незнанием sql. Пойду учить. Не знаю сколько времени придеться изучать, но я дам знать если у меня все же получиться, как никак твое участите в качестве советника есть в этом проекте. Как построю базу данных, дам знать, думаю уйдет 1 - 2 недели до того как сделаю все.
Отредактировано nur_erbol_2002 (Фев. 27, 2023 15:50:42)
Офлайн
nur_erbol_2002Так ты если пьяные видео записываешь, ты думаешь, кто-то терпеть это будет тут? Не, здесь не институт благородных девиц. Здесь тебя пошлют на три весёлых буквы. Это тебе ещё повезло, что я эти видео смотрю. Здесь запощивание задания в картинках считается неуважением и постоянно всех дрочат за это, а ты вообще пишешь видео, где надо десять минут сидеть, хуйню эту слушать. Ещё и пьяный! Пьяный вообще не садись за комп. Бухаешь - иди бухай! Не надо тут людей отвлекать. Протрезвеешь - выкладывай всё текстом. Потому что текст всегда можно оцифровать. А код из видео или из картинки никто не будет сидеть и переписывать себе, чтобы проверить, как он там запускается и продебажить его хотя бы, просмотреть переменные на разных этапах выполнения и так далее. Ты здесь нихуя ни тенгешки не заплатил, чтобы сидеть потом здесь и выёбываться. А эти плюсики - хуйня, они просто для фана, чтобы не скучно было. На другом форуме тебя бы сразу вырезали нахуй! в первый же день! так что успокойся.
p.s. если решился помогать людям не обсирай их, ахах
Отредактировано py.user.next (Фев. 27, 2023 23:05:05)
Офлайн