Facebook
From DarkSoldierJack, 3 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 140
  1. import re
  2. import xlsxwriter
  3. from selenium import webdriver
  4.  
  5.  
  6. # Credenciales para inicio de sesión
  7. username = '*********'
  8. password = '************'
  9.  
  10. # Locacalización del webdriver
  11. driver = webdriver.Firefox(executable_path=r'C:\WebDrivers\geckodriver.exe')
  12.  
  13. # Abrir página de inicio de sesión
  14. driver.get('https://plataforma.educaline.com/login/canvas')
  15.  
  16. # Ingresar de credenciales para inicio de sesión
  17. username_textbox = driver.find_element_by_id('pseudonym_session_unique_id')
  18. username_textbox.send_keys(username)
  19.  
  20. password_textbox = driver.find_element_by_id('pseudonym_session_password')
  21. password_textbox.send_keys(password)
  22.  
  23. # Click al botón de "Iniciar sesión"
  24. driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div/div[1]/div/div/div/div/div/div[2]/form['
  25.                              '1]/div[3]/div[2]/button').click()
  26.  
  27. # Navegar a la página de notas de química
  28. driver.get('https://plataforma.educaline.com/courses/4138/grades')
  29.  
  30. assignments = driver.find_elements_by_class_name('student_assignment.assignment_graded.editable')
  31. assignments_quantity = len(assignments)
  32.  
  33. # Datos de las asignaciones
  34. assignment_names = driver.find_elements_by_class_name('title')
  35. due_dates = driver.find_elements_by_class_name('due')
  36. grades = driver.find_elements_by_class_name('score_holder')
  37. max_grades = driver.find_elements_by_class_name('possible.points_possible')
  38.  
  39.  
  40. grade_pattern = re.compile(r'\b\d{2}\s\(\d\.\d\)*')
  41.  
  42. workbook = xlsxwriter.Workbook('NotasDeQuímica.xlsx')
  43. worksheet = workbook.add_worksheet()
  44.  
  45. worksheet.write('A1', 'Asignación')
  46. worksheet.write('B1', 'Fecha límite')
  47. worksheet.write('C1', 'Puntaje')
  48. worksheet.write('D1', 'De')
  49.  
  50. for i in range(assignments_quantity):
  51.     worksheet.write(i + 1, 0, assignment_names[i].text)
  52.     worksheet.write(i + 1, 1, due_dates[i].text)
  53.     worksheet.write(i + 1, 2, str(grade_pattern.findall(grades[i].text)))
  54.     worksheet.write(i + 1, 3, max_grades[i].text)
  55.  
  56. workbook.close()
  57.  
  58. driver.close()
  59.