Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Text aus Website (https://www.delphipraxis.net/180767-text-aus-website.html)

Kolone 16. Jun 2014 15:31

Text aus Website
 
Hallo Allerseits,
ich möchte einen Text in ein Programm haben, der von einer Website ist, das heißt, dass sobald die Website sich ändert der neue Text dort steht. Über diesen IdHttp Komponent habe ich schon gehört, nur wie schaffe ich es dass der Text der Website und nicht der HTML Code kopiert wird?
Viele Grüße
Kolone

mkinzler 16. Jun 2014 15:52

AW: Text aus Website
 
Der Webserver liefert nun mal HTML-Code aus. Du musst den Code parsen, um an die für Dich wichtigen daten zu Gelangen.

Kolone 16. Jun 2014 16:05

AW: Text aus Website
 
Danke :) Wie genau kann man so ein Text parsen, bzw was ist die einfachste Möglichkeit so etwas zu tun?

Perlsau 16. Jun 2014 22:24

AW: Text aus Website
 
Zitat:

Zitat von Kolone (Beitrag 1262494)
Danke :) Wie genau kann man so ein Text parsen, bzw was ist die einfachste Möglichkeit so etwas zu tun?

Genau kann und möchte ich es dir nicht sagen, denn das wäre ein fertiger Code, den du nur kopieren mußt, und dafür lieferst du zu wenig Informationen. Außerdem ist ja deine Aufgabe, den Parser zu implementieren.

Ungenau: Du mußt dich mit der Sprache HTML auseinandersetzen und, nachdem du das kapiert hast, den Text aus dem HTML-Text auslesen. Wenn du auch nicht weißt, wie man Teilstrings in einem String findet, dann solltest du vielleicht erst einmal Grundlagen erlernen. Wenn dir das zuviel ist, dann kann dir nicht geholfen werden.

Sir Rufo 16. Jun 2014 23:15

AW: Text aus Website
 
Es gibt auch schon Antworten hier im Forum

http://www.delphipraxis.net/88200-ht...-einlesen.html

himitsu 16. Jun 2014 23:19

AW: Text aus Website
 
Zitat:

Zitat von Perlsau (Beitrag 1262530)
Wenn dir das zuviel ist, dann kann dir nicht geholfen werden.

Es gibt hier und anderswo eine Abteilung, da kann man sich Programme gegen entsprechende Vergütung schreiben lassen
oder sich eine private Schulung kaufen.

Oder man nimmt seine weiteren (Teil)Fragen, geht damit in die Forensuche und sucht die vorhandenen Anworten raus,
oder fragt geziehlt, falls es noch keine Antwort gibt.

Kolone 19. Jun 2014 11:18

AW: Text aus Website
 
Gut, wenn man keine Hilfe hier bekommt...
-.-

Perlsau 19. Jun 2014 12:28

AW: Text aus Website
 
Was hast du denn bereits unternommen, um die gewünschte HTML-Seite auszulesen?

Kolone 20. Jun 2014 09:57

AW: Text aus Website
 
Ich habe ein IDHttp Komponent genommen und eine Memo, die später nicht sichbar ist. Ich weiß das ist nicht grade die Meisterlösung. Der Text der Memo ist der Quellcode der Website. Mit Pos habe ich dann versucht den HTML Befehl zu finden und somit das zu löschen was die Befehlszeilen von HTML sind, sodass nur noch der String übrigbleibt. Das ist leider nicht so die hervorragende Lösung und deswegen wollte ich wissen, ob es eine Komponente schon gibt, die eben das schon macht oder ob die IDhttp Komponente den Befehl hat nur die Strings einer HTML Seite auszulesen.

Kolone 20. Jun 2014 10:00

AW: Text aus Website
 
Es ist außerdem ziemlich blöd, weil im HTML Code öfters mehrmals doppelte Befehle auftauchen :)

Puke 20. Jun 2014 10:04

AW: Text aus Website
 
Versuche es mal mit Delphi-Referenz durchsuchenStringReplace

p80286 20. Jun 2014 10:37

AW: Text aus Website
 
Zitat:

Zitat von Kolone (Beitrag 1263019)
Es ist außerdem ziemlich blöd, weil im HTML Code öfters mehrmals doppelte Befehle auftauchen :)

