Cómo escribir un script de Python para verificar los resultados de mi examen cuando lo cargue y notificarme

Recientemente, se declararon los resultados del quinto semestre de mi universidad. Y el problema de no saber que los resultados se han declarado a tiempo, es que, debe esperar más de 12-13 horas para verificar sus resultados, eso es porque hay muchos estudiantes en mi universidad (más de 4k, mi lote solo), los servidores de la universidad no pueden manejar tanto tráfico y se bloquea.
Entonces, tuve que escribir un guión para descubrir los resultados tan pronto como se declaran o esperar mucho tiempo para verificarlo.

# Raspando la página web principal de SRM University para verificar si los resultados han sido
#declarado para estudiantes de tercer año de UnderGrad.

desde bs4 import BeautifulSoup
import urllib.request
tiempo de importación
importar navegador web
importar os

BASE_URL = “Anuncios”
RESULT_URL = “Inicio”
chrome_path = ‘C: / Archivos de programa (x86) /Google/Chrome/Application/chrome.exe% s’
music_path = ‘G: /version-control/result-reminder/sounds/siren.mp3’

palabras clave = [‘Resultados’, ‘B.Tech’, ‘2013’]

def checkForSem (encabezado):
devuelve True if (all (ingrese el encabezado para ingresar las palabras clave)) else False

def main ():
url = urllib.request.urlopen (BASE_URL)
sopa = BeautifulSoup (url.read (), ‘html.parser’)
content_class = soup.find_all (‘div’, class _ = “col-lg-10 col-xs-10 col-sm-10 col-md-10 último-texto relleno-left-10px”)
para encabezar en content_class:
content_heading = header.find (‘h4’). get_text ()
page_url = header.find (‘a’) [‘href’]
results_out = checkForSem (str (content_heading))
if results_out:
webbrowser.get (chrome_path) .open (RESULT_URL + page_url)
mientras cierto:
os.startfile (music_path)
tiempo de dormir (10)
descanso
cuenta = 1
mientras cierto:
principal()
imprimir (contar)
cuenta + = 1
time.sleep (600)

Entonces, escribí este código que revisaba el sitio web para el anuncio del resultado cada 10 minutos y si se declaraban los resultados, abriría el enlace y sonaría una alarma irritante. Básicamente, acabo de desechar el sitio web para verificar si se declaran los resultados.

También puede consultar el código en mi perfil de github: Sandeeprds95 (Sandeep Ravindra)

Escriba un robot de Python para verificarlo por usted, un script que simplemente repita y verifique la página web cada pocas horas, y lea el valor clave en esa página que puede actuar como un indicador a medida que el resultado de su examen se ha cargado, luego le notificará cuando El valor del indicador cambió.

Puede usar el módulo de requests para leer la página de resultados del examen, luego tal vez usar beautifulsoup4 para leer el indicador de, por ejemplo, Archivo cargado ha cambiado de 0 a 1 como valor del indicador, y luego proceder a notificarle a través del medio preferido (api de Facebook , api de telegramas, api de sms o incluso el correo electrónico bueno), de lo contrario, duerme unas horas más antes de volver a time.sleep .

Algo como esto, pero obviamente la sintaxis está mal y esto es solo un pseudocódigo, puede usar esto como referencia.

exampage = request.get (‘www.exampage.com’)
mientras que (1):
bs = beautifulsoup.read (página de examen)
file = bs.get (‘clase’, ‘uploaded_exam_result’)

# asumiendo que tiene 0 resultados de examen al principio
# tan pronto como cumpla 1, el programa le notifica y rompe el ciclo
si archivo> 0:
Enviar notificación()
print (‘trabajos realizados’)
descanso
tiempo de sueño (60 * 60 * 24)

Espero que tengas la idea detrás, ¡y buena suerte!

