AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pos und Webbrowser

Ein Thema von Asatru · begonnen am 19. Feb 2008 · letzter Beitrag vom 20. Feb 2008
Antwort Antwort
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#1

Pos und Webbrowser

  Alt 19. Feb 2008, 00:12
Code:
......
<tr>
<td class="tdh" colspan="2" align="center">VIP BlueManGroup</td>
</tr>
<tr>
<td class="tdn" colspan="2"><span class="fontsmall2">Registriert am 20.01.2008</span></td>
</tr>
<tr>
<td class="tdn">Postings:</td>
<td class="tdn">870[img]pictures/posts.gif[/img]</td>
</tr>
......
Das obere wäre der Quellcode den ich in meinem ACP zum Beispiel sehe, wenn ich mir den Quellcode anzeigen lasse. Nun möchte ich in mein Programm eben einige Sachen rausholen. Wenn ich normal nur mit reinen Text arbeite gehts ja mit

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
source: String;
pos1: Integer;
pos2: Integer;

begin
source := Webbrowser1.OleObject.Document.Body.innerHTML;
pos1 := Pos('Anfangstext', source);
pos1 := pos1 + 11;
pos2 := Pos('Endtext', source);
Caption := Copy(source, pos1, pos2 - pos1);

end;
Nur wenn es um HTML Tags gehts haut nix mehr hin, vorallem weil </td> zuoft gibt. Nächste Überlegung wäre den Quellcode in ein memo zu laden und Line für Line zu durchsuchen und dann alles zu machen.

Nun meine Hauptfrage, gibts eine einfachere Art an diesen Text zu kommen oder bzw. wäre das Ofterwähnte TRegExpr doch besser dafür? Also TRegExpr, oder mit Memo line für line oder gibts noch was einfacheres?


Mit freundlichen Grüßen



Asatru
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Pos und Webbrowser

  Alt 19. Feb 2008, 00:19
Mit PosEx kannst du auch einen Offset setzen.
Markus Kinzler
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#3

Re: Pos und Webbrowser

  Alt 19. Feb 2008, 12:32
Zitat von mkinzler:
Mit PosEx kannst du auch einen Offset setzen.
Delphi-Quellcode:
pos1 := Pos('VIP ', source);
pos1 := pos1 + 4;
pos2 := Posex('</TD>', source, Pos1+1);
Erstmal vielen Dank für den Tip....
Nun noch kleine Zwischenfragen, damit ich BSP: den Namen bekomme muss ich </td> Großschreiben, wie muss ich aber schreiben, damit das VIP auch noch mit einbezogen wird?

Code:
<TD class="tdh" colspan="2" align="center">
<TD CLASS="tdh" colspan="2" align="center">
......
oder andere Schreibungen wollen nicht funktionieren.



MFG
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Pos und Webbrowser

  Alt 19. Feb 2008, 12:35
pos2 := Posex('</TD>', UpperCase(source), Pos1+1);
Markus Kinzler
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#5

Re: Pos und Webbrowser

  Alt 19. Feb 2008, 13:34
hallöchen....


im normalen Quelltext ist es ja </td> durch das uppercase wird ja gesagt groß und kleinschreibung ist egal?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
source: String;
pos1: Integer;
pos2: Integer;

begin
source := Webbrowser1.OleObject.Document.Body.innerHTML;
pos1 := Pos('<TD class="tdh" colspan="2" align="center">', UpperCase(source));
pos1 := pos1 + 43;
pos2 := Posex('</TD>', UpperCase(source), Pos1+1);
Caption := Copy(source, pos1, pos2 - pos1);
end;
Hab ich irgendein Denkfehler noch drin? Den selbst mit Uppercase muss ich </td> <-- immer Groß schreiben.



MFG


#Edit: Man muss TEXT bei Uppercase immer Großschreiben? warum klappt dann pos1 := Pos('<TD CLASS="TDH" COLSPAN="2" ALIGN="CENTER">', UpperCase(source)); nicht?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Pos und Webbrowser

  Alt 19. Feb 2008, 13:42
