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!
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!
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! ;)
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.
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!
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.
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?),.......??
Zgaduj zgadula, a gdzie kod?
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
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
Rozumiem, że potrzebuję tego żeby się dowiedzieć czy w ogóle tekst szukany_string istnieje w całym pliku (html)?
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;
Powinno być większe od zera ( > 0 ), a nie > - 1. Pos jak nie znajdzie substringa to zwraca 0 (zero).
możliwe... ;)
TRegExp lub SynEdit do oznaczenia składni (będzie bardziej czytene)
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...
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.
Dziękuje!