Avatar billede martinlind Nybegynder
24. september 2007 - 14:48 Der er 19 kommentarer og
1 løsning

Downloade PDF fra link på en hjemmeside

Er der nogle der ved hvordan jeg henter en webside ned, undersøger om der er et link til en PDF-fil og hvis der er, så henter den ned ?
Avatar billede spil2vind Nybegynder
24. september 2007 - 20:07 #1
Du kan vel bare undersøge den hjemmeside du henter, check om der findes .PDF nogen steder.
Avatar billede martinlind Nybegynder
25. september 2007 - 10:39 #2
Ja, men hvis der nu var en eller anden smart måde, ville jeg jo helst bruge den :)
Avatar billede spil2vind Nybegynder
25. september 2007 - 10:53 #3
Du ønsker at få koden til at løse dit ønske?
Avatar billede martinlind Nybegynder
25. september 2007 - 13:28 #4
Hvis du lige har den ville det da være fint, tak :) ( smid den som et svar )
Avatar billede spil2vind Nybegynder
25. september 2007 - 14:25 #5
Kigger på når jeg kommer hjem til min delphi, synes måske det ville være sjovere for dig, at finde løsningen selv!!
Avatar billede martinlind Nybegynder
25. september 2007 - 19:36 #6
Det er var nu ikke for morskabens skyld :) ( Har kodet delphi siden 95´ )
Avatar billede spil2vind Nybegynder
25. september 2007 - 19:42 #7
Så synes jeg da bare du skal komme igang, det er jo en ret kedelig opgave
Avatar billede kroning Nybegynder
25. september 2007 - 21:02 #8
Sådan lige hurtig og kort og uden noget form for fejl check (Try-Except beklager hrc ;-) ) og kun testet med en enkelt side (www.fiberbredbaand.dk), men det kan vel give dig nogle ideer.
Jeg bruger Delphi 7 og Indy´s IdHTTP komponent, og det virker fint her.

-----------------------------------

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdHTTP, StrUtils;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure HentPdfer(Side, Mappe : string);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.HentPdfer(Side, Mappe : string);
var
    IdHTTP : TIdHTTP;
  MS    :TMemoryStream;
  i,c : integer;
  OrgSide,Link,Filnavn : string;

procedure HentPDF;
begin
    MS.Clear;
    Filnavn:='http://'+IdHTTP.Host+Link;
    IdHTTP.Get(Filnavn,MS);
    Filnavn:=Copy(Link,LastDelimiter('/',Link)+1,MaxInt);
    MS.SaveToFile(Mappe+Filnavn);
end;

begin
    IdHTTP:=TIdHTTP.Create(Self);
  MS:=TMemoryStream.Create;

    Side:=IdHTTP.Get(Side);
  OrgSide:=Side;
    Side:=AnsiLowerCase(Side);

  c:=PosEx('href',Side);
  while c>0 do
  begin
        i:=PosEx('"',Side,c+6);
        Link:=Copy(OrgSide,c+6,i-c-6);
        if Copy(Link,Length(Link)-3,4)='.pdf' then
        HentPDF;
    c:=PosEx('href',Side,i);
  end;

  IdHTTP.Free;
  MS.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    HentPdfer('http://www.fiberbredbaand.dk/portal/page/portal/Energimidt/forside/support/vejledninger?page=265','c:\hk\pdf\');
end;

end.
Avatar billede martinlind Nybegynder
26. september 2007 - 12:31 #9
kroning >> smid et svar så for du point :)
Avatar billede kroning Nybegynder
26. september 2007 - 12:41 #10
ok, det virkede måske uden videre?
Avatar billede martinlind Nybegynder
26. september 2007 - 13:28 #11
Det gjore det så ikke, jeg får en fejl jeg ikke lige ved hvordan jeg løser, "IOHandler value not vaild" jeg mener det er Indy10 jeg har installeret, nogen der har et foreslag ??
Avatar billede kroning Nybegynder
26. september 2007 - 16:06 #12
I hvilken linie får du fejlen?
Avatar billede Rosenkjaer Novice
03. oktober 2007 - 11:25 #13
Jeg lavede lige et tjek på din kode, og den laver fejl i linjen med:

Side:=IdHTTP.Get(Side);

Debugger Exception Notification: Project Project1.exe raised exception class EIdSocketError with message 'Socket Error # 11004'. Process stopped. Use Step or Run to continue.

Ved ikke om det er til nogen hjælp, men poster det alligevel:
http://img48.imageshack.us/my.php?image=experroryn0.jpg

M.v.h. Johnny
Avatar billede Rosenkjaer Novice
03. oktober 2007 - 11:26 #14
Argh, mig der dummer mig, undskyld for mit ubrugbare indlæg.
Avatar billede martinlind Nybegynder
03. oktober 2007 - 12:46 #15
kroning >> det er når jeg laver en Get() jeg får den IOHandler fejl ;)
Avatar billede kroning Nybegynder
03. oktober 2007 - 13:23 #16
Husker du at skrive http:// i dit link?
Avatar billede kroning Nybegynder
03. oktober 2007 - 13:26 #17
Nej så får man en anden fejl, men jeg ved så ikke hvorfor, koden som den står virker fint her med Indy 9.
Avatar billede martinlind Nybegynder
03. oktober 2007 - 13:43 #18
Jeg har ikke lige fået brugt tid på det, jeg tror det er noget med Indy10, så måske jeg neddrosler min indy til en 9'er, vender tilbage når jeg har fået det til at virke :)
Avatar billede martinlind Nybegynder
16. oktober 2007 - 15:57 #19
kroning >> Din kode virker fint, problemet er når jeg skal hente noget https://
så det sidder jeg og roder lidt med :)

Smid et svar igen så for du point :)
Avatar billede kroning Nybegynder
17. oktober 2007 - 00:11 #20
k
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB