Delphi-PRAXiS
Seite 2 von 2     12   

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)

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 20:11 Uhr.
Seite 2 von 2     12   

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