Oprettet lør. d. 20. oktober 2012 kl. 13:31:18

spil2vind
spil2vind (11.000 point. Point ude: 415)

Hente teksten fra alle typer hjemmesider

Jeg har brug for en komponent til at hente oplysninger fra alle typer hjemmesider via brug af f.eks. twebbrowser, jeg kan få det til at virke på simple hjemmesider men ikke på alle sider, jeg har forsøgt med innerHTML, OuterHTML og ExtractOriginalHTML uden held.

Skrevet lør. d. 20. oktober 2012 kl. 15:31:43| #1

claes57
claes57 (36.606 point)
kan det være, at nogle sider frasorterer programmet?
Hvordan præsenterer programmet sig overfor siderne? (User-Agent String skal nok laves, så den planker fx IE 9 100%)

Skrevet lør. d. 20. oktober 2012 kl. 18:50:06| #2

spil2vind
spil2vind (11.000 point)
jeg modtager alle data og de bliver pænt vist i twebbrowser, jeg kan dog ikke få fat i teksterne

Skrevet lør. d. 20. oktober 2012 kl. 19:28:10| #3

arne_v
arne_v (1.048.768 point)
Har du proevet med TIdHTTP ?

Skrevet lør. d. 20. oktober 2012 kl. 19:55:33| #4

claes57
claes57 (36.606 point)
find et unikt ord i teksten lige før det du skal bruge, og søg på det - derefter kan du tælle frem efter tags.

Skrevet lør. d. 20. oktober 2012 kl. 20:05:04| #5

spil2vind
spil2vind (11.000 point)
ja TIdHttp er prøvet, der bliver jeg for det meste afvist

Skrevet lør. d. 20. oktober 2012 kl. 21:24:10| #6

arne_v
arne_v (1.048.768 point)
Er det ikke bare et spoergsmaal om at sende de rigtige headers?

Skrevet lør. d. 20. oktober 2012 kl. 22:31:54| #7

spil2vind
spil2vind (11.000 point)
jo helt sikkert, men det bør dog også være muligt at få fat i teksten, når det er muligt manuelt at markere og kopiere teksten, den kan da ikke være tabt undervejs eller er der noget jeg ikke forstår, Kroning mener at 3-5 linier kode kan løse problemet

Skrevet lør. d. 20. oktober 2012 kl. 22:52:24| #8

arne_v
arne_v (1.048.768 point)
At bruge en embedded web browser for at hente web sider virker lidt overkill paa mig.

Eneste begrundelse jeg kan se er hvis du har brug for at faa koert noget JavaScript paa siden.

Skrevet lør. d. 20. oktober 2012 kl. 23:14:22| #9

spil2vind
spil2vind (11.000 point)
Jeg er helt åben for gode ideer, jeg kender kun til TIdHttp og TWebBrowser

Skrevet lør. d. 20. oktober 2012 kl. 23:24:51| #10

spil2vind
spil2vind (11.000 point)
og forresten der er java script på flere af de hjemmesider jeg skal bruge løsningen

Skrevet søn. d. 21. oktober 2012 kl. 00:20:24| #11

snestrup2000
snestrup2000 (10.840 point)
HEJ,

Er det den samme type oplysning på flere hjemmesider eller er de flere typer oplysninger fra en (ensartet) opbygget hjemmeside ?.

Jeg tænkte nemlig på, at der i Delphi findes en program-rutine, som kan hente en hel WEB-side (HTML-koden) men så må du selv sortere siden i HTML-tags og finde det relevante HTML tag's tekst info.

Og er det samme type (hele vejen igennem) er det relativt simpelt - hvis ikke må der mere kode til.

KRISTIAN

Skrevet søn. d. 21. oktober 2012 kl. 09:17:56| #12

palau
palau (17.444 point)
Jeg er ikke sikker på jeg har forstået, hvad det er du vil, så se bort fra dette indlæg, hvis jeg rammer helt ved siden af. Men wget kan jo bruges til rigtig mange ting - se bare The Social Netowrk ;-)
http://en.wikipedia.org/ (...)
Den findes både til Windows og *nix

Skrevet søn. d. 21. oktober 2012 kl. 09:19:10| #13

spil2vind
spil2vind (11.000 point)
Det er flere typer oplysninger, jeg kender ikke til den program rutine, men vil da gerne høre om den

Skrevet søn. d. 21. oktober 2012 kl. 09:26:08| #14

arne_v
arne_v (1.048.768 point)
Er det noedvendigt at den JS koeres for at du kan se de oplysninger du skal bruge?

Skrevet søn. d. 21. oktober 2012 kl. 15:59:39| #15

snestrup2000
snestrup2000 (10.840 point)
Hej,

Jeg har brugt rutinen før men det har været til text-filer og det viser sig at jeg desværre har husket noget forkert. Den tager ikke scripts eller andre ting, ej heller billeder, men kun den rå HTML-kode.  Men den virker perfekt.

