2014-05-19 8 views
5

http://robobrowser.readthedocs.org/en/latest/api.htmlWie POST-Anfrage in robobrowser-Python

Ich versuche machen eine API mit browser.open(myurl) und sucht nach einem RB-Verfahren ähnlich wie requests.post(url,data=data) zu treffen.

seit Robobrowser auf der Spitze der Anfragen und beautifulsoup gebaut, so denke ich, es muss eine Möglichkeit, dies zu tun.

+0

Sie würden normalerweise die Form Funktionalität schreiben verwenden; Warum musst du überhaupt posten? –

+1

Sie meinen, die Seite verwendet AJAX-Anfragen von JavaScript? Verwenden Sie in diesem Fall 'response.session'. –

Antwort

4

Sie können wiederverwenden das requests.Session() Objekt eines RoboBrowser Objekt Ihrer eigenen POST s mit den gleichen Cookies zu tun:

response = browser.session.post(...) 

Der RoboBrowser Zustand wird jedoch nicht aktualisiert werden; Sie müssten das Objekt response an die Methode RoboBrowser._update_state() übergeben.

browser._update_state(response) 

Für AJAX-Anforderungen müssten Sie dies jedoch nicht tun.

Beachten Sie, dass zukünftige Versionen der Bibliothek ändern können, wie das funktioniert; Es ist keine dokumentierte Methode.

Jedoch normalerweise Sie würden auf einer Website veröffentlichen, weil Sie eine Formularübermittlung bearbeiten; Überlassen Sie dies der bereitgestellten Bibliotheksfunktionalität (RoboBrowser.get_form(), dann RoboBrowser.submit_form()).

+0

Ja, das müssten Sie ja tun. Ist das ein großes Problem? Sie müssten das gleiche tun, wenn Sie * nur * 'Anfragen 'verwenden würden. –

3

Ab Version 0.5.3 können Sie POST-Anfragen wie folgt an:

browser.open(url, method='post', data=data)

Und groben des Staates und Sitzung des Browsers wird automatisch aktualisiert.

Verwandte Themen