Problem mit Schleife!

Anfängerfragen zum Programmieren mit PureBasic.
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Problem mit Schleife!

Beitrag von Zero_Cool »

Hallo Zusammen!

Ich habe mir ein Programm geschrieben, mit welchem ich eine fortlaufende Reihe an Website's runterladen kann.

Das sieht wie folgt aus:

Code: Alles auswählen

DeleteUrlCacheEntry_("http://www.abc.de/seite1.php")
URLDownloadToFile_(0,"http://www.abc.de/seite1.php","c:\Programme\File Download\rec.tmp",0,0)

DeleteUrlCacheEntry_("http://www.abc.de/seite2.php")
URLDownloadToFile_(0,"http://www.abc.de/seite2.php","c:\Programme\File Download\rec.tmp",0,0)

usw.
Mit diesem Code Lade ich eigentlich Seite 1, 2, 3 (usw) einer Website in eine File auf meiner Festplatte! Nur ist es so, das es doch sehr viele Links sind, ich denke mit einer Schleife würde ich den Quell Code massiv verkleineren können.

Wie genau kann ich den oberen Quelltext mit einer Schleife ersetzten? Sozusagen einfach eine Schleife die die URL 1 -100 automatisch runter lädt?
Danke für eure Hilfe! Gruss Phil
Chance favors the prepared mind - Havrilla Design - My Gfx
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

ungetestet (müsste aber in etwa so hin kommen) :

Code: Alles auswählen

UrlTeil1.s = "http://www.abc.de/seite"
UrlTeil3.s = ".php"
For i = 1 To 100
  Url.s = UrlTeil1.s + Str(i) + UrlTeil3.s
  DeleteUrlCacheEntry_(Url.s) 
  URLDownloadToFile_(0,Url.s,"c:\Programme\File Download\rec.tmp",0,0)
Next
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

uweb hat geschrieben:ungetestet
ja, ist richtig so. Macht aber keinen Sinn, weil die rec.tmp ständig
überschrieben wird. Korrekterweise müsse auch pro heruntergeladener Seite
eine eigenständige tmp-Datei geschrieben werden.

so ungefähr:

Code: Alles auswählen

For i = 1 To 100
  Url.s = "http://www.abc.de/seite" + Str(i) + ".php"
  Tmp.s = "c:\Programme\File Download\rec" + Str(i) + ".tmp"
  DeleteUrlCacheEntry_(Url) 
  URLDownloadToFile_(0,Url,Tmp,0,0)
Next
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Ich habe einfach auf dem Code von Zero_Cool aufgebaut ohne noch einmal darüber nachzudenken.
Zuletzt geändert von uweb am 29.10.2006 09:44, insgesamt 1-mal geändert.
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag von Zero_Cool »

Hallo Zusammen!

Danke für die Super Hilfe!

Kleine Frage noch, wenn ich das ganze Richtig verstanden habe, wird so jede Seite in ein neues File abgespeichert. Wenn ich aber nun gerne nur ein File hätte, welches jeweils einfach ergäntzt wird? Wie müsste man da den Code abändern?
Chance favors the prepared mind - Havrilla Design - My Gfx
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Wenn ich aber nun gerne nur ein File hätte

Du muss Dir dann im klaren sein, dass Du keine einzelne grosse
HTML-Seite hast, sondern eine Datei bestehend aus vielen HTML-Seiten.

Wenn Du das so haben möchtest, dann würde ich vorschlagen, nach der
For-Next-Schleife eine weitere Schleife zu programmieren, in der Du alle
Dateien, die Du heruntergeladen hast, zu einer grossen zusammenfasst:

Code: Alles auswählen

; Zieldatei zum Schreiben öffnen
FF_O = CreateFile(#PB_Any, "c:\Programme\File Download\rec_all.tmp")

If FF_O

  For I = 1 To 100
    
    ; Quelldatei zum Lesen öffnen
    FF_I = ReadFile(#PB_Any, "c:\Programme\File Download\rec" + Str(I) + ".tmp")
    
    If FF_I
      
      ; Quelldatei auslesen
      myString.s = Space(Lof(FF_I))
      ReadData(FF_I, @myString)
      CloseFile(FF_I)
      
      ; Ausgelesenen Inhalt in die Zieldatei schreiben
      ; (evtl kann man auch WriteStringN() anstelle von
      ; WriteString() verwenden)
      WriteString(FF_O, myString)
      
    Else
      ; Quelldatei konnte nicht geöffnet werden
    EndIf
    
  Next
  
  CloseFile(FF_O)
  
Else
  ; Zieldatei konnte nicht erstellt werden
EndIf
Grüße ... Kiffi
a²+b²=mc²
Antworten