En realidad, recientemente hice este tipo de script para verificar mi resultado de 3 semestres. Utilicé urllib2 y solicito el módulo para eliminar el sitio web de resultados. Este script hace algo muy simple que encuentra para la palabra clave de Result of Semester 3 si no encuentra nada, se queda dormido durante los próximos 15 minutos y si lo recibe envía una notificación a mi escritorio (uso ubuntu para que la notificación no funcione en Windows )

Aquí está el código.

# Este es un script que comprueba el resultado de 3 sem cada 15 minutos
# Autor Aagam Shah
#Solo por diversión
importar urllib2
importar re
importar os
tiempo de importación

mientras que 1:

html_content = urllib2.urlopen (‘ http://www.gtu.ac.in/results.asp&#039 ;). read ()

coincidencias = re.findall (‘BE SEM 3’, html_content);

si len (coincide) == 0:
os.system (“notificar-enviar ‘Sí’ ‘El resultado aún no se ha declarado'”)
tiempo de dormir (900)

más:
os.system (“notificar-enviar ‘Vaya’ ‘Resultado declarado'”)
dejar()

Aquí la salida.

Mantuve este script en ejecución durante dos días y fui el primero en recibir las noticias de Result.

Afortunadamente obtuve buenas notas. 🙂 🙂

Editar-1

Gracias a todos los miembros de Quora por su respuesta a mi respuesta anterior. Entonces, actualicé el script y lo llevé a otro práctico nivel portátil.

Aquí está el código

# Este programa le enviará un dulce SMS cuando se declaren sus resultados.
# Autor Aagam Shah (@neutrinoguy)
#Solo por diversión
# V ~ 2.0

desde twilio.rest import TwilioRestClient #SMS API Package
importar urllib2
importar re
tiempo de importación

account_sid = “xxxxxxxxxxxxxxxxxxxx” # Su ID de cuenta Twilio
auth_token = “aaaaaaaaaaaaaaaaaaaaaa” #Tu token API secreto

cliente = TwilioRestClient (account_sid, auth_token)

mientras que 1:

html_content = urllib2.urlopen (‘ http://old.gtu.ac.in/results.asp&#039 ;). read ()

coincidencias = re.findall (‘BE SEM 5 – Regular’, html_content);

si len (coincide) == 0:
imprima “Sí, resultado no declarado. Me voy a dormir” # no enviará nada
time.sleep (7200) #sleep por 2 horas

más:
msg = client.messages.create (to = “Your_number”, from _ = “Your_twilio_number”, body = “Oops! Resutls, Best of Luck. Aquí tienes: http: //result1.gtu.ac.in&quot 😉 #Will enviar SMS a su número de teléfono
imprimir “SMS enviados gracias”
dejar()

Este script hará el mismo raspado para el sitio web de resultados, pero esta vez, en lugar de enviar notificaciones a su computadora, enviará un SMS a su teléfono. Aquí utilicé Twilio API para enviar SMS. Es totalmente gratis para uso personal. Entonces, vaya a generar su número de teléfono y token API para usar en este script.

Consejo: puede usar un sitio de alojamiento de Python en línea Pythonanywhere y programar este script. Funcionará continuamente en línea y solo tiene que sentarse y relajarse. Serás el primero en recibir noticias de resultados. 🙂

Aquí está la salida

Esta vez, mis resultados de la 5ª Sem van a llegar. Veamos … 🙂 🙂 Happy Coding.

importar urllib2
importar re
importar os
tiempo de importación
result = raw_input (“seleccione uno de esto \ n 1.GTU 2.GSEB”)

mientras que 1:
si resultado == “1”:

html_content = urllib2.urlopen (‘ http://www.gtu.ac.in/results.asp&#039 ;). read ()
find = str (raw_input (“Ingrese la rama y sem como BE SEM 3”))
coincidencias = re.findall (find, html_content);

si len (coincide) == 0:

os.system (“notificar-enviar ‘Sí’ ‘El resultado aún no se ha declarado'”)

tiempo de dormir (900)

más:
os.system (“notificar-enviar ‘O Teri !!’ ‘Resultado declarado'”)
dejar()
más:
html = urllib2.urlopen (” http://www.gseb.results-nic.in/&quot ;). read ()
find2 = str (raw_input (“SELECCIONE 1.SSC \ n 2.HSC”))
si find2 == “SSC”:
html = “gseb.org, GSEB SSC Result 2016, Gujarat Board SSC Result 2016”
coincidencias2 = re.findall (‘Próximamente’, html)

si len (coincidencias2) == 0:
os.system (“notificar-enviar ‘Sí’ ‘El resultado aún no se ha declarado'”)
tiempo de dormir (900)

más:
os.system (“notificar-enviar ‘O Teri !!’ ‘Resultado declarado'”)
dejar()
elif find2 == “HSC”:
html = “gseb.org, GSEB HSC Result 2016, Gujarat Board HSC Result 2016”
coincidencias2 = re.findall (‘Próximamente’, html)
html = “gseb.org, GSEB SSC Result 2016, Gujarat Board SSC Result 2016”
coincidencias2 = re.findall (‘Próximamente’, html)

si len (coincidencias2) == 0:
os.system (“notificar-enviar ‘Sí’ ‘El resultado aún no se ha declarado'”)
tiempo de dormir (900)

más:
os.system (“notificar-enviar ‘O Teri !!’ ‘Resultado declarado'”)
# ¡Esto es solo para fines educativos!

Para los usuarios de Mac, estos son los pasos que deben seguirse.

Asegúrese de estar ejecutando la versión Python 2.

Pasos:

  1. Instale la biblioteca de Pync usando la terminal

pip install pync

Se usa para imprimir la salida como una notificación en macOS.

2. Guarde el siguiente archivo de Python como filename.py

importar urllib2
importar re
importar os
tiempo de importación
desde Pync Import Notifier

mientras que 1:

html_content = urllib2.urlopen (‘ http://coe1.annauniv.edu/home/&#039 ;). read ()

#A menudo trabaja para la Universidad de Anna 😉
coincidencias = re.findall (‘resultados publicados’, contenido_tml);

si len (coincide) == 0:
Notifier.notify (‘Resultados no publicados’)
tiempo de dormir (60)

más:
Notifier.notify (‘Resultados publicados’)
dejar()

Este programa verificará los resultados cada 1 minuto. Puede cambiar la hora haciendo cambios en

time.sleep (60) # 60 segundos

Cambiar la url de sus respectivas universidades.

Eso es 😉

Escribí un guión para lo mismo.

Simplemente raspó el sitio web con el módulo beautifulsoup y si aparecía algo con el texto “resultado” o algo similar, me envió un mensaje en mi teléfono a través del módulo twilio.

Este no es Python, y solo una solución:

2. Obtuve el RSS de la página web, y cualquier actualización de la fuente RSS activaría el script SMS en IFTTT, de modo que recibiré una notificación.

Aunque no soy tan maestro en Python para escribir ese guión, pero encontré a este tipo que lo escribió para conocer los resultados de su examen, espero que esto ayude.

La respuesta de Dhruv Hari Baldawa a ¿Cuáles son los mejores scripts de Python que hayas escrito?

Como Donald sugirió, si no conoce el indicador, puede obtener el código fuente HTML usando urllib y hacer una comparación entre la última fuente guardada usando difflib y mostrar las diferencias

No lo hagas Solo no lo hagas.
La única forma de hacerlo si no hay una notificación activa del sitio web es sondearla repetidamente. Es decir, crear un montón de solicitudes a la página para verificar si los resultados de su examen están allí o no.
Que es un ataque de denegación de servicio.
Si tus compañeros de clase saben lo que has hecho y hacen lo mismo, es un ataque de Denegación de servicio distribuido.
No lo hagas

es fácil descargar resultados del scripting del lado del cliente … pero lleva tiempo descargar todos los resultados …

mirar