Seite 1 von 1

[gelöst] QHttp Suchergebnisse abfragen und auswerten

Verfasst: 20. Januar 2008 19:36
von mephistho
Hi,

ich häng grad bei einer QHttp-Sache. Hab ein wenig in der Suche rumgeschaut, aber nix passendes gefunden.

Konkrete Dateien (www.domain.de/datei.en) herunterladen klappt einwandfrei.

Aber wie siehts mit Ergebnissen von Suchabfragen aus? Die Browsereingabe "http://www.imdb.com/find?s=all&q=Transformers" liefert mir ja z.B. die Suchergebnisse zu dem Film. Die Seite hätte ich nu gern in meinem Programm. Nicht zum Anzeigen, sondern nur zum Parsen. Ich möchte mir da dann die Links zu den unterschiedlichen Suchergebnissen raussuchen und die dann anzeigen. Dann soll man sich eines der Ergebnisse aussuchen und die Daten der dann gelieferten Seite sollen für eine kleine eigene DVD-Datenbank abgespeichert werden - womit wir beim nächsten Problem wären:
Die Filminfos werden bei imdb.com nicht über exakte Pfade zu Dateien aufgerufen, sondern über Verzeichnisangaben (z.B. http://www.imdb.com/title/tt0418279/ für den aktuellen Transformers Film)

Hat jemand ne Idee, wie ich das realisieren könnte?

Dank & Gruß
meph

Verfasst: 20. Januar 2008 19:46
von PeterLustig
Du sendest mit QHttp die Anfrage, lädst damit den gesamten Quellcode der Seite in nen QString und parsest diesen. Wo ist das Problem?

Verfasst: 20. Januar 2008 19:48
von mephistho
So dachte ich mir das auch. Aber es kommt nix zurück, wenn ich die Anfrage mit http->get() abschicke?!

Verfasst: 20. Januar 2008 21:08
von upsala
Wie wird nichts zurückgeliefert? Verwendest du QHttp::get() mit oder ohne Device? Sind die Signale connected? Gibt es eine Fehlermeldung? Hast du dir das HTTP-Example schon mal angesehen, auf das die Doku verweist?

Verfasst: 21. Januar 2008 09:47
von mephistho
Sorry für die Informationsarmut.

Ich hab mich an dem Doku-HTTP-Beispiel orientiert. Ich verwende get also mit QFile als device. Habs halt für meine Anwendung angepasst, z.B. ProcessBar und statusLabel rausgenommen...Und darüber klappt der Download von konkreten Dateien ja auch ohne Probleme.
Wenn ich z.B. http://www.imdb.com/find übergebe bekomme ich auch die Suchseite - logisch...
Nur sobald ich die Argumente übergebe kommt nichts an.

Fehlermeldungen gibt es keine. Signals connected wie im Beispiel...

Wahrscheinlich müsste ich mir mal die Pakete anschauen, die hin- und hergehen, richtig? Mit Wireshark z.B....

Ich verstehe euch aber richtig, dass es generell kein Problem ist, dort mit Übergabeparametern zu arbeiten, ja?

Gruß
meph

Verfasst: 21. Januar 2008 12:15
von upsala
Warum sollte es? Die Übergabeparameter sind ja ein ganz normaler Bestandteil des Links...

Verfasst: 21. Januar 2008 19:18
von mephistho
Ja, davon bin ich auch ausgegangen.

Der Aufruf von Filmen über das Verzeichnis (also http://www.imdb.com/title/tt0418279/ für Transformers) funktioniert.

Die Suche hingegen klappt weiterhin nicht. Ich bekomme dann nur den Quelltext der "Suchseite", als hätte ich nur http://www.imdb.com/find eingegeben.

Ich steh aufm Schlauch und komm nicht runter.

Ich kann z.B. auch nicht Seiten vom Forum hier downloaden.
Wenn ich http://qtforum.de/forum/viewforum.php?f=1 angebe, bekomme ich die Seite, die mir sagt "Das ausgewählte Forum existiert nicht."
Er nimmt also nur die Eingabe bis zum Fragezeichen.

Muss ich da vielleicht irgendwas davor setzen, damit er das richtig verarbeitet?

Nochmals Dank
meph

Verfasst: 21. Januar 2008 19:57
von mephistho
Ich habs Problem jetzt gefunden.

Es lag daran, dass die Jungs im Qt-Example

"httpGetId = http->get(url.path(), file);"

verwenden und dieses url.path() nur den Part bis zum Fragezeichen zurückgegeben hat.

Habs mit Wireshark entdeckt und kanns nu umgehen.

Also allen noch einen schönen Abend....

Verfasst: 22. Januar 2008 13:08
von PeterLustig
Natürlich gibt path nur bis zum Fragezeichen zurück, denn was danach kommt gehört auch nicht mehr zum Pfad..