PYTHON SCRAPY Kann keine Informationen an Formulare senden,

8

Ich denke, dass ich sehr großen Gefallen fragen werde, wenn ich mit diesem Problem mehrere Tage kämpfe. Ich habe alles versucht (in meinem besten Wissen) und immer noch kein Ergebnis. Ich mache etwas falsch, kann aber immer noch nicht herausfinden, was es ist. Also vielen Dank an alle, die bereit sind, zu diesem Abenteuer zu gehen. Das wichtigste zuerst: Ich versuche, POST-Methode zu verwenden, um Informationen zu dem Formular zu senden, das sich auf delta.com befindet Wie immer bei diesen Websites ist es kompliziert, da sie sich in den Sitzungen und Cookies und Javascript befinden, so dass es dort Probleme geben kann. Ich verwende ein Codebeispiel, das ich in stackoverflow gefunden habe: Verwenden von MultipartPostHandler zum Senden von Formulardaten an Python mit Python Und hier ist mein Code, den ich für die Delta-Webseite optimiert habe.

%Vor%

Wenn ich Spinne befehle, im Terminal zu kriechen, sehe ich:

%Vor%

Wenn Sie mit Beispiel von Verbindung vergleichen, sehe ich nicht, dass ich POST-Methode machte, selbst wenn ich fast den gleichen Code verwende. Ich habe sogar versucht, mit sehr einfachen HTML / PHP-Formular von W3schools, die ich auf dem Server platziert, aber das gleiche dort. Was auch immer ich getan habe, nie geschafft, POST zu erstellen. Ich denke, das Problem ist einfach, aber da nur Python-Wissen, das ich habe, ist Scrapy und alle Scrapy, was ich online gefunden habe (ich es ist gut dokumentiert) und von Beispielen, aber immer noch ist es nicht genug für mich. Wenn also jemand wenigstens den richtigen Weg zeigen könnte, wäre das eine große Hilfe.

    
Vy.Iv 01.07.2013, 11:38
quelle

1 Antwort

11

Hier ist ein Arbeitsbeispiel für die Verwendung von Request.from_response für delta.com :

%Vor%

Sie haben falsche Spider-Methoden verwendet, plus allowed_domains wurde falsch gesetzt.

Aber trotzdem verwendet delta.com dynamische Ajax-Aufrufe zum Laden des Inhalts - hier beginnen Ihre Probleme. Z.B. response in parse1 Methode enthält keine Suchergebnisse - stattdessen enthält es einen HTML-Code zum Laden von AWAY WE GO. ARRIVING AT YOUR FLIGHTS SOON Seite, auf der die Ergebnisse dynamisch geladen werden.

Im Grunde sollten Sie mit Ihren Browser-Entwicklertools arbeiten und versuchen, diese Ajax-Aufrufe in Ihrer Spinne zu simulieren oder Werkzeuge wie selen zu verwenden verwendet den echten Browser (und Sie können ihn mit scrapy kombinieren).

Siehe auch:

Ich hoffe, das hilft.

    
alecxe 01.07.2013, 19:25
quelle