Komponent, gotowy kod parsera HTML- gdzie znajdę?

0

Szukam pod Delphi 2010 komponent lub kod źródłowy parsera HTML... (muszę przeanalizować kod strony www i potrzebuję go najpierw doprowadzić do stanu że będzie czytelny, bo jest tam straszny bajzel).

Dzieki za pomoc!

0

Zainteresuje się tym "gotowcem". A co doradzcie, w czym najlepiej przetrzymywać plik tekstowy (a dokładnie Html, KOD STRONY): w TMemo, TStrings czy przelatywać go od początku do końca, linia po linii funkcją ReadLn? Co jest lepszym rozwiązaniem?

Chce "wyłuskać" trochę danych z kodu strony i zastanawiam się co jest lepsze? (może jeszcze jakieś inne rozwiązanie?) Już wiem że do kodu strony będę zaglądał wiele razy.

Viele dank fur the answer! ;)

1
GROUPON napisał(a)

Chce "wyłuskać" trochę danych z kodu strony...

Nie wiem co chcesz zrobić, ale np. załaduj sobie stronkę do TStringList (ma metodę LoadFromFile) i wyszukuj za pomocą TRegExp. Na ten tamat znajdziesz sporo informacji na forum, poszukaj sobi np. postów olesia - bodajże dołączał do postów przykłady programów.

0

Dzięki za wskazówki. Wyrażeń regularnych nie znam, więc nie bardzo jestem w stanie cokolwiek zdziałać w tym temacie. (ale pewnie kiedyś trzeba będzie poznać). Ja wyłuskuje dane z pomocą Pos(), itp.

Co do TStringList widzę że jest to dobre rozwiązanie. DZIEKI!

0

Wyrażenia regularne nie są ciężkie do załapania - podejrzewam, że na twoje potrzeby wystarczyłyby podstawy - spróbuj - to się zawsze może przydać. Jak wpiszesz w google "wyrażenia regularne podstawy" znajdziesz sporo materiałów.

0

Pewnie tak, poczytam na ten temat.

Zrobiłem taki sam program na TMemo i TStringList. W obu wczytuje dane LoadFromFile. Przelatuje pętlą for w poszukiwaniu danych i te same dane znajduje w nieco innych liniach (wierszach) i tych samych kolumnach.

Przykład:

545 / 36 (na MEMO)

583 / 36 (na StringList)

Z czego to wynika? Limit długości linii w Memo, jakieś zawijanie (wrap?),.......??

0

Zgaduj zgadula, a gdzie kod?

0
madmike napisał(a)

Zgaduj zgadula, a gdzie kod?

for i:=0 to Memo1.Lines.Count do
begin
j:=0;
j:=Pos(szukany_string, Memo1.Lines[i]);
if j>0 then break;
end;

i to wiersz, j to kolumna


for i:=0 to PlikHTML.Count-1 do
begin
j:=0;
j:=Pos(szukany_string, PlikHTML[i]);
if j>0 then break;
end;

i to wiersz, j to kolumna

0

zarówno TMemo jak i TStrinList mają taką fajną rzecz jak Text. Spróbuj czegoś takiego:

if Pos(szukany_string, Memo1.Text) > -1 then
   begin
   //tu robisz to co masz robić
   end
0

Rozumiem, że potrzebuję tego żeby się dowiedzieć czy w ogóle tekst szukany_string istnieje w całym pliku (html)?

0
   Memo1.Lines.LoadFromFile('jakiś tam.html');
   szukany_tekst := 'tutaj';
   
   if Pos(szukany_string, Memo1.Text) > -1 then
      begin
      //tekst istnieje, więc tu robię to co mam zrobić
      end
      else
         begin
         //tekst nie istnieje, więc tu może nic nie robię
         end;
0

Powinno być większe od zera ( > 0 ), a nie > - 1. Pos jak nie znajdzie substringa to zwraca 0 (zero).

http://delphi.about.com/od/beginners/l/blrtlPos.htm

0

możliwe... ;)

0

TRegExp lub SynEdit do oznaczenia składni (będzie bardziej czytene)

0
Proqix Polaczeq napisał(a)

TRegExp lub SynEdit do oznaczenia składni (będzie bardziej czytene)
Rozwiń to, bo dla mnie to co napisałeś jest nieczytelne... albo nielogiczne...

1

Co do wyrażeń regularnych polecam ten moduł z pod
poniższego adresu. Są przykłady oraz dokumentacja,
poza tym w Google na temat RegExpr jest masę info.

http://www.mediafire.com/file/czhw3mmzjyn/regexpr.rar

0

Dziękuje!

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