Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Quelltext auslese Problem (https://www.delphipraxis.net/146731-quelltext-auslese-problem.html)

youuu 26. Jan 2010 08:51


Quelltext auslese Problem
 
Hi,

ich versuche einen Quelltext auszulesen (möchte nur bestimmte Links erhalten) mit diesem Code.

Delphi-Quellcode:
Var
  i,e, iStop:integer;
  Nav, NavNew: Widestring;
Begin
  frmMyBrowser.MemoNav.clear;
  frmMyBrowser.MemoSource.Clear;
  frmMyBrowser.MemoT.Clear;
  frmMyBrowser.MemoL.Clear;

    WB_GetHTMLCode(frmMyBrowser.MainWebbrowser, frmMyBrowser.MemoSource.Lines);
    iStop:=frmMyBrowser.MemoSource.Lines.Count-1;
      for e:=0 to iStop do
        IF MatchesMask(frmMyBrowser.MemoSource.Lines[e], '*<div class="companyInfo">*') then
          IF MatchesMask(frmMyBrowser.MemoSource.Lines[e+1], '*<a href="*"*') then
            frmMyBrowser.MemoT.Lines.Add(Copy(frmMyBrowser.MemoSource.Lines[e+1],POS('<a href="',frmMyBrowser.MemoSource.Lines[e+1])+9,Length(frmMyBrowser.MemoSource.Lines[e+1])+100));
      for e:=0 to frmMyBrowser.MemoT.Lines.Count-1 do
      Begin
        frmMyBrowser.MemoNav.Lines.Add(Copy(frmMyBrowser.MemoT.Lines[e],0,Pos('l"',frmMyBrowser.MemoT.Lines[e])));
      End;
End;
So sieht der Quelltext aus (ein Teil, der sich wiederholt):

Code:
<div style="clear: both;"></div>
<div class="sublinks">
[url="schober/434b6d/bognar-gmbh-balingen.html"]Weitere Informationen[/url]
</div>
</div>



<div class="result">
<div class="companyInfo">
[url="schober/53d74c/abbeizservice-susanne-susanne-mielke-braunschweig.html"]Abbeizservice Susanne Susanne Mielke [/url]




   Leipziger Str. 217




   38124 Braunschweig





   Abbeiz- und Ablaugbetriebe</div>


<div>
</div>


und das erhalte ich als Ergebnis:

Code:

abbeizereien-bremervoerde-21341b6200.html     // Wäre richtig
                                               // Keine Ahnung wieso dort leere Spalten entstehen.

21341b6200.html                               // Fehlt die hälfte
class="companyInfo">                          // Hat Hier eigentlich gar nicht zusuchen
<a href="karosserieentlackung-kronau-157462c300.html  // zu viel <a href=" hat dort nicht zu suchen.


karosserieentlackung-kronau-157462c300.html

3a52f24400.html

both;"></div>
<div class="sublinks">
<a href="abbeizereien-siegen-3a52f24400.html
</div>



<div class="result">
<div class="companyInfo">
<a href="schober/286209/gerhard-mueller-essen.html
schober/286209/gerhard-mueller-essen.html
class="companyInfo">
<a href="schober/2a87fb/ablaugebetrieb-werner-hill-gmbh-remseck.html

Ablaugbetriebe</div>


<div>
</div>

<div style="clear: both;"></div>
<div class="sublinks">
<a href="schober/2a87fb/ablaugebetrieb-werner-hill-gmbh-remseck.html

href="schober/3fd4c8/norbert-drissner-messstetten.html
schober/3fd4c8/norbert-drissner-messstetten.html
class="companyInfo">
<a href="schober/434b6d/bognar-gmbh-balingen.html

class="sublinks">
<a href="schober/434b6d/bognar-gmbh-balingen.html
class="result">
<div class="companyInfo">
<a href="schober/53d74c/abbeizservice-susanne-susanne-mielke-braunschweig.html

schober/53d74c/abbeizservice-susanne-susanne-mielke-braunschweig.html

Kann jemand helfen, das war mein 1. Versuch.

hoika 26. Jan 2010 13:45

Re: Quelltext auslese Problem
 
Hallo,

da fallen mir ein paar Sachen auf

1. Nutze lokale String-Variablen

s1:= frmMyBrowser.MemoSource.Lines[e];
s2:= frmMyBrowser.MemoSource.Lines[e+1];


2. kleiner Bug

for e:=0 to Count-1 do // jaja, heisst iStop

Ist e jetzt =Count-1 geht folgendes schief

frmMyBrowser.MemoSource.Lines[e+1]

RangeCheck einschalten !


3. Woher kommen die Konstanten

Copy(frmMyBrowser.MemoSource.Lines[e+1],POS('<a href="',frmMyBrowser.MemoSource.Lines[e+1])+9,Length(frmMyBrowser.MemoSource.Lines[e+1])+100)

iPos:= POS('<a href="',frmMyBrowser.MemoSource.Lines[e+1]);

Was soll das +9 und das +100 ?



Schreib das mal mit ein paar zusätzlichen Variablen aus

also kein .Add(CopyXXX)

sondern

sString:= CopyXXX
.Add(sString)

Dann ein paar Breakpoints drauf und nachsehen, wo es hakt.



Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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