scraping requests python login python-requests

scraping - requests login python



Inicio de sesiĆ³n de Python en un sitio web con formulario de JavaScript (1)

Intenta configurar encabezados personalizados ya que algunos sitios rechazan el agente de solicitudes predeterminado

import requests payload = { ''account'': ''username'', ''pw'': ''password'' } headers = {''User-Agent'': ''Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0''} with requests.Session() as s: p = s.post(''https://powerschool.-/public/home.html'', data=payload, headers=headers) print p.text r = s.get(''https://powerschool.-/guardian/studentsched.html'', headers=headers) print r.text

Compruebe si hay algún parámetro adicional que se envíe con sus solicitudes de envío, si es así envíelo también en la carga útil.

Intento iniciar sesión en el sitio web de mi escuela utilizando Solicitudes, pero no pasa de la página de inicio de sesión y no devuelve el material en las páginas protegidas por contraseña. Todo lo que hace es devolver el HTML de la página de inicio de sesión. Twill no funcionaría ya que esta página requiere javascript. . El material de inicio de sesión de HTML es

<!--box content--> <div id="noscript" class="feedback-alert"> To sign in to PowerSchool, you must use a browser that supports and has JavaScript enabled. </div> <fieldset id="login-inputs" class="hide"> <div> <label>Username</label> <input type="text" id="fieldAccount" name="account" value="" size="39" /> </div> <div> <label>Password</label> <input type="password" name="pw" value="" size="39" /><div id="login-help"><a href="/public/account_recovery_begin.html">Having trouble signing in?</a></div> </div> <div id="translatorInput"> <label>Translator Sign In</label> <input type="password" name="translatorpw" value="" size="39" /> </div> <div class="button-row"> <button type="submit" id="btn-enter" title="Sign In To PowerSchool Parent Access" value="Enter" border="0" >Sign In</button> </div> </fieldset> <!-- box content-->

He verificado esta respuesta

Mi código actual es

import requests payload = { ''account'': ''username'', ''pw'': ''password'' } with requests.Session() as s: p = s.post(''https://powerschool.-/public/home.html'', data=payload) print p.text r = s.get(''https://powerschool.-/guardian/studentsched.html'') print r.text

pero parece que no puedo iniciar sesión en la página. Mi pregunta es ¿supongo que tengo una carga útil para presionar el botón "enviar" o algo así? Intenté con ''action'' : ''login'' y cosas así, pero nada funciona. Además, no necesito un translatorpw así que ¿debo escribir ''translatorpw'': '''' o simplemente ignorar eso? Obviamente pongo mi nombre de usuario / contraseña real en el programa en mi computadora portátil. ¡Gracias por adelantado!

Editar: Acabo de usar Selenium y funcionó muy fácilmente.