Autor Beitrag
jolomino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Di 05.04.05 01:05 
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:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<input type=checkbox name=".docs" value="klausi pac.text">
  
                    <img src="http://myurl.de/i/dd/for.gif" width=12 height=16 alt="Image" hspace=2 border=0>
              </td>
  <td align=left valign=middle>
  <font face="Arial,Helvetica"  size=-1>

                  <a href="http://myurl.de/dd/33fd3dff/dd/klausi+pac.text?DUcKdUCBBkzOTnEq">


also alles was einmalig ist, ist <input type=checkbox name=".docs" value="

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.
myurl.de/dd/33fd3dff...ext?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
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 05.04.05 01:12 
nimm die html-parser unit von r4id3n, die zerlegt dir die html-seite in ihre einzelteile.
dann gehts du alle anchors durch, und schaust ob z.b. 'pac' in der zeile vorkommt.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
jolomino Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Di 05.04.05 01:17 
hey du schon wieder :D
kannste auch nicht schlafen?
ok, thx werde mal schauen. axo, gestern hab ichs noch hinbekommen, es lag wohl am useragent :?

gruss jolomino

edit: hab mir gerade das unit angeschaut, sieht ganz fein aus. habe aber das gefühl, dass ich mit kanonen auf spatzen schiessen würde.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.
jolomino Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Mi 06.04.05 09:49 
so, habs hinbekommen, aber nur wenn ich die html datei auf dem rechner habe.

ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
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;


Aufruf mit:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //DownloadFile wechles gesucht werden soll
      DlFile := 'test.zip';
      GetDlLink(ExtractFilePath(Application.Exename)+'datei.htm');
end;


2. versuch war mit temphtm := idhttp1.Get(Url) die seite in einem string zu laden. funzt auch bestens.
übergabe sah dann so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //DownloadFile wechles gesucht werden soll
      DlFile := 'test.zip';
      GetDlLink(temphtm);
end;


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.
kann mir einer nen tipp geben, wie ich die procedure abändern muss?

gruss jolomino
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 06.04.05 11:43 
tip: wenn ich mit strings rumhantiere gehe ich immer wie folgt vor:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
    while s <> '' do
    begin
       s2 := '';
       s2 := copy (s,1,pos(#$A,s)); // in s2 wird alles bis zum zeilenumbruch kopiert
       s := copy(s,length(s2)+1,length(s)); // die zeile, die nun in s2 gespeichert ist wird aus s rausglöscht
       if (pos ('OBJECT'#$20,uppercase(s2)) > 0)  then ... // nun nach dem gewünshcten string ausschau halten
    end;

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
jolomino Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Do 07.04.05 07:31 
naja, mit dem weglöschen das möchte ich eigentlich vermeiden. ich will es jetzt mit posex machen, auf deubel komm rut :-) und wenn das ganze projekt daran scheitert, das ist mir jetzt egal.
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