Я пишу парсер домашнего задания для моего финального проекта. По задумке - он должен просто логиниться на сайте, в той же сессии переходить на страницу с заданием и наконец парсить дз. Казалось бы нет нчиего проще, но ничего и нигде не получается.
Вот что я пробовал:
import requests
from bs4 import BeautifulSoup
# Define the login URL and the user credentials
login_url = "https://edu.tatar.ru/login"
login_payload = {
"main_login2": "",
"main_password2": ""
}
# Define the diary URL with a specific date
diary_url = "https://edu.tatar.ru/user/diary/week"
# Create a new session and log in using the user credentials
session = requests.Session()
session.post(login_url, data=login_payload)
# Send a GET request to the diary URL and parse the response using BeautifulSoup
response = session.get(diary_url)
soup = BeautifulSoup(response.content, "lxml")
print(soup)
Все заголовки и данные от аккаунта верны, но в конце программы я получаю просто html-страницу для логина.
У меня получилось это сделать с помощью Selenium, но время выполнения отбило у меня всё желание. (14 секунд!!!)
from selenium import webdriver
import time
import config
start_time = time.time() # время начала выполнения
op = webdriver.EdgeOptions()
op.add_argument('--headless')
driver = webdriver.Edge(options=op)
credentials = config.credentials
driver.get("https://edu.tatar.ru/login")
# find username/email field and send the username itself to the input field
driver.find_element("name", "main_login2").send_keys(credentials['login'])
# find password input field and insert password as well
driver.find_element("name", "main_password2").send_keys(credentials['password'])
# click login button
driver.find_element("xpath", "//button[contains(text(),'Войти')]").click()
driver.get("https://edu.tatar.ru/user/diary/week")
html_page = driver.page_source
driver.quit()
print(html_page)
end_time = time.time() # время окончания выполнения
total_time = end_time - start_time # время выполнения в секундах
print("Время выполнения:", total_time, "секунд")
Я перепробовал все User-Agent, все варианты заголовков, но ничего не выходит. Можете посмотреть, что я делаю не так в первом случае? Я ни в коем случае не прошу всё сделать за меня - я хочу понять где моя ошибка, поэтому буду признателен, если ответ всё таки найдётся. Спасибо