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!
-
Nie pisz TEMATÓW DUŻYMI LITERAMI - tak sobie to wygląda...
-
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 :) ]
- 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 :-).
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));
no ale jak w koncu pobrac ten tekst pomiedzy znacznikami ?
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. ;-)