Eigentlich sollte UpperCase alle Kleinbuchstaben in source in Großbuchstaben wandeln
lass dir mal UpperCase( source) anzeigen
Markus Kinzler
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#7

Re: Pos und Webbrowser

  Alt 19. Feb 2008, 13:50
Arghhh ich Depp da hät ich och selbst druffkommen können

Nun sehe ich das problem, weil die " werden gar nicht mehr angezeigt und es wurde
Code:
<TD CLASS=TDH ALIGN=MIDDLE COLSPAN=2>

Vielen Dank für deine Gute Hilfe
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#8

Re: Pos und Webbrowser

  Alt 19. Feb 2008, 18:35
Sorry im Voraus für den Doppelpost, aber ich hab zu der Sache noch eine offene Frage!

Code:
<td class="tdn">Postings:</td>
<td class="tdn">870[img]pictures/posts.gif[/img]Function PosEx(Const SubStr, S: AnsiString; Offset: LongInt = 1): LongInt;
    ASM
      PUSH   ESI
      PUSH   EDI
      PUSH   EBX
      TEST   &SubStr, &SubStr
      JE     @Exit
      TEST   &S, &S
      JE     @Exit0
      TEST   &Offset, &Offset
      JG     @POff
      MOV    &Offset, 1
      @POff:
      MOV    ESI, &SubStr
      MOV    EDI, &S
      PUSH   EDI
      MOV    EAX, &Offset
      DEC    EAX
      MOV    ECX, [EDI - 4]
      MOV    EDX, [ESI - 4]
      DEC    EDX
      JS     @Fail
      SUB    ECX, EAX
      ADD    EDI, EAX
      MOV    AL, [ESI]
      INC    ESI
      SUB    ECX, EDX
      JLE    @Fail

      @Loop:
      REPNE  SCASB
      JNE    @Fail
      MOV    EBX, ECX
      PUSH   ESI
      PUSH   EDI
      MOV    ECX, EDX
      REPE   CMPSB
      POP    EDI
      POP    ESI
      JE     @Found
      MOV    ECX, EBX
      JMP    @Loop

      @Fail:
      POP    EDX

      @Exit0:
      XOR    EAX, EAX
      JMP    @Exit

      @Found:
      POP    EDX
      MOV    EAX, EDI
      SUB    EAX, EDX

      @Exit:
      POP    EBX
      POP    EDI
      POP    ESI
    End;

procedure TForm1.Button1Click(Sender: TObject);
var
source: String;
pos1, pos2, pos3, pos4 : Integer;

begin
source := Webbrowser1.OleObject.Document.Body.innerHTML;
pos1 := Pos('<TD CLASS=TDN>', uppercase(source));
pos1 := pos1 + 14;
pos2 := Posex('</TD>', uppercase(source), Pos1+1);
pos3 := Posex('<TD CLASS=TDN>', uppercase(source), Pos1+2);
pos4 := Pos('<IMG ALT=POSTS', uppercase(source));
Caption := Copy(source, pos1, pos2 - pos1)+ Copy(source, pos3, pos4 - pos3);
memo1.Lines.Text:= uppercase(source);
end;
kann ich irgendwie sagen das ich bei pos3 den 2ten Tag als start suche?

Wenn ich meinen Quellcode verwende bekomme ich angezeigt:

Postings:<TD class="tdn">870


Bin ich richtig auf meinem Weg oder total falsch?



MFG
  Mit Zitat antworten Zitat
marabu

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

Re: Pos und Webbrowser

  Alt 20. Feb 2008, 13:20
Hallo,

ich mag es jetzt nicht so deutlich schreiben - richtig und falsch hängt auch immer ein wenig von den eigenen Fähigkeiten ab. Wer nicht mit einem Bagger umgehen kann, der muss das Loch halt mit dem Spaten graben.

Der Quelltext einer HTML-Seite ist nicht einfach Text, sondern hat eine gewisse Syntax. Auf solchen Markup-Text greift man mit einem geeigneten Parser zu. Ich verwende im angehängten Beispiel den MS HTML Parser.

Freundliche Grüße
Angehängte Dateien
Dateityp: zip wb-tbl_178.zip (2,9 KB, 21x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:27 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