"Wyciąganie" łańcuchów tekstu z pliku *.html

0

Wotam.
Zabieram się do pisania programu, który będzie zarządzał statystykami NBA. Z uwagi na to, że samodzielne wpisywanie wszystkich statystyk byłoby bardzo czasochłonne i na 100% nie pozbawione błędów, postanowiłem wykorzystać gotowe statsy z różnych stronek takich jak http://www.nba.com.
Niestety w takiej stronce z wynikami jest strasznie trudno się odnaleźć. :-/ Dlatego zastanawiam się jaki sposób "wyciągania" tekstu z pliku *.html jest najlepszy. Tu zamieszczam przykładową linijkę z takiej strony (ja sam mam ich kilka: statystyki graczy, wyniki drużyn, tabela konferencji, itp.). Z uwagi na ich różnorodność trzebaby zrobić jakąś uniwersalną procedurkę, która mogłaby wyciągać odpowiednie wartości z odpowiedniego miejsca. Pamiętam, że w C++ była taka. Nazywała się chyba scanf(); Można było w niej dawać specyfikatory formantu i wyciągać np. z łańcucha "34aa45" same literki za pomocą "34%c%c45, zmienna1, zmienna2". Byłoby git mieć taką w Delphi bo była naprawę bardzo pomocna. Może ktoś taką napisał???

Oto przykładowa linia:

  14. < a class=gSGPlayerLink href=/playerfile/allen_iverson/index.html?nav=page>Allen Iverson</a> (< a class=gSGTeamLink href=/sixers/index.html?nav=page>Philadelphia 76ers</a>)
30 280 206 807 26.9

Pogrubieniem zaznaczyłem przykładowe dane, które musiałbym "wyciągnąć" z łańcucha.

Th & peace 4 ALL.

0

Nie wiem, czy w Delphi obsugiwane są wyrażenia regularne, ale jeśli tak, to ja bym je do tego zadania zaprzęgł.

0

mozna po prostu wywalic tagi HTML, czyli wszystko co aczyna sie od < i koncz na >

0

Wywalić Tagi? A coś konkretniej? :-P

0

Otyo skrawek kodu z jakiegos programu wysyłającego SMS'y do Ery (aktulanie już nie :))
Chyba o to chodzi??

var
  s:string;
  i,i2:integer;
begin
       NMHTTP1.HeaderInfo.Referer:='boa.eragsm.com.pl';
       NMHTTP1.Post('http://boa.eragsm.com.pl/sms/sendsms.asp','sms=1');
       s:=NMHTTP1.Body;
       i:=pos('name="Code" value="',s);
       s:=copy(s,i+19,100);
       i2:=pos('"',s);
       s:=copy(s,0,i2-1);
       for i:=0 to length(txt) do
         if txt[i]=' ' then txt[i]:='+';
end;

Wymaga jeszcze małych poprawek i uporzadkowania.

0
function DelHTML(s: string): string; { Usuwanie tagów HTML }
var  
  i: Word;
  tag: Shortint;
begin
  Result:='';
  tag := 0;
  for i := 1 to length(s) do
  begin
   if s[i] = '<' then Inc(tag);
   if tag = 0 then Result := Result + s[i];
   if s[i] = '>' then Dec(tag);
 end;
end;

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