2016-08-26 5 views
0

Ich weiß, dass diese Frage scheint ziemlich einfach, aber ich habe jeden Vorschlag ausprobiert und keiner hat funktioniert.Scraping einer Website, die Authentifizierung erfordert

Ich möchte ein Python-Skript erstellen, das auf meiner Schulwebsite nach neuen Noten sucht. Jedoch kann ich nicht für das Leben von mir herausfinden, wie man es kratzt.

Die Website leitet auf eine andere Seite um, um sich anzumelden. Ich habe alle Skripte und Antworten ausprobiert, die ich finden konnte, aber ich bin verloren.

ich Python 3, ist die Website in einem https://blah.schooldomate.state.edu.country/website/grades/summary.aspx Format

Der Benutzername Abschnitt enthält folgende Komponenten:

<input class="txt" id="username" name="username" type="text" autocomplete="off" style="cursor: auto;">

Das Passwort der Name ist, außer es ein onfocus HTML-Element enthält.

Eine erfolgreich authentifiziert, ich werde automatisch auf die richtige Seite umgeleitet.

Ich habe versucht:

Python 2 des cookielib mit und Mechanize

Mit HTTPBasicAuth

die Informationen als dict zu einem requests.get Passing()

viele verschiedene Völker Ausprobieren Code einschließlich Antworten, die ich auf dieser Website gefunden habe

+0

können Sie authentifizieren? Wenn ja, müssen Sie Redirect mit Python-Anfragen folgen und Session verwenden, um Cookies zu speichern –

+0

Am einfachsten ist die Anmeldung mit dem Chrom, und cURL-URL von Dev-Tools abrufen und damit manipulieren. – YOU

Antwort

0

Vielleicht können Sie Selen-Bibliothek verwenden.

ich Ihnen mein Codebeispiel:

from selenium import webdriver 

def loging(): 
    browser = webdriver.Firefox() 
    browser.get("www.your_url.com") 

    #Edit the XPATH of Loging INPUT username 
    xpath_username = "//input[@class='username']" 

    #Edit the XPATH of Loging INPUT password 
    xpath_password = "//input[@class='password']" 

    #THIS will write the YOUR_USERNAME/pass in the xpath (Custom function) 
    click_xpath(browser, xpath_username, "YOUR_USERNAME") 
    click_xpath(browser, xpath_username, "YOUR_PASSWORD") 

    #THEN SCRAPE WHAT YOU NEED 

#Here is the custom function 
#If NO input, will only click on the element (on a button for example) 
def click_xpath(self, browser, xpath, input="", time_wait=10): 
    try: 
     browser.implicitly_wait(time_wait) 
     wait = WebDriverWait(browser, time_wait) 
     search = wait.until(EC.element_to_be_clickable((By.XPATH, xpath))) 
     search.click() 
     sleep(1) 
     #Write in the element 
     if input: 
      search.send_keys(str(input) + Keys.RETURN) 
     return search 
    except Exception as e: 
     #print("ERROR-click_xpath: "+xpath) 
     return False 
Verwandte Themen