??? Mir scheint Du hast dich noch nicht alzu oft mit HTML auseinander gesetzt.

Der erste Schritt sollte sein, die Stellen, die sich ändern, bzw. ändern könnten (sofern Du es weißt) zu identifizieren.

Dann such Dir eine markante Markierung dann hast Du Futter für Dein
Delphi-Quellcode:
pos
.

Eine andere Möglichkeit wäre alles zwischen '<' und '>' zu löschen, dann sollte nur noch der nackte Text übrig bleiben. Was allerdings in den allermeisten Fällen, nur noch Bedeutungshack übrig läßt.

U.U. findest Du hier noch ein paar Infos, die Dir weiterhelfen.

Gruß
K-H

Sir Rufo 20. Jun 2014 11:23

AW: Text aus Website
 
Zitat:

Zitat von p80286 (Beitrag 1263023)
Zitat:

Zitat von Kolone (Beitrag 1263019)
Es ist außerdem ziemlich blöd, weil im HTML Code öfters mehrmals doppelte Befehle auftauchen :)

??? Mir scheint Du hast dich noch nicht alzu oft mit HTML auseinander gesetzt.

Der erste Schritt sollte sein, die Stellen, die sich ändern, bzw. ändern könnten (sofern Du es weißt) zu identifizieren.

Dann such Dir eine markante Markierung dann hast Du Futter für Dein
Delphi-Quellcode:
pos
.

Eine andere Möglichkeit wäre alles zwischen '<' und '>' zu löschen, dann sollte nur noch der nackte Text übrig bleiben. Was allerdings in den allermeisten Fällen, nur noch Bedeutungshack übrig läßt.

U.U. findest Du hier noch ein paar Infos, die Dir weiterhelfen.

Gruß
K-H

Wer mit Delphi-Referenz durchsuchenPos an eine HTML Datei dran will, der hat sich aber auch nicht sehr oft mit HTML auseinandergesetzt :stupid:

Nochmals möchte ich auf den Beitrag http://www.delphipraxis.net/88200-ht...-einlesen.html verweisen, da wird eine HTML Datei auseinandergenommen.

Und wenn man die spannende Stelle gefunden hat, dann geht das ganz einfach mit
IHTMLElement.innerText

Ein Blick in die Doku lohnt auch immer
IHTMLDocument2 Interface
und hier im Forum und bei Tante google gibt es auch reichlich Beispiele

Christian Seehase 20. Jun 2014 12:11

AW: Text aus Website
 
Zitat:

Zitat von Sir Rufo (Beitrag 1263031)
Wer mit Delphi-Referenz durchsuchenPos an eine HTML Datei dran will, der hat sich aber auch nicht sehr oft mit HTML auseinandergesetzt :stupid:

Ja, oder so intensiv, da klar ist, dass man die gewünschte Stelle tatsächlich mit Delphi-Referenz durchsuchenPos eindeutig finden kann. :mrgreen:

Ich werf dann noch einmal das hier Klasse für HTML-Dokument ins Rennen

p80286 20. Jun 2014 12:27

AW: Text aus Website
 
Ich hatte den Eindruck, das der TE auf Teufel komm raus, sich mit dem HTML-Text beschäftigen will, wenn es denn unbedingt sein muß sind pos und Konsorten erst einmal die Mittel der Wahl.

Je nachdem welche Seiten er auf Änderung prüfen will, würde es schon ausreichen den (Alt-)Text zu speichern und den (Neu->Text) mit ihm zu vergleichen.

Solange man die entsprechenden Daten nicht kennt, ist das alles nur Spökenkiekerei.

Gruß
K-H

Perlsau 20. Jun 2014 16:46

AW: Text aus Website
 
Zitat:

Zitat von Kolone (Beitrag 1263018)
Ich habe ein IDHttp Komponent genommen und eine Memo, die später nicht sichbar ist. ... Der Text der Memo ist der Quellcode der Website.

Da nimmt man besser eine Stringliste, da du das Memo ja sowieso nicht anzeigen lassen möchtest.

Zitat:

Zitat von Kolone (Beitrag 1263018)
Mit Pos habe ich dann versucht den HTML Befehl zu finden und somit das zu löschen was die Befehlszeilen von HTML sind, sodass nur noch der String übrigbleibt.

