Autor Beitrag
bumbum94
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 09.07.20 09:09 
Guten Morgen und Hallo,

ich Sitz hier an einem kleinen Programm das mir Videolinks automatisch aus htmlQuellCode kopieren soll.

Ein Link pro Seite
Aufbau der URL www.videolink.de/videolink-folge-x/ (x steht für die Nummer der folge)
ich gebe die anzahl der Folgen an

Es wird eine FOR schleife ausgeführt i=1 to anzahl der Folgen
begin
Um den videolink zu erhalten öffnen ich mit TWebBrowser die Seite und hohle mir den HTML Quell Text mit WebBrowser1.OleObject.Document.Body.InnerHtml
diesen Durchforste ich dann nach dem Link kopiere mir den und will auf die nächste Seite navigieren (www.videolink.de/videolink-folge-1/ --> www.videolink.de/videolink-folge-2/)
end

und genau da ist mein Problem.
wie mache ich das das die schleife erst weitergeht wenn er die neue Seite geladen hat
er führt zwar das WebBrowser1.Navigate(url) allerdings lädt er die neue Seite nicht sondern macht einfach mit der alten Seite weiter.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
if cbyAnisenpai.Checked then
begin
for I := 1 to StrToInt(Edit2.Text) do
begin
  begin
    slHtml := TStringList.Create;
    try
      slHtml.Add(WebBrowser1.OleObject.Document.Body.InnerHtml);
      pos1:= Pos('https://vivo.sx/',slHtml.Text);
        if pos1 > 0 then
        begin
          pos2:= Pos('"',slHtml.Text,pos1);
          S := Copy(slHtml.Text,pos1,(pos2-pos1));
          WriteLog(s);
        end;

    finally
    slHtml.Free;
    s := WebBrowser1.LocationURL;
    pos1:= Pos('folge',s)+5;
    S := Copy(s,0,pos1 )+IntToStr(i+1)+'-ger-sub/';
    navigate(s);

    end;
  end;
end;
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4791
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 09.07.20 11:34 
Hallo und :welcome:

wie du ja selber siehst, funktioniert es so nicht. Du mußt deinen Code auf ereignisorientiert umstellen, d.h. das OnDocumentComplete-Ereignis verwenden und dort dann die Leselogik implementieren.
Statt der for-Schleife wirst du dann für den Index einen Klassenmember benötigen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19288
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 09.07.20 11:55 
Du könntest auch einfach TIdHttp verwenden, dann sparst du dir den ganzen Browser, der in diesem Fall gar keinen Sinn macht, wenn du nicht gerade Skripte benötigst.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4791
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 09.07.20 12:48 
Da hast du recht, wenn es nur um statische Seiten geht.