


Парсинг на python selenium
В общем, появилась у меня идея спарсить дз, оценки, и т.д. Сайт edu.gounn.ru . Мой вопрос заключается в том, как через selenium ввести логин и пароль от учетной записи(без этого на сайт не пускает). Я уже сам пытался, но не очень получается, либо я просто не очень понимаю.
Мой код:
from colorama import Fore
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
url='https://edu.gounn.ru/authorize'
#url="https://google.com/ncr" #url='https://ya.ru/'
with webdriver.Chrome() as driver:
wait = WebDriverWait(driver,10)
driver.get(url)
driver.find_element(By.NAME,"айди").send_keys('логин'+Keys.RETURN)
выдает ошибку:
DevTools listening on ws://127.0.0.1:10600/devtools/browser/7baecc59-600a-45c9-8516-db588767f4c3
Traceback (most recent call last):
File "c:\Users\Home\Desktop\hobby\AFINA\mail.py", line 15, in <module>
driver.find_element( By.NAME ,"login").send_keys('Hello World'+Keys.RETURN)
File "C:\Users\Home\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 855, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\Home\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 428, in execute
self.error_handler.check_response(response)
File "C:\Users\Home\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="text"]"}
(Session info: chrome=105.0.5195.127)
Stacktrace:
Backtrace:
Ordinal0 [0x00BBDF13+2219795]
Ordinal0 [0x00B52841+1779777]
Ordinal0 [0x00A6423D+803389]
Ordinal0 [0x00A93025+995365]
Ordinal0 [0x00A931EB+995819]
Ordinal0 [0x00AC0F52+1183570]
Ordinal0 [0x00AAE844+1108036]
Ordinal0 [0x00ABF192+1175954]
Ordinal0 [0x00AAE616+1107478]
Ordinal0 [0x00A87F89+950153]
Ordinal0 [0x00A88F56+954198]
GetHandleVerifier [0x00EB2CB2+3040210]
GetHandleVerifier [0x00EA2BB4+2974420]
GetHandleVerifier [0x00C56A0A+565546]
GetHandleVerifier [0x00C55680+560544]
Ordinal0 [0x00B59A5C+1808988]
Ordinal0 [0x00B5E3A8+1827752]
Ordinal0 [0x00B5E495+1827989]
Ordinal0 [0x00B680A4+1867940]
BaseThreadInitThunk [0x77A562C4+36]
RtlSubscribeWnfStateChangeNotification [0x77DE1B69+1081]
RtlSubscribeWnfStateChangeNotification [0x77DE1B34+1028]
я начал изучать парсинг буквально сегодня, так что извините если тупой вопрос.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://edu.gounn.ru/authorize')
# Ждем прогрузки страницы пока поле ввода не станет доступным
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'ej-form-control')))
# Вводим логин
login = driver.find_element(By.XPATH, '//*[@id="loginviewport"]/div/div[1]/form/div[1]/div[1]/div')
get_login = ActionChains(driver).move_to_element(login).click().send_keys("login").perform()
#Вводим пароль
password = driver.find_element(By.XPATH, '//*[@id="loginviewport"]/div/div[1]/form/div[1]/div[2]')
get_password = ActionChains(driver).move_to_element(password).click().send_keys("password").perform()
# Нажимаем кнопку 'войти'
submit = driver.find_element(By.XPATH, '//*[@id="loginviewport"]/div/div[1]/form/div[2]/button')
get_submit = ActionChains(driver).move_to_element(submit).click().perform()
time.sleep(20)
driver.quit()
Алексей, добрый день! Ровно та же задача )) Напиши мне пожалуйста на mr.covax@mail.ru
На тупой вопрос - тупой ответ : вводи ручками...