HTML Code einlesen
-
naja es soll keine Datei sein. Ich soll eine URL eingeben können und von der Seite soll dann halt der HTML code ausgelesen werden und die Tags gezählt werden. Noch ist das problem das ich überhaupt keine Ahnung hab wie ich es schreiben soll nach den Tags suchen und sie dann zu speichen und so weiter
-
Ja wo ist das Problem konkret? Wo ist dein Ansatz?
Bsw könntest du hier das (FAQ
) nutzen, um dir erstmal den Inhalt der Seite zu holen. Dann geh doch einfach da mit der Find-Funktion von CString durch und such nach den entsprechenden Tags.Wobei du bei letzterem halt dir überlegen musst, ob du von vornherein alle möglichen Tags vorgibst, oder du einfach guckst ob da was zwischen < und > steht ...
Edit
Ich seh gerade auf deinem Bild das du auch ausgeben willst, was bei bsw. einem Anker als Hyperreferenz angegeben ist? Dann wirds aufwendiger ...
-
Das Problem ist ich habe keinen Ansatz

Ich hab noch nie mit CString gearbeitet und arbeite auch noch nicht wirklich lange mit der Fensteranwendung. Ich hab einfach keine Ahnung wie ich es machen soll das ich den HTML code, von einer Seite die ich eingebe, in einen String schreibe. Und noch viel weniger weiß ich wie ich dort das die Tags suchen und zählen kann.
Es gibt noch mehr sachen die ich machen muss aber die Probleme oben sind die Sachen die ich zu erst hinbekommen will.
-
Fang einfach an, das sieht schwerer aus, als es ist.
CString ist eine wirklich hilfreiche und rel. intuitive Klasse.
Zählen kann man übrigens auch prima mit Replace, das gibt einem nämlich zurück, wie viele Stellen ersetzt wurden.

Mach für den Anfang mal folgendes:
Lies die Datei ein und gib sie als TRACE oder mit AfMessageBox wieder aus.
Dann siehst du bestimmt schon, wie du weiter machen kannst.
-
Hmm und wie du das einlesen kannst sollte in dem Link der hinter "das" in meinem letzten Post hinterlegt war stehen ...
-
Hi
ich habe es jetzt hinbekommen den HTML code einer Beliebigen seite auszugeben. Aber wie sollte die Funktion ungefähr aussehen damit ich jetzt z.B. das [TITTLE] Tag auslesen kann? Ich hab zwar ne grobe vorstellung hab aber keine Ahnung wie ich das in C++ Sprache schreiben soll.
MfG
-
Schreib doch mal deine Vorstellung hier auf.

Und zeig auch mal, was du schon hast, damit Erklärungen darauf aufbauen können.
-
Also bis jetzt hab ich Folgendes geschrieben.
Damit kann halt eine URL eingeben und den HTML Code in ein Edit Feld schreiben.
UpdateData(true); CString x; char szBuff[2] = {0}; m_code = " "; CInternetSession session("Horst"); CStdioFile* pFile = NULL; pFile = session.OpenURL("http://" + m_url); while(pFile->Read(szBuff,1) > 0) { m_code = m_code+ szBuff; } delete pFile; session.Close(); m_liste.InsertColumn(0,"Tags",LVCFMT_LEFT,100); m_liste.InsertColumn(1,"Info", LVCFMT_LEFT,70); UpdateData(false);Mit dem m_liste.InsertColumn schreib ich halt den Text "Tags" und "Info" in ein List Control. Hier sollen später auch die verschieden Tags eingetragen werden.
Meine Idee ist es halt das bis z.B. <TITTLE> einlese und dann soll er alles einlesen was danach kommt bis </TITTLE> kommt. Und was da zwischen steht soll dann halt später ausgegeben werden. Aber ich hab keine Ahnung wie ich das in C++ schreiben soll.
-
CString bietet die Methode Find(), mit der du bestimmte Zeichen oder Zeichenketten finden kannst und Mid(), die einen Ausschnitt aus dem String herausgreifen kann.
-
Tja, da es doch kein stumpfes Zählen ist, bleibt dir kaum was anderes übrig als zu parsen.
Du kannst m_code in einer Schleife bis m_code.GetLengh() durchlaufen und jedes Zeichen angucken.
Ich gehe jetzt mal davon aus, dass die Seite keine Fehler aufweist (sonst wirds kompliziert).Wenn du ein < findest, beginnt ein Tag -> merken und mitschreiben.
Wenn du ein > findest und grade am mitschreiben warst: fertig mit Anfangstag (Tag merken) und nun kommt das dazwischen. (Ist das die Info?)
Wenn du ein < findest und gleich danach ein /, ist es ein Endetag. Mitschreiben und gucken obs zu einem bis eben gefundenen Anfangstag passt. (Anfangstags solltest du in ein CStringArray packen.)
Passt? Prima: Info ausgeben und das Anfangstag aus dem Array löschen. (Is ja erledigt.)Oder, wenn du genau weißt, welche Tags vorkommen, kannst du auch mit Find arbeiten (wie CStoll schreibt). Ich vermute nur, du "weißt" gar nicht, was du suchen musst.

-
Doch ich weiß schon was ich suchen muss. Undzwar TITTLE, B, IMG und der rest is egal erstmal die oben hinbekommen
-
Nagut, dann kannst du ja prima mit Find und Mid arbeiten.

Hast du dir die Befehle schon angeschaut?Achja: Meinst du wirklich TITTLE? Mit TT?

Du bist da zu konsequent für einen Tippfehler.
-
Hi
ist zwar etwas länger her aber ich hab das Prog. jetzt soweit fertig. Jetzt wollte ich noch wissen ob es eine Funktion gibt mit der ich eine Datei erstellen kann und in die dann den Inhalt eines Strings schreiben kann.
-
std::ofstream ...