pobieranie fragmentu kodów z www

0

Yo. Chciałbym pobrać fragment kodu np. <TITLE> z dowolnej strony www.wp.plernecie np. www.wp.pl... Jak mogę to zrobić? Prosiłbym o przykad... Z góry wielkie dzięki!

0
  1. Nie pisz TEMATÓW DUŻYMI LITERAMI - tak sobie to wygląda...

  2. Użyj np. komponentu TClientSocket.
    Ustaw jego
    port := 80;
    host := '4programmers.net/Forum';
    active := true;

Teraz po połączeniu wyślij komendę, np:
"GET http://4programmers.net/Forum/reply.html?id=45413"zakończoną #10#13 (chyba)
Server ci odeśle stronkę... I zamknie połaczenie
Zapisz wszystko do jakiejś zmiennej np String.
Tam wyszukaj '<title>' i '<\title>' i pobierz text z pomiędzy nich...

PS> do pobrania strony możesz też użyć INDY, ale ja nie wiem jak bo nie korzystam [nawet nie mam zainstalowanych]

//dopisane:
do Marooned: oj tam, ostatnio się o to z polonistką posprzeczałem i stanęło na tym, że można mówić równie dobrze, że piszemy wyraz 'wielką litera', jak i 'dużą literą' [nie wolno natomiast 'z dużej', ni 'z wielkiej' - bo nazwała to rusycyzmem :) ]

0
  1. Nie pisz TEMATÓW DUŻYMI LITERAMI - tak sobie to wygląda...

Sprawdź jaka jest różnica pomiędzy <font size="15">dużymi</span> literami a WIELKIMI :-).

0

możesz użyć komponentu TIdHTTP z pakietu Indy.

[Dopisane do postu poniżej]

Ot na przykład tak:

Memo1.Lines.Text := IdHTTP1.Get('http://www.onet.pl');

ShowMessage(Copy(Memo1.Lines.Text, Pos('<title>', Memo1.Lines.Text) + 7, Pos('</title>', Memo1.Lines.Text) -8));

0

no ale jak w koncu pobrac ten tekst pomiedzy znacznikami ?

0

W sekcji Private

 function Ereg(var Body : string; Pattern : string) : Tmatch;
function TmainForm.Ereg(var Body : string; Pattern : string) : TMatch ;
var
 Offset, Counter, BeginPos, EndPos : integer;
 APattern : array[0..1] of string;
begin
 offset := 1; // pozycja ostatnio znalezionej wartości
 Counter := 1;

 { oddzielenie dwóch elementów na podstawie znaku | }
 Apattern[0] := Copy(Pattern, 0, Pos('|', Pattern) -1);
 Apattern[0] := Copy(Pattern, Pos('|', Pattern)+1, Length(Pattern));

 while (PosEx(Apattern[0], Body, Offset) > 0) do // szukamy pierwszego członu
 begin
   SetLength(Result, Counter); // Określamy wielkość tablicy

   { określenie początkowej pozycji szukanego określenia }
   BeginPos := PosEx(APattern[0], Body, offset) + Length(Apattern[0]);
   { określenie końcowej pozycji szukanego określenia }
   EndPos := PosEx(APattern[1], Body, offset);
   Offset := EndPos+1; // do zmiennej przypisywana jest pozycja ostatni znalezionej wartości

   // wyciągnięcie treści pomiędzy np. znakami <!--Title--> i  <!--Title-->
   Result[Counter-1] := Copy(Body, BeginPos, EndPos - BeginPos);

   Inc(Counter);

 end;
end;

To wzystko. ;-)

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