Ajax Inhalt einer Webseite auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Sunjy
User
Beiträge: 31
Registriert: Dienstag 3. März 2009, 19:13
Wohnort: 127.0.0.1
Kontaktdaten:

Hi, also mein Problem besteht darin, dass ich auch einer Seite den Quelltext auslesen möchte, aber an einer Stelle Ajax verwendet wird und ich dann eben nicht den Quelltext bekomme von dem was ich im Browser vor mir sehe sondern den Quelltext indem drin steht "Bitte einen Moment warten, die liste wird gleich per Ajax erzeugt"...

hat einer ne Idee wie ich das trotzdem irgendwie auslesen kann ?

Falls es von Interesse ist, ich verwende mechanize bisher.

Sunjy
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Die einzige mir bekannte Lösung geht über Qt.
lunar

Ajax erzeugt letztlich auch nur normale HTTP-Anforderungen. Wenn die Javascript-Abläufe nicht zu komplex sind, kannst diese über das Lesen des Quelltexts oder das Sniffen des Verkehrs nachvollziehen und dann innerhalb des Python-Programms re-implementieren und so die Liste direkt ohne ohne das Ausführen von Javascript abfragen.

Wenn das nicht reicht oder aus welchen Gründen auch immer nicht möglich ist, gibt es neben Webkit auch noch Selenium, ein Addon zur Automatisierung des Firefox. Der Nachteil daran ist, dass es eine laufende Instanz des Browser benötigt, und daher nicht in jeder Umgebung sinnvoll eingesetzt werden kann.
Benutzeravatar
Sunjy
User
Beiträge: 31
Registriert: Dienstag 3. März 2009, 19:13
Wohnort: 127.0.0.1
Kontaktdaten:

DasIch hat geschrieben:Die einzige mir bekannte Lösung geht über Qt.
wäre im Grunde kein Problem, ich habs jetzt mal so eingebaut wie ich dachte es wird was aber naja ich kenn mich mit QT auch nicht aus, dementsprechend gings auch net.

@lunar:
naja ich könnte das mit dem selenium ja auf einem portable ff laufen lassen... die sache ist nur die, dass ich ständig den proxy welchen muss und das eben über mechanize schön einfach geht.

und ansonsten kann ich leider auch nicht nachvollziehen und re-implementieren ^^ bin was ajax/javascript angeht einfach unerfahren weil ich damit nie gearbeitet habe und es wohla uch nicht wirklich werde. das einzige was ich im quelltext fand ist das: src="AJAX.php?Lid=232509&Typ=2&Prefix="
aber wirklich weiter helfen tuts mir nicht...
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Installier dir halt mal zB Firebug, dann schau auf die geladenen Dateien, dann siehst du recht einfach, was du dann in deinem Programm laden musst.
Benutzeravatar
Sunjy
User
Beiträge: 31
Registriert: Dienstag 3. März 2009, 19:13
Wohnort: 127.0.0.1
Kontaktdaten:

das mit firebug versteh ich einfach nicht, ich finde daran eigentlich nichts was mir mehr zeigt als den quelltext :/
und der bringt mir net viel wenn ich net weis wie ich mechanize (oder sonst was) dazu bringt mir den quelltext mit dem ajax dingens auszugeben.
the-wiz
User
Beiträge: 8
Registriert: Mittwoch 13. Mai 2009, 16:58

Klick auf Firebug-Icon -> Konsole -> Konsole aktivieren

Du siehst welche XMLRequests per Javascript gemacht werden...
Meistens werden diese an PHP-Dateien mit POSTs oder GETs geschickt.

Auf Network kannst du ebenfalls sehen was mit XMLRequest "requestet" wird.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, und in Firebug bekommt man auch den _aktuellen_ DOM-Tree angezeigt, nicht so wie die "Quelltext anzeigen"-Funktion.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Sunjy
User
Beiträge: 31
Registriert: Dienstag 3. März 2009, 19:13
Wohnort: 127.0.0.1
Kontaktdaten:

Okay danke, ich habe jetzt zumindest mal einen Link und anscheinend funtioniert es mit "get". aber wie bringe ich mechanize nun dazu mir das anzuzeigen im Quelltext? die seite so öffnen geht nicht, da ich dann ein access denied zurück bekomm.

/edit: kann sein dass ich heute nimmer ins forum schau muss leider ziemlich viel lernen, morgen dann ;)
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Schau dir vielleicht mal DOMForm an. Das versteht auf Wunsch auch JavaScript und integriert genau wie mechanize das Modul ClientForm zum Ausfüllen von Feldern. HTML-Code abfragen kann man damit auch und man bekommt den DOM-Tree.
Antworten