2016-12-22 2 views

Antwort

1

Es ist eine gute Übung, zuerst etwas research zu machen, am Code zu arbeiten und dann eine Frage zu stellen, wenn du nicht weiterkommst.

Da die Anmeldung csrf erfordert, Selenium, die mit Browser arbeiten, ist mehr geradlinig. Hier ist eine Lösung mit Python-Anfragen, ich habe kein Konto, also kann ich es nicht testen.

import re 
import requests 

def get_csrf(page): 
    matchme = r'name="csrfToken" value="(.*)" /' 
    csrf = re.search(matchme, str(page)) 
    csrf = csrf.group(1) 
    return csrf 

def login(): 
    login_url = 'https://www.edline.net/InterstitialLogin.page' 

    with requests.Session() as s: 
     login_page = s.get(login_url) 
     csrf = get_csrf(login_page.text) 

     # username and password here 
     username = 'user' 
     password = 'pw' 

     login = {'screenName': username, 
       'kclq': password, 
       'csrfToken': csrf, 
       'TCNK':'authenticationEntryComponent', 
       'submitEvent':'1', 
       'enterClicked':'true', 
       'ajaxSupported':'yes'} 
     page = s.post(login_url, data=login) 

     # if this print a page inside, it's working 
     print page.text 

login() 
+0

Danke das hat funktioniert, aber jetzt versuche ich auf https://www.edline.net/UserDocList.page zuzugreifen? und ich habe 'r = s.get ('https://www.edline.net/UserDocList.page?') print (r.content)' aber es lädt die Seite nicht, sondern gibt eine Fehlermeldung aus. Ich vermute, dass es weiß, dass es keine echte Person ist. Kann ich etwas anders machen? –

+0

@CameronBurrows Fehler von der Website oder Code? – viviwill

3

Ich habe es hilfreich gefunden, einige Plugins von Firefox zu verwenden, um herauszufinden, was genau für das Webscraping passieren muss.

Sie können FFs Inspector-Funktion (Extras -> Web Developer -> Inspector) verwenden, um die Maus über einzelne Elemente zu bewegen.

Sie können auch das Selenium IDE-Plugin für Firefox bekommen (Holen Sie sich das mit dem silbernen Se mit einem Bleistift - nicht die Menge mit den grünen Puzzleteile Icons.) Wenn Sie es während Sie die Website navigieren, Sie kann sehen, was die Elemente sind.

Auf der InterstitialLogin.page, mit Selenium IDE, sehe ich die Login-Elemente sind:

ID = screenName <-- username 
ID = klcq   <-- password 
name = submitButton <-- submit 

Wenn Sie die Selenium-Pakete für Python verwenden, können Sie einen send_keys Befehl verwenden, wie:

userNameElement = driver.find_element_by_id('screenName') 
userNameElement.send_keys('Cameron') 
passWordElement = driver.find_element_by_id('klcq') 
passWordElement.send_keys('Burrows') 
submitButtonElement = driver.find_element_by_name('submitButton') 
submitButtonElement.click() 
+0

also wie würde ich dies in Python zur Anmeldung implementieren? –

+0

Der Code oben ist, wie Sie sich einloggen würden. Wenn Sie Ihre Frage bearbeiten können, um zu zeigen, welchen Code Sie bis jetzt haben, kann ich vielleicht spezifischer sein. – Suzanne