2014-03-02 16 views
5

Mit Mechanize (und Python) kann ich auf eine Website gehen, einloggen, ein Formular finden, einige Antworten ausfüllen und dieses Formular einreichen. Ich weiß jedoch nicht, wie ich die "Antwort" -Seite öffnen kann - das heißt, die Seite, die automatisch geladen wird, sobald Sie das Formular abgeschickt haben.Wie erhalte ich die URL der Antwort-Seite, nachdem ich ein Formular in mechanize eingereicht habe?

Hier ist der Python-Code:

br.select_form(name="simTrade") 
br.form["symbolTextbox"] = "KO" 
br.form["quantityTextbox"] = "10" 
br.form["previewOrderButton"] 

preview = br.submit() 
print preview.read 

Mit dem obigen Code, kann ich sehen, was die Antwortseite hält. Aber ich möchte diese Seite öffnen und mit ihr interagieren. Wie kann ich das mit Mechanisieren machen? Vielen Dank.

EDIT: So beantwortete ich meine eigene Frage bald nach dem Posten dieses. Hier ist der Code:

br.select_form(name="simTrade") 
br.form["symbolTextbox"] = symbol 
br.form["transactionTypeDropDown"] = [order_type] 
br.form["quantityTextbox"] = amount 
br.form["previewOrderButton"] 

no_url = br.submit() 
final = no_url.geturl() 
x = br.open(final) 
print x.read() 

Um den HTML-Quellcode der Antwortseite zu erhalten (die Seite, die geladen wird, wenn Sie ein Formular einreichen), hatte ich einfach die URL br.submit zu erhalten(). Und dafür gibt es eine eingebaute Mechanisierungsfunktion, geturl().

+0

Ich verstehe nicht, ist die Seite standardmäßig nicht geöffnet? – Dunno

+2

Die Seite bleibt offen, aber ich möchte die URL dieser Seite abrufen und über Mechanize auf ihren HTML-Code zugreifen. Dadurch kann ich mit der Seite weiter interagieren. – user1822552

+1

Fügen Sie Ihre Antwort in die Antwortbox unten auf der Seite ein. und akzeptiere es – esnadr

Antwort

0

Die URL der neuen Seite abrufen und öffnen ist nicht erforderlich. Sobald das Formular abgeschickt wurde, öffnet sich die neue Seite automatisch und Sie können mit dem gleichen mechanisierten Browser-Objekt interagieren.

Mit dem Original-Code aus Ihrer Frage, wenn Sie das Formular und speichern Sie alle Links auf der neuen Seite in einer Liste vorlegen wollte:

br.select_form(name="simTrade") 
br.form["symbolTextbox"] = "KO" 
br.form["quantityTextbox"] = "10" 
br.form["previewOrderButton"] 
br.submit() 

# Here we store all links on the new page 
# but we can use br do any necessary processing. 
links = [link for link in br.links()] 

# This will take us back to the original page with the "simTrade" form. 
br.back() 
0

Die OP Antwort ist ein wenig verworren und führte zu einer AttributeError . Dies funktionierte besser für mich:

br.submit() 
base_url = br.geturl() 
print base_url 
Verwandte Themen