2015-11-20 13 views
5

Sto tentando di accedere al sito Web della mia scuola tramite Richieste, ma non oltrepassare la pagina di accesso e non restituire le informazioni nelle pagine protette da password. Tutto ciò che fa è restituire l'HTML della pagina di accesso. Twill non funzionerebbe in quanto questa pagina richiede javascript. . La roba login HTML èAccesso a Python in un sito Web con modulo javascript

<!--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--> 

Ho controllato this answer

mio codice attuale è

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 

ma io non riesco a accedere alla pagina. La mia domanda è che suppongo di avere un carico utile per premere il pulsante "invia" o qualcosa del genere? Ho provato 'action' : 'login' e cose del genere ma nessuna funziona. Inoltre, non ho bisogno di un translatorpw quindi dovrei scrivere 'translatorpw': '' o semplicemente ignorarlo? Ovviamente ho inserito il mio vero nome utente/password nel programma sul mio portatile. Grazie in anticipo!

Modifica: ho appena usato il selenio e ha funzionato molto facilmente.

+0

Non sono sicuro, ma il tuo programma potrebbe comportarsi come un browser. Dovrai esaminare la pagina, esaminare tutti i campi di 'p' e cercare di scoprire cosa si aspetta il server. C'è un codice javascript sulla pagina con commenti sulle richieste POST. Dovrai prendere in considerazione tutto ciò. – RobertL

+0

Sì, ho cercato nel codice HTML restituito dal mio codice e non ha nulla che assomigli a quello nell'altra pagina, quindi sono confuso anche su questo. – bolkols

risposta

0

creazione di intestazioni personalizzate come alcuni siti Prova rifiutare agente richieste di default

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 

Verificare se ci sono dei parametri aggiuntivi che vengono inviare le vostre richieste postali, in caso affermativo inviarlo in carico troppo.

Problemi correlati