WebBrowser otwieranie i pobieranie stron do html

0

Witam, muszę napisać program, który będzie otwierał po kolei strony (różnią się one jedną cyfrą) stwierdziłem, że mogę wygenerować s prosty sposób te strony i że webbrowser pomoże mi je pobrać

Moja wersja tego co ma robic program na dzień dzisiejszy jest taka:

  • w memo mam wszystkie linki
  • program pobiera pierwsza linijkę z memo do zmiennej, usuwa ją (w sensie linijkę:))
  • webbrowser idzie do niej
  • po całkowitym załadowaniu zapisuje ją do określonej ścieżki z końcówka 1.htm (przy następnych bedzie to 2 itd.)
  • zapętla to czyli pobiera pierwsza linijke itd.

Mój problem polega na tym, że nie wiem jak to zapisać w Delphi

0

Biedaku i bana masz na google i nic nie da się wyszukać? Ech, ręce opadają.
Jeżeli chcesz zapisywać tylko treść strony html z pod linka - to po co używać
do tego TWebBrowsera. To tak jakby do polowania na wróble używac jakiejś
wielkiej armaty :P Pobierz pakiet Synapse. Do katalogu projektu wrzuć pliki:

blcksock.pas
httpsend.pas
sswin32.pas
synacode.pas
synafpc.pas
synaip.pas
synautil.pas
synsock.pas

Nastepnie na formatce umieść Memo1 oraz Button1. W Memo1 podaj jakieś
linki ja dla próby dalem http://google.pl oraz http://pajacyk.pl ale Ty - jak
wnioskuje - masz na http://google.pl blokadę to podaj inny. Ważne - żeby
link zaczynał się od http://synapse.ararat.cz/doku.php/download. Później do
Button1 podczepiasz taki kod jak widzisz poniżej. Ważne by do sekcji uses
dodać moduł httpsend. Całość wygląda tak i będzie zapisywała pliki pod taką
nazwą 001.html, 002.html i tak dalej. No to teraz dorób sobie tylko pracę w
wątku tego pobierania ewentualnie, dorób też wybór katalogu docelowego,
w ktorym mają zostać zapisane pliki oraz pokazywanie postępu i tak dalej.
Poniżej masz cały kod. Na pewno do zapisywania stron Synapse nadaje się
o wiele bardziej i będzie szybszby - niż TWebBrowser czy wielgachne Indy.
A i podaję link, bo google Tobie nie działa, jak podejrzewam, skoro san nie
mogłeś znaleźć ów informacji: http://synapse.ararat.cz/doku.php/download

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  stdCtrls, httpsend;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1 : TForm1;

const
  Opera_UserAgent = 'Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.10';

implementation

{$R *.dfm}

procedure DownloadToFile(const URL : string; const FileName : string);
const
  Location_Prefix = 'Location:' + #32;
var
  SynHttp : THttpSend;
  I, Position : integer;
  Str, DirectLink : string;
begin
  SynHttp := THttpSend.Create;
  try
    SynHttp.UserAgent := Opera_UserAgent;
    SynHttp.HTTPMethod('GET', Url);
    case SynHttp.ResultCode of
      301, 302 :
        begin
          for I := 0 to SynHttp.Headers.Count - 1 do
          begin
            Str := SynHttp.Headers[I];
            Position := Pos(Location_Prefix, Str);
            if Position > 0 then
            begin
              DirectLink := Copy(Str, Position + Length(Location_Prefix), MaxInt);
              Break;
            end;
          end;
          DownloadToFile(DirectLink, FileName);
        end;
    else
      SynHttp.Document.SaveToFile(FileName);
    end;
  finally
    SynHttp.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  Http_Prefix = 'http://';
var
  S : string;
  I : integer;
begin
  for I := 0 to Memo1.Lines.Count do
  begin
    S := Memo1.Lines[I];
    if Pos(Http_Prefix, S) = 1 then
    begin
      DownloadToFile(S, Format('%.3d.html', [I + 1]));
    end;
  end;
  Memo1.Clear;
end;

end.
0

Wszystko pięknie ładnie tylko program podczas nazywania nazywa pliki 001 następnie jest 003, a powinno być 002

--Edit--

Program nazywał według linijki a linie były zbyt długie, poszerzyłem memo i jest OK, dziękuje za pomoc

0

Memo ma domyślnie włączone zawijanie wierszy wystarczy to wyłączyć i problem zgłowy

1 użytkowników online, w tym zalogowanych: 0, gości: 1