Versucht hießt soviel wie mißlungen? Könntest du dich vielleicht ein wenig deutlicher ausdrücken? Am besten, du zeigst hier einmal, was du gemacht hast, und erklärst, was dabei herauskommt bzw. welche Fehlermeldungen erscheinen.

Zitat:

Zitat von Kolone (Beitrag 1263018)
Das ist leider nicht so die hervorragende Lösung und deswegen wollte ich wissen, ob es eine Komponente schon gibt, die eben das schon macht oder ob die IDhttp Komponente den Befehl hat nur die Strings einer HTML Seite auszulesen.

Es gibt sog. HTML-Parser, aber die sind auch nicht leichter zu bedienen als das Delphi-Bordwerkzeug. Die meisten Freeware-Parser, die ich schon ausprobiert hatte, waren buggy, und die guten kosten wohl eine Stange Geld, denn so ein HTML-Parser ist kein Kinderspiel.

Was meinst du mit "nur die Strings einer HTML Seite"?

Eine fertige Komponente, die dir genau das heraussucht, was du benötigst, gibt es meines Wissens nach nicht. Da mußt du schon selber Hand anlegen.

Hast du dich denn inzwischen ein wenig mit der Sprache und der Syntax von HTML befaßt?

Hast du inzwischen einmal den Link von Sir Rufo studiert, der auf eine ähnliche Anfrage hier im Forum verweist?

Zitat:

Zitat von Kolone (Beitrag 1263018)
Es ist außerdem ziemlich blöd, weil im HTML Code öfters mehrmals doppelte Befehle auftauchen

In deinem Programm kommen doch auch einige Befehle öfter vor, oder etwa nicht? HTML-Code ist auch nichts anderes als ein Programmcode. Was soll daran blöd sein? Welche Schwierigkeiten hast du konkret damit?

Weiter oben hattest du geschrieben:
Zitat:

Zitat von Kolone (Beitrag 1263018)
Gut, wenn man keine Hilfe hier bekommt...

Wenn du dich weiterhin so unkooperativ zeigst und auf hilfreiche Beiträge nicht eingehst bzw. die angebotene Hilfe nicht annimmst, kann dir leider nicht geholfen werden – außer es findet sich einer, der dir deinen Code hier reinschreibt, was eher unwahrscheinlich ist, denn man weiß ja so gut wie nichts darüber, was du eigentlich genau machen möchtest, nicht einmal die URL zu der Seite, die du auszulesen gedenkst.

machstuhl 23. Jun 2014 16:22

AW: Text aus Website
 
Delphi-Quellcode:
var
    RegExStr : String; // Suchbegriff
    RegEx : TRegEx;
    MatchCollection : TMatchCollection; //Speichert die gefundenen Matches
    i: Integer;
    HTTP : TIdHTTP;
    quelltext: String;
    temp_date : TDate;
begin
  //  Quelltext der Lottoseite lesen
  HTTP := TIdHTTP.Create(nil);
  try
    with HTTP do
      begin
        HandleRedirects := True;
        Request.ContentLength := -1;
        Request.Accept := 'text/html,*/*';
        HTTPOptions := [hoForceEncodeParams];
      end;

  temp_date := StrToDate(Datum);
  Datum := FormatDateTime('dd.mm.yyyy',temp_date);
  //ShowMessage(Datum);
  quelltext := HTTP.Get('http://www.sachsenlotto.de/mskp/user/lottoresults/lottoresultsshow.do?ziehungsDatum='+Datum+'#');

  except
    on E:exception do ShowMEssage(e.Message);

  end;
  FreeAndNil(HTTP);

  // Mummer 1 bis 6 bekommen und speichern
  RegExStr := '<span class="lottonumberbig">(\d*)</span>';
  RegEx := TRegEx.Create(RegExStr,[roSingleLine,roIgnoreCase]);
  MatchCollection := RegEx.Matches(quelltext);
mit diesem code lese ich die sich die lottozahlen für ein bestimmtes datum aus.
den code habe ich ursprünglich von einem anderen user der delphi-praxis.

ich denke mit den regular expressions könntest du bei deinem problem weiterkommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz