AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Position von Text/Links in einer HTML Datei finden
Thema durchsuchen
Ansicht
Themen-Optionen

Position von Text/Links in einer HTML Datei finden

Ein Thema von Hiele · begonnen am 18. Sep 2007 · letzter Beitrag vom 18. Jan 2008
Antwort Antwort
Seite 1 von 3  1 23      
Hiele

Registriert seit: 21. Feb 2005
Ort: Berlin
16 Beiträge
 
Delphi 6 Enterprise
 
#1

Position von Text/Links in einer HTML Datei finden

  Alt 18. Sep 2007, 14:26
Moin zusammen,

ich such mich jetzt schon 2 Wochen bucklig nach einer Möglichkeit
den Text einer HTML Datei (Plaintext) nicht nur raus zu filtern,
sondern auch die Position der einzelnen Texte (Position des ersten Buchstabens im String).

Grund ist der, das ich für eine Webabfrage eine HTML Datei analysieren will/muss.

Dazu muss ich wissen an welcher Position ein Text/Link in der HTML Datei ist.

Ich krepel mir schon ein ab eine eigene while Schleife zu basteln, doch es gibt
einfach zu viele Ausnahmen.

Habt ihr vielleicht für mich einen kleinen Tipp wonach ich noch so suchen kann/einlesen sollte?

Habt Dank vorab
Hiele
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Position von Text/Links in einer HTML Datei finden

  Alt 18. Sep 2007, 17:45
Hallo,

irgendwie habe ich das Gefühl, dass dieser Thread für dich interessant sein könnte: Website durchsuchen

Grüße vom marabu
  Mit Zitat antworten Zitat
Hiele

Registriert seit: 21. Feb 2005
Ort: Berlin
16 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 09:04
Hi marabu,

danke für deine erste Hilfe - wie schon öffters

Diese Funktion nutze ich auch schon um die Links zu ermitteln.
Aber sie hilft mir nicht den Text mit Posion zu finden.

Vielleicht habe ich auch zu wenig Grundlagen vermittelt.

Also:

1. Es gibt einen LinuxServer von Gira für Hausautomatisierung
2. Dieser kann Webabfragen durchführen um z.B. Wetterdaten aus dem Internet für die
Visualisierung bereit zu halten.
3. Um so eine Webabfrage für den Server zu erstellen, muss der User kompliziert
den Quelltext einer HTML Datei durchfosten um die Stelle zu finden die der
Server ein eine Variable schreiben soll.
4. Grundlegend funktioniert es folgendermaßen:

a. Öffne Website
b. Lese soviele beliebige Anzahl an Daten (Zeichen) bis du folgende Zeichenkette findest (z.B. 'href="')
c. Dann speichere folgende Zeichen in Variable X
d. ... bis du folgende Zeichen findest (z.B. '">')

5. Um jetzt, wie im unternen Beispiel an Quelltext den zweiten Link zu finden (default.html)
muss der User bei der Abfrage darauf achten, dass er wie in b. beschrieben eine "Finde Vorgabe",
machte die bis zum Zweiten Link eindeutig ist. Hier: 'target="Hauptframe2" href="'

6. Ich möchte es dem User leicht machen und eine Webabfrage ohne Quelltext Durchsuchung zu erstellen.
Dafür soll eine Liste erstellt werden mit den Plaintexten und Links und Bilder, die dann per Drag&Drop
ausgesucht werden. Das Programm erstellt dann die Abfrage automatisch für den Server.
Damit dann die Abfrage erstellt werden kann, muss das Programm den Quelltest nach dem gewünschten
durchsuchen den Vor und Nachtext finden und sicherstellen, das der Vortext eindeutig und "unique" ist.

Nur Beispiel:
Delphi-Quellcode:
<BODY ID="index">
<CENTER>
<TABLE style="height:54px;" cellspacing="0" cellpadding="0" border="0">
<TR><TD valign="middle">

<TABLE style="width:720px;" cellspacing="0" cellpadding="0" border="0">
<TR>

<TD style="width:31px;">
<a target="Hauptframe1" href="default1.html" onmouseover="document.up.src=up1.src" onmouseout="document.up.src=up0.src" target="_parent">
[img]res/up.gif[/img]</a></TD>
<TD style="width:20px;" align="center">
[img]res/hdr_left.gif[/img]</TD>

<TD align="center" valign="middle" style="background:url('res/hdr_mid.gif');" class="title" nowrap="nowrap">

[url="default2.html"]hiele.de[/url]

</TD>
<TD style="width:20px;">
Hoffe ist jetzt etwas klarer.

Für eine Lösung biete ich eine Flasche guten Wein. (Zeigt meine Verzweifelung )

Gruß
Hiele
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 09:38
Hallo Hiele,

ich fürchte ich verstehe noch nicht ganz. Du möchtest eine Programmfunktion anbieten, mit der ein Benutzer eine beliebige selbstgeschriebene HTML-Seite einlesen kann, dann eine Liste der Links abgeboten bekommt und dort einen Link auswählen kann, der durch eine Abfrage bei einem Wetterdienst ersetzt wird?

Freundliche Grüße
  Mit Zitat antworten Zitat
Hiele

Registriert seit: 21. Feb 2005
Ort: Berlin
16 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 10:53
Hi marabu,

... fast. Normalerweise muss der Benutzer für eine Webabfrage (egal welche Seite er abfragen möchte)
z.B. wetter.com, den Quelltext per Hand durchforsten um die Abfrage wie oben beschrieben Punkt 4 a-d
zu erstellen.

Also wenn er z.B. die aktuelle Temperatur in eine Variable packen will, um sie auf der Visu anzuzeigen,
erstellt er eine Abfrage nach dem Schema:

Durchsuch den Quelltext von http://wetter.com/index.html bis zur Stellte <span class="WXHeadline">
dann speichere die Daten die folgen in der Variable bis zur Stelle </span>

Sprich das Programm muss den Quelltext von Anfang an durchsuchen, bis die gewünschte Information (hier die Tagestemp.)
gefunden wurde (Der Benutzer sagt ja meinem Programm, was er ermittel will, da das Programm vorher die Website analysiert
und dem Benutzer alle sinnvollen Information (Texte Bilder Links etc.) zusammenstellt)

Um diesen Wert/Text nun für den Server im Quelltext auffindbar zu machen, muss in der Abfrage der Teil vor und nach
der gewünschten Information in der Abfrage gespeichert sein.

Mein Programm bekommt also die Info: Ich will den Tempwert. Daraufhin sucht sich mein Programm den Teil vor und nach aus
dem Quelltext und stellt sicher das der Quelltext vor der gewünschten Info (Tempwert) nicht im oberen Teil
des Quelltext nochmal vorkommt. Sonst würde ja die Abfrage dort schon beginnen Daten in die Variable zu speichern.

Es ist also wichtig für mich, nicht nur den Plaintext einer HTML Datei heraus zufiltern (ist ja eher einfach),
sondern auch wo diese Texte sich im Quelltext befinden.

Klarer


Gruß
Hiele
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 11:50
Hallo Hiele,

ich merke schon, dass du dich bemühst alles gut zu beschreiben, aber vielleicht bin ja ich heute nicht so gut drauf. Kann es sein, dass du einfach die aktuelle Temperatur von irgendeinem Wetterdienst auslesen möchtest?

Delphi-Quellcode:
const
  W_URL
    = 'http://www.accuweather.com/world-index-forecast.asp'
    + '?partner=accuweather&traveler=0&loccode=EUR|DE|GM007|LIMBURG';
  W_ID
    = 'quicklook_current_temps';

function CurrentTemperature(const urlWeather, tempId: string): string;
var
  doc: OleVariant;
begin
  doc := CoHtmlDocument.Create;
  doc.open;
  doc.Write(http.Get(urlWeather));
  doc.Close;
  Result := doc.all.item(tempId).innerText;
end;
Sorry, wenn ich heute etwas begriffsstutzig bin.

Freundliche Grüße
  Mit Zitat antworten Zitat
semike

Registriert seit: 30. Nov 2006
19 Beiträge
 
#7

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 12:00
Hallo Hiele,

ich vermute Du möchtest den HTML-Quelltext parsen. Hierzu gibt es eine Komponente die rasend schnell, jedoch nicht ganz trivial zu verstehen ist. Vielleicht hilft Dir diese weiter:

TDIHtmlParser

Ich verwende diesen für alle Arten von HTML und XML Parsing (und HTML Redesign).

Grüße
Michael
  Mit Zitat antworten Zitat
Hiele

Registriert seit: 21. Feb 2005
Ort: Berlin
16 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 12:06
Kein Problem - Immerhin nimmst du dir Zeit - Also dafür Danke vorab.

Es geht nicht im speziellen um Temperaturwerte.
Sondern vielmehr darum bestimmte Teile aus dem Quelltext ein eine Variable
zu bringen.

Wenn der Nutzer z.B. die Akt. Lottozahlen will, dann wird dem Giraserver eben
die gewünschte Website mitgeteilt, der sich dann den Quelltext der HTML Datei lädt
und diesen nach dem Abfrageschema ausliest.

Um so ein Abfrage-Schema zu erstellen, wird dem Server zuvor gesagt, welche
Website und wie er die gewünschte information findet.

Lade den Quelltext von www.xxx.de/xxx.html

Lese von Anfang des Datei bis du folgende Stelle findest (Also der Teil vor der
gewünschten Info)

Dann pack den gefundenen Text in die Variable X , bis zu der Stelle die im Quelltext
nach der gewünschten Info kommt.


Der eigentliche Parser ist im Giraserver. Um den für diese Abfrage zu konfigurenen
muss ein Script erstellt werden. Und dieses erstellen des Scriptes ist sehr aufwendig.

Meine Prog sollt einfach diese Scripterstellung vereinfachen. Nach dem Prinzip WYSIWYG.



@Michael: Ich habe mich zwar schon mit div. Parsern beschäftigt, doch keiner hilft mir weiter bzgl.
der Position, da ich einen Teil Quelltext vor und nach der gewünschten Info brauche

Werde mir aber den auch nochmal zugemühte führen - Gedankt für den Tip


Hiele
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 12:37
Du brauchst einen DOM (Document Object Modell) Parser.
Im DOM wird dir die gesamte Webseite als Baumstruktur aufbereitet.
Absolute Positionen in HTML spielen dann keine Rolle mehr.
Wenn du dann ein bestimmtes Element auswählen möchtest, kannst du entweder
eine ralativ starre (*) Technik anwenden und einfach merken, an welchen Kreuzungen
du im Baum abbiegen musst.
Beispiel: /2/5/3 - von der Wurzel in das 2. Child-Element (<body>) dann in das 5. Child-Element und dann in das 3. Child-Element.
*) selbst diese Technik dürfte besser als dein bisheriger Ansatz sein
Du kannst auch den gesamten Restbaum (ausgehend vom <body> Element) nach einem bestimmten Text durchsuchen.
Wird die Stelle gefunden, bist du irgendwo im Baum auf deinem gesuchten Element oder Attribut.
Es ist dann kein Problem, sich im Baum dann eine Ebene hoch und dann zum vorherigen oder nachfolgenden Childelement zu bewegen.

Oder es ist möglich mit XPATH Ausdrücken zu arbeiten. Das wäre dann der Königsweg.
Hier gibt es allerdings das Problem, dass HTML üblicherweise nicht so sauber geschachtet ist
wie das bei XML der Fall ist.
Wenn die Seite aber in XHTML geschrieben ist, dann ist es relativ einfach, beliebige Daten
sauber zu extrahieren. Ebenso kann dann die Seite leicht über die Baumstruktur verändert werden.

PS: du solltest dir den Internet Explorer Developer Toolbar installieren.
http://www.microsoft.com/downloads/t...e-2d5e1db91038
Er zeigt dir (unter anderem) die Baumstruktur und lässt selektierte Element blinken
Andreas
  Mit Zitat antworten Zitat
Hiele

Registriert seit: 21. Feb 2005
Ort: Berlin
16 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Position von Text/Links in einer HTML Datei finden

  Alt 19. Sep 2007, 12:56
@shmia: Mit DOM hatte ich auch am Anfang gespielt, jedoch der Parser der im GiraServer (Hausautom.)
läuft setzt für eine Webabfrage ein Script vorraus, welches dem integrierten Parser sagt,
wo er welche Infos im Quelltext findet.
Wie oben geschrieben, will ich ein Tool bauen, welches solche Scripte erstellt.
Die meisten Benutzer kommen kaum zurecht, sich durch den Quelltext einer HTML Datei zu wuseln.
So ein Script kann kann schnell meherere Hundert Anweisungen enthalten, die normalerweise
per Hand ermittelt werde.

Hier entstehen auch die meisten Fehler. Da man eine bestimmte Stelle im Quelltext haben möchte
und dem Parser (Giraserver) sagt. Such die Stelle A(ein kurzer Auszug aus dem Quelltext)
und dann speichere die folgenden Zeichen (z.B. Lottozahlen o.ä.) bis zur Stellte B
(wieder ein kurzer Auszug aus dem Quelltext).
Wenn jetzt aber die A mehrfach im Quelltext vorkommt, wird der Parser die
erste Stelle nehmen an der er diesen Auszug A findet. Wenn nun dann nicht auch sicher B
folgt führt dies schon zu Fehlern.
Das Tool soll den Quelltext nach verwertbaren Infos durchsuchen (Texte/Bilder/Links) diese
dann auflisten. Der Benutzer kann nun wählen was er will. Danach erstellt das Tool den Script um sicher
zustellen, das es konform ist. Sucht also zur gewünschten Info die passenen Qulltextauschnitte Vor und Nach
der Info. (Also A/B) und dies so, dass der Quelltext A (vor Info) sicher so gewählt ist, das der Parser
der den Quelltext Zeichen für Zeichen durchgeht findet.

Gruß
Hiele
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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