C++ , Interaktion mit Websiten
-
Hallo,
Ich hatte Ideen für ein Projekt und hatte das Programm in der OOD Phase gezeichnet. Mit Klassen und Objekte komm ich gut zurecht, aber nach meinen Vorstellungen, sollte das Programm mit Websiten interagieren können.
Beispiel:
rufe google.de auf, gebe in der Textbox etwas ein, drücke den Suchbutton, und lese Variablen aus ( zB. 2.590.000.000 Ergebnisse )Nun habe ich nicht viele Kenntnisse mit javascript und html, aber welche C++ Bibliotheken und Kenntnisse werden defür benötigt um ein solches Verfahren zu entwickeln ?
-
Du könntest dafür libcurl verwenden.
-
My_Ouzo schrieb:
OOD
Ist glaub das erste mal, dass ich die Abkürzung in freier Wildbahn gesehen habe
Ich glaube, du hast noch eine viel zu vage Vorstellung davon, wie das Web funktioniert. Es gibt verschiedene Schichten. Eine "Webseite" mit Buttons und Textboxen ist nur eine Darstellungsschicht. Aber es passiert ja etwas unten drunter. Wenn du auf einen Button drückst, werden entsprechende HTTP Anfragen formuliert. Die kannst du wahrscheinlich auch selber generieren, z.B. wie vorgschlagen mit libcurl. Dann kannst du den HTML Code, den du zurückbekommst parsen und auswerten. Muss aber alles nicht so einfach sein. Wenn die Seite erst mit JavaScript und Json zusammengebaut wird, wird es natürlich komplizierter. Vielleicht wäre es besser, eine definierte API zu suchen, die das machen kann, was du willst (die Google Search API gibts aber glaub ich nicht mehr).
Ich weiß jetzt nicht, obs gute Web Scrapping Bibliotheken für C++ gibt. Ist jetzt nicht unbedingt die beste Sprache für sowas. Für Python und Ruby gibts wohl ganz gute Bibliotheken, hab aber nicht viel damit gemacht.
Du musst aber erstmal selber verstehen, was du genau willst. Mit Webseiten interagieren ist sehr vage.
-
Dann bräuchte ich 2 Programme schreiben die miteinanber interagieren, denn das Webzeugs ist nicht die Hauptaufgabe des Programms.
Und außer C++ ( und Java ) kenne ich keine andere Sprache.
Ich versuchs mal mit libcurl, und bei weiteren Fragen melde ich mich
-
Ich bin grad verzweifelt daran, libcurl in visual studio 2013 einzurichten.
Normalerweise genügt es Einstellungen an den "Include Verzeichnissen" / "Bibliotheken Verzeichnissen" vorzunehmen und Zusätzliche Abhängigkeiten festzulegen. Trotzdem kommt es zu Fehlermeldungen beim Compilieren eines Programmes.Beisp.:
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_global_init" in Funktion "_main".
Arbeitet denn jmd. von euch mit VS mit libcurl ?
-
My_Ouzo schrieb:
und Zusätzliche Abhängigkeiten festzulegen.
Du drückst dich schon wieder zu ungenau aus. Was heißt jetzt "Abhängigkeiten"? Du bekommst einen Linker Fehler, also musst du gegen die entsprechende Lib linken. Wie die bei libcurl genau heißt weiß ich nicht, aber so viele werdens schon nicht sein. Also, nicht nur das zusätzliche Verzeichnis angeben, sondern auch den Namen der lib. Hast du das gemacht?
-
Ich hab jetzt alles überprüft, und es kommt noch eine letzte Fehlermeldung
Ist anscheined auch ein Linker Fehlererror LNK1104: Datei "E:\C++Libaries\libcurl\lib.obj" kann nicht geöffnet werden.
Die Datei existiert aber nicht nur in dem Verzeichniss, sondern generell nicht.
-
Ganz ehrlich: da wäre zB Selenium einfacher und sinnvoller zu verwenden. Oder mit Python gibt es zB Scrapy als nettes Framework dafür.
Das spart enorm viel Aufwand und macht es einfach komplizierte Vorgänge zu machen.
Wenn es unbedingt C++ sein muss ist wird es etwas komplizierter - da es keine wirklich guten HTML Parser gibt (eigentlich gibt es nur libhubbub). Da ist es wohl am einfachsten per Regex sich die Daten zu holen die man braucht.
Generell ist die Komplexität hier natürlich um einige Dimensionen größer.