Men her er den:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    function  GetInetFile (const fileURL, FileName: String): boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  internetFile,
  localFileName: string;
begin
  // URL (=InternetFile) er sat til en "idiot-adresse " må ændres efter behov

  internetFile := 'http://www.lalala.com/ (...)
  localFileName := 'c:\Myfile.htm';

  if GetInetFile(internetFile, localFileName) then
    ShowMessage('Download successful.')
  else
    ShowMessage('Error in file download.') ;
end;

function TForm1.GetInetFile (const fileURL, FileName: String): boolean;

const  BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: File;
  sAppName: string;

begin
  result := false;
  sAppName := ExtractFileName(Application.ExeName) ;
  hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0) ;
  try
      hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0) ;
      try
        AssignFile(f, FileName) ;
        Rewrite(f,1) ;
        repeat
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) ;
            BlockWrite(f, Buffer, BufferLen)
        until BufferLen = 0;
        CloseFile(f) ;
        result := True;
      finally
        InternetCloseHandle(hURL);
      end;
  finally
    InternetCloseHandle(hSession);
  end
end;

END.


Bruger selv TWebbrowser en del og har ikke problemer med at læse HTML-koden, men skal finde Delphi-koden på en gammel harddisk Plug-in enhed.. (og erindrer ikke umiddelbart hvor den er... ).

KRISTIAN

Skrevet søn. d. 21. oktober 2012 kl. 16:21:52| #16

snestrup2000
snestrup2000 (10.840 point)
HEJ.

Prøv evt. at se på denne side:

http://www.cryer.co.uk/ (...)

der kan sikkert være noget som kan hjælpe dig.

KRistian

Skrevet søn. d. 21. oktober 2012 kl. 16:52:56| #17

spil2vind
spil2vind (11.000 point)
Har faktisk ikke checket om java scriptet kalder noget load data kode, hvilken betydning har det, er det noget jeg kan undersøge?

Skrevet søn. d. 21. oktober 2012 kl. 17:03:37| #18

spil2vind
spil2vind (11.000 point)
snestrup2000 din kode henter ikke de tekster jeg ønsker at hente

Skrevet søn. d. 21. oktober 2012 kl. 18:24:06| #19

snestrup2000
snestrup2000 (10.840 point)
HEJ,

HMmmmmm, kan du give et eksmepel på de(n) side(r), du ønsker at downloade ?

Virker koden overhovedet ? (også på andre web-sider) ?

Kristian

Skrevet søn. d. 21. oktober 2012 kl. 18:27:51| #20

spil2vind
spil2vind (11.000 point)
Ja din kode virker fint og blev afprøvet på https://danskespil.dk/ (...) og teksten Arsenal findes ikke i filen

Skrevet søn. d. 21. oktober 2012 kl. 19:12:07| #21

snestrup2000
snestrup2000 (10.840 point)
Hej,

Startede firefox (min browser) og loggede ind på  https://danskespil.dk/ (...) (dit link).

Fik hele (web)siden downloaded og gemte filen som en lokal HTML-fil.

Åbnede lokalfilen i min foretrukne HTML-edior og søgte efter "ARSENAL" (uden "-erne).  Den fandt dem ikke. Undersøgte så koden fra siden lidt mere minutiøst og opdagede at den del af siden (Arsenal-delen) genereres af et Script og der har "min" kode begrænsninger, som jeg også antydede i begyndelsen.

EN anden ting:

Det du ser på en webside (skærmbillede) er ikke altid det der kommer i HTML-filen.
Der kan forekomme scripts, som danner kode, som kun vises ved RUN-time og ikke som statisk (permanent(fast) /downloaded) kode.

Jeg tror du netop er rendt ind i denne problemstilling.

Kristian

Skrevet ons. d. 03. april 2013 kl. 00:23:09| #22

spil2vind
spil2vind (11.000 point)
Lukker spørgsmålet

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Main.FormClose bliver omgået når brugeren logger ud af...

Oprettet den 20. maj 2013 kl. 23.52
skovjuul giver 60 point for svar | Giv et svar »

Internet Explorer : tillad POPUPS'

Oprettet den 8. maj 2013 kl. 16.21
snestrup2000 giver 30 point for svar | Giv et svar »

Delphi 2007 og Firebird 2.5

Oprettet den 8. maj 2013 kl. 10.45
2Mida giver 100 point for svar | Giv et svar »

Seneste guides

Slettet
Håndtering af tekstoversættelse i...
Parameteriseret tekstformatering i C#
C++ Historie og Programmering - Del 1







Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Tre smarte trick som gør Windows 8 bedre

Boot direkte til skrivebordet, få en strategisk godt placeret luk-knap og slip for at logge ind. Her er tre tips til Windows 8, som gør det nemmere at blive venner med styresystemet.


Nyheder fra Computerworld

Teaser billede

De 21 værste it-vaner - og hvordan du bryder dem

Du har helt sikkert en af disse dårlige it-vaner. Se her hvad du kan gøre.


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger