![]() |
Posex und kein Plan :-(
hallo,
ich habe einen html-code, wo ich eine bestimmte zeile heraus ziehen möchte. habe das forum schon durchsucht und bin auf posex gestossen. doch leider bekomme ich es nicht hin, den code zu parsen. wäre echt nett, wenn mir der ein oder andere etwas helfen könnte. also ein auschnitt aus dem html-code sieht so aus:
Code:
also alles was einmalig ist, ist <input type=checkbox name=".docs" value="
<input type=checkbox name=".docs" value="klausi pac.text">
[img]http://myurl.de/i/dd/for.gif[/img] </td> <td align=left valign=middle> <font face="Arial,Helvetica" size=-1> <a href="http://myurl.de/dd/33fd3dff/dd/klausi+pac.text?DUcKdUCBBkzOTnEq"> klausi pac.text ist das einzige was mir bekannt ist. dieser html-code wiederholt sich 3-4mal, wobei der aufbau immer gleich ist, nur steht das nächste mal nicht klausi pac.text sonder z.b. petra pac.text. ich brauch nun aber die url, die etwas tiefer steht, damit ich diese downloaden kann. wie in diesem fall von klausi pac.text. http://myurl.de/dd/33fd3dff/dd/klausi+pac.text?DUcKdUCBBkzOTnEq wenn ich diese dann downgeloadet habe, würde ich den gleichen schritt halt nochmal durchlaufen lassen, um evtl. petra pac.text zu schnappen. kann mir da mal einer anhand eines beispieles erklären, wie ich diesen bewerkstellige? gruss jolomino |
Re: Posex und kein Plan :-(
Moin,
ich versteh dein Problem nicht ganz, du kannst doch einfach bis: Zitat:
Das machst du in einer Schleife. |
Re: Posex und kein Plan :-(
Zitat:
naja, trotzdem danke, werde mal mit deinem tipp versuchen was auf die beine zu stellen :-) oder ich finde doch noch was im forum. gruss jolomino |
Re: Posex und kein Plan :-(
Gib mir die komplette html datei bzw den text daraus, dann schreib ichs dir, aber wenn das nur so ein teil ist kann ich das leider nicht :\
|
Re: Posex und kein Plan :-(
naja, das könnte ich, aber ich möchte es ja alleine schaffen. kleine hilfen sind ok, aber wenn du mir das alles fertig machen willst, dann hab ich daraus nichts gelernt.
ist es denn nicht möglich, nach dem namen klausi+pac.text? zu suchen und alles bis zu den beiden " zu selektieren? ich hab mir das nämlich eben nochmal angeschaut, klausi+pac.text? kommt in der seite auch nur einmal vor.oder das man nach <input type=checkbox name=".docs" value="klausi pac.text"> sucht und beim nächsten <a href="http://myurl.de/dd/33fd3dff/dd/klausi+pac.text?DUcKdUCBBkzOTnEq"> der link selektiert wird. gruss jolomino |
Re: Posex und kein Plan :-(
Dann kann ich dir nur sagen: Benutz Delete(), Copy() und Pos()
|
Re: Posex und kein Plan :-(
moin,
eine andere (kompliziertere, wegen Einarbeitung aufwendigere) Möglichkeit wäre mit [dp]Regulären Ausdrücken[/dp] zu arbeiten. Damit dann erstmal alle Links aus der Seite zu filtern und schließlich zu schauen welcher "klausi" enthält. |
Re: Posex und kein Plan :-(
so, habs hinbekommen, aber nur wenn ich die html datei auf dem rechner habe.
Delphi-Quellcode:
Aufruf mit:
procedure TForm1.GetDlLink(FileName: string);
var DlSearch: string; startpos, endpos, endpos2 : integer; quelle: TextFile; begin AssignFile(quelle, FileName); Reset(quelle); if IOResult = 0 Then begin while not EOF(quelle) do begin ReadLn(quelle, DlSearch); //Startposition für suche festlegen startpos := Posex(DlFile, DlSearch); if startpos > 0 Then begin //Endposition des Links festlegen endpos := Pos('">', DlSearch); endpos2 := Pos('"', DlSearch); //Downloadlink zurechtschneiden DlLink := Copy(DlSearch, endpos2+1, endpos-23); end; end; end; CloseFile(quelle); end;
Delphi-Quellcode:
2. versuch war mit temphtm := idhttp1.Get(Url) die seite in einem string zu laden. funzt auch bestens.
procedure TForm1.Button1Click(Sender: TObject);
begin //DownloadFile wechles gesucht werden soll DlFile := 'test.zip'; GetDlLink(ExtractFilePath(Application.Exename)+'datei.htm'); end; übergabe sah dann so aus:
Delphi-Quellcode:
nur leider hab ich es noch nicht hinbekommen, den übergebenen string in der Procedure GetDlLink zu verarbeiten, da ja ein file erwartet wird und ein string geliefert wird.
procedure TForm1.Button1Click(Sender: TObject);
begin //DownloadFile wechles gesucht werden soll DlFile := 'test.zip'; GetDlLink(temphtm); end; kann mir einer nen tipp geben, wie ich die procedure abändern muss? gruss jolomino |
Re: Posex und kein Plan :-(
lade die Seite in eine tStringlist
Delphi-Quellcode:
und ersetze deine while Schleife durch
myStrynglist.Text := temphtm
Delphi-Quellcode:
dann kannst du mit myStringlist[i] auf die einzelnen Zeilen zugreifen.
For i:=0 to myStringlist.Count-1 do
(Vergiss aber nicht die Stringlist vorher zu erzeugen und anschließend wieder freizugeben) Im Endefekt solltest du dann sowas haben:
Delphi-Quellcode:
var
myStringlist: tStringlist; i: integer; begin myStringlist := tstringlist.Create; myStrynglist.Text := temphtm; For i:=0 to myStringlist.Count-1 do begin // end; myStringlist.Free; end; |
Re: Posex und kein Plan :-(
hi, erstmal danke für die antwort, hab aber noch ein problem.
Delphi-Quellcode:
irgentwie funzt die startpos nicht richtig, es kommt zumindesten als ergebnis ein komischer string raus, welcher sich aus den ersten beiden zeilen zusammen setzt.
var
myStringlist: tStringlist; i: integer; begin myStringlist := tstringlist.Create; myStrynglist.Text := temphtm; DlSearch := myStringlist.text; For i:=0 to myStringlist.Count-1 do begin //Startposition für suche festlegen startpos := Posex(DlFile, DlSearch); if startpos > 0 Then begin //Endposition des Links festlegen endpos := Pos('">', DlSearch); endpos2 := Pos('"', DlSearch); //Downloadlink zurechtschneiden DlLink := Copy(DlSearch, endpos2+1, endpos-23); end; end; myStringlist.Free; end; gruss jolomino |
Re: Posex und kein Plan :-(
Wozu die Schleife? Du greifst doch mit .Text gleich auf die ganze Datei zu. Laut meiner D2005-Hilfe benötigt PosEx drei Parameter, was sich auch irgendwie logisch anhört, auch wenn ich es noch nie benutzt habe.
|
Re: Posex und kein Plan :-(
ja als parameter gebe ich ja (DlFile, DlSearch), spich dlfile=suchwort und dlsearch=quelltext, der letzte soll ja 1 sein, dieser ist ja default gesetzt.
aber auch ohne schleife funzt es nicht :-( gruss jolomino |
Re: Posex und kein Plan :-(
Zitat:
Wenn du aber sowieso nicht an einer bestimmten Stelle suchen willst, nimm doch gleich Pos. PS: Was kommt denn als String heraus? |
Re: Posex und kein Plan :-(
hmmm....dann müsste es doch so, ohne schleife, funktionieren. tut es aber nicht :-(
Delphi-Quellcode:
wobei doch 1 eigentlich doch gegeben ist, laut beschreibung : unsigned Offset = 1
//Startposition für suche festlegen
startpos := Posex(DlFile, DlSearch, 1); if startpos > 0 Then begin //Endposition des Links festlegen endpos := Pos('">', DlSearch); endpos2 := Pos('"', DlSearch); //Downloadlink zurechtschneiden DlLink := Copy(DlSearch, endpos2+1, endpos-23); end; |
Re: Posex und kein Plan :-(
ob der suchbegriff in einer datei steht oder in einem string, dass sollte doch wohl egal sein...oder? wenn ich die datei speichere funktioniert das sowas von wunderbar, aber dann muss ich sie anschliessend immer wieder löschen. und da ich die datei doch so oder so zeilenweise in einen string lade, verstehe ich eben nicht warum es nicht funktioniert.
gruss jolomino |
Re: Posex und kein Plan :-(
moin,
du hast da was falsch gemacht :mrgreen::
Delphi-Quellcode:
var
myStringlist: tStringlist; i: integer; begin myStringlist := tstringlist.Create; myStrynglist.Text := temphtm; // das hier ist Müll: DlSearch ist bei dir eine Textzeile, myStringlist.Text aber derganze Text! // DlSearch := myStringlist.text; For i:=0 to myStringlist.Count-1 do // du gehst mit dierser Schleife durch die einzelnen Zeilen der Seite, wie mit ReadLn begin //Startposition für suche festlegen DlSearch := myStringlist[i]; // so is richtig startpos := Posex(DlFile, DlSearch); if startpos > 0 Then begin //Endposition des Links festlegen endpos := Pos('">', DlSearch); endpos2 := Pos('"', DlSearch); //Downloadlink zurechtschneiden DlLink := Copy(DlSearch, endpos2+1, endpos-23); end; end; myStringlist.Free; end; Den gesamten Text aufeinmal zu durchsuchen wird so nicht funktioniern, da '"' und '">' nur in dieser einen Zeile die richtigen Begrenzer sind. |
Re: Posex und kein Plan :-(
@xineohp:
tja, was soll ich sagen? danke danke danke :bounce1: es funzt :mrgreen: und das beste ist, ich habs verstanden...1000mal thx gruss jolomino |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz