AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Quellcode einer Webseite herunterladen
Thema durchsuchen
Ansicht
Themen-Optionen

Quellcode einer Webseite herunterladen

Ein Thema von Amateurprofi · begonnen am 11. Jul 2012 · letzter Beitrag vom 28. Okt 2012
Antwort Antwort
Seite 1 von 2  1 2      
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#1

Quellcode einer Webseite herunterladen

  Alt 11. Jul 2012, 21:41
Ich möchte den Quellcode einer Webseite herunterladen und auswerten.
Zurzeit mache ich das manuell indem ich auf der Webseite "Quellcode anzeigen" wähle.
Dann erscheint ein neues Fenster, das ein RichEdit enthält, in dem der Quellcode steht.
Mit Strg-A und Strg-C kopiere ich den gesamten Inhalt ins Clipboard, das mein Programm dann auswertet.

Nun möchte ich das automatisieren, d.h. mein Programm soll im Hintergrund laufen und alle paar Minuten ohne mein Zutun den Quellcode herunterladen und auswerten.
Ich habe hier auch schon einige Beiträge gelesen und die gezeigten Routinen ausprobiert, leider ohne Erfolg.

Dieses scheint zumindest teilweise zu funktionieren, liefert aber nur einen kleinen Teil der Daten und auch innerhalb dieses Teiles fehlen einige Daten.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   IdHttp:TIdHttp;
   data:string;
begin
   // data:=LoadUrl('http://www.030chat.de');
   idHttp:=TIdHttp.Create;
   Data := IdHTTP.Get('http://www.030chat.de');
   idHttp.Free;
   Memo1.Text:=data;
end;
Ein anderes das ich ausprobierte liefert einen leeren String, obwohl ein paar Daten geladen wurden.
Delphi-Quellcode:
function LoadURL(URL: String): String;
var
   IOpen, IURL: HINTERNET;
   Read: Cardinal;
   Msg: array[0..4096] of Char;
begin
   Result := '';
   IOpen := InternetOpen('GetIP', INTERNET_OPEN_TYPE_PRECONFIG, '', '',
                         INTERNET_FLAG_NEED_FILE);
   if IOpen <> nil then
   try
     IURL := InternetOpenUrl(IOpen, PWideChar(URL), nil, 0,
                             INTERNET_FLAG_NO_UI or INTERNET_FLAG_PRAGMA_NOCACHE
                             or INTERNET_FLAG_RELOAD, 0);
     if IURL <> nil then
     try
       repeat
         FillChar(Msg, SizeOf(Msg), 0);
         if InternetReadFile(IURL, @Msg[0], Pred(SizeOf(Msg)), Read) then
           Result := Result + Msg else
             Break;
       until Read = 0;
     finally
       InternetCloseHandle(IURL);
     end;
   finally
     InternetCloseHandle(IOpen);
   end;
end;
Das dritte, das ich probiert habe basiert auf TWebBrowser, liefert aber, wie das erste nur einen kleinen Teil der Daten (anscheinend nur den Header der Seite).

Ich habe mich bisher nie mit "Internet" beschäftigt, stehe sozusagen auf dem Schlauch und bekomme Verständnis für Beiträge in denen jemand fragt "wie kann ich zwei Zahlen addieren".

Könnte mir bitte jemand weiterhelfen ?
Was ich vorzugsweise möchte, ist das, was ich bei eingangs beschriebener Vorgehensweise erhalte.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

AW: Quellcode einer Webseite herunterladen

  Alt 11. Jul 2012, 21:54
Tja. Das ist recht einfach. Dir scheint es bei der Seite um die Tabelle zu gehen?

Wenn Du Dir die eigentliche Antwort bei der URL anschaust, dann siehst Du folgendes:
Code:
<FRAMESET cols="120,*" FRAMEBORDER=0 FRAMESPACING=0 SCROLLING="AUTO" BORDER=0>
  <FRAME SRC="navi.htm" NAME="webnavi" SCROLLING="AUTO" MARGINHEIGHT=5 MARGINWIDTH=5>
  <FRAME SRC="online.html" NAME="webmain" SCROLLING="AUTO" MARGINHEIGHT=5 MARGINWIDTH=5>
</FRAMESET>
Das heisst die Webseite verwendet Frames. Einen Links mit der Navi, und einen rechts mit dem Hauptteil der Seite drin.
Das ist wohl der interessante Teil und dort steht auch der Pfad: Online.html.

Das heisst wenn Du nun http://www.030chat.de/online.html anfragst bekommst Du die ganzen Tabellen mit allen Daten ohne die Navigation drumrum.
Versuch das mal als Adresse und dann schau mal wie Du die Antwort auswerten kannst.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Quellcode einer Webseite herunterladen

  Alt 11. Jul 2012, 22:21
Versuch es doch mal hiermit:http://www.delphipraxis.net/557172-post5.html

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Quellcode einer Webseite herunterladen

  Alt 11. Jul 2012, 22:25
Tja. Das ist recht einfach. Dir scheint es bei der Seite um die Tabelle zu gehen?

Wenn Du Dir die eigentliche Antwort bei der URL anschaust, dann siehst Du folgendes:
Code:
<FRAMESET cols="120,*" FRAMEBORDER=0 FRAMESPACING=0 SCROLLING="AUTO" BORDER=0>
  <FRAME SRC="navi.htm" NAME="webnavi" SCROLLING="AUTO" MARGINHEIGHT=5 MARGINWIDTH=5>
  <FRAME SRC="online.html" NAME="webmain" SCROLLING="AUTO" MARGINHEIGHT=5 MARGINWIDTH=5>
</FRAMESET>
Das heisst die Webseite verwendet Frames. Einen Links mit der Navi, und einen rechts mit dem Hauptteil der Seite drin.
Das ist wohl der interessante Teil und dort steht auch der Pfad: Online.html.

Das heisst wenn Du nun http://www.030chat.de/online.html anfragst bekommst Du die ganzen Tabellen mit allen Daten ohne die Navigation drumrum.
Versuch das mal als Adresse und dann schau mal wie Du die Antwort auswerten kannst.
Danke, Phoenix,
habe ich ausprobiert, funktioniert aber leider nicht.
Beim Data := IdHTTP.Get('http://www.030chat.de/online.html'); hängt "sich das auf".
Da scheint eine endlos-Schleife zu laufen. (CPU-Auslastung 12 %, also "eine CPU voll ausgelastet).
Die Webseite funktioniert (Das Get… ohne "/online.html" läuft wie bisher.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Quellcode einer Webseite herunterladen

  Alt 12. Jul 2012, 09:33
Vielleicht hilft davon etwas:
  • TIdCookieManager zuweisen
  • Request.UserAgent einen Browser-UserAgent zuweisen
  • HandleRedirects auf True setzen

Welche Indy-Version verwendest du? Vielleicht behebt ein Update das Problem.
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Quellcode einer Webseite herunterladen

  Alt 12. Jul 2012, 13:17
Vielleicht hilft davon etwas:
  • TIdCookieManager zuweisen
  • Request.UserAgent einen Browser-UserAgent zuweisen
  • HandleRedirects auf True setzen

Welche Indy-Version verwendest du? Vielleicht behebt ein Update das Problem.
Hallo Andreas L.,
danke für die Hinweise.

HandleRedirects hab ich auf True gesetzt, bringt keine anderen Ergebnisse.
UserAgent enthält "Mozilla/3.0 (compatible; Indy Library)" – muss ich da was ändern ? Und wenn ja, was muss ich da reinschreiben?
Die Indy-Version scheint 10.5.7 zu sein.

Und last not least "TIdCookieManager zuweisen"
Wie mache ich das? Ich hab keinerlei Erfahrung auf diesem Gebiet.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Quellcode einer Webseite herunterladen

  Alt 12. Jul 2012, 13:43
UserAgent enthält "Mozilla/3.0 (compatible; Indy Library)" – muss ich da was ändern ? Und wenn ja, was muss ich da reinschreiben?
z. B.: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1
Weitere: http://www.useragentstring.com/pages...gentstring.php

Und last not least "TIdCookieManager zuweisen"
Wie mache ich das? Ich hab keinerlei Erfahrung auf diesem Gebiet.
Einen TIdCookieManager auf die Form ziehen und der Eigenschaft CookieManager der IdHTTP-Komponente eintragen und AllowCookie auf true setzen.
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: Quellcode einer Webseite herunterladen

  Alt 12. Jul 2012, 13:58
Also ich kann die Seite http://www.030chat.de/online.html ohne Probleme herunterladen.
Cookies werden keine gesetzt und es wird auch kein Redirect angeboten.
Testprogramm ist im Anhang.
Angehängte Dateien
Dateityp: zip xmlhttprequest.zip (216,8 KB, 46x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#9

AW: Quellcode einer Webseite herunterladen

  Alt 12. Jul 2012, 14:03
Bei mir gibt es auch keine Probleme (Delphi XE): Mit den enthaltenen Indy-Komponenten funktioniert das Laden der Seite. Cookies sind ebenso egal wie der User-Agent.
Delphi-Quellcode:
  HTTP:=TIdHTTP.Create;
  try
    Content:=HTTP.Get('http://www.030chat.de/online.html');
    HTTP.Response.RawHeaders.ConvertToStdValues(Memo1.Lines);
    Memo1.Lines.Add(Content);
  finally
    HTTP.Free;
  end;
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Quellcode einer Webseite herunterladen

  Alt 12. Jul 2012, 14:13
Bei mir gehts auch (Delphi 2009 Pro + Indy 10)

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  http: TIdHTTP;
begin
  http := TIdHTTP.Create(nil);
  try
    Memo1.Text := http.Get('http://www.030chat.de/online.html');
  finally
    FreeAndNil(http);
  end;
end;
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz