zawartość strony bez znaczników html-problem

0

witam,

mam problem i w związku z tym prośbę o rozwiązanie lub chociaż konkretne fachowe wskazówki, a mianowicie:

jak pobrać zawartość strony html.. zawartosc body.. bez znaczników bez żadnego! ani żadnych śmieci? ja używam tego:

string takeBody(string OnlyBodyTxt)
        {
            // usuwa wszystko przed body
            OnlyBodyTxt = Regex.Replace(OnlyBodyTxt, @"^((.*)?(\n))+(.*)?<body(([^<]*)[\n]?)+([^<]*)?>", " "); 
          //usuwa znaczniki &nbsp.. itd..
            OnlyBodyTxt = Regex.Replace(OnlyBodyTxt, @"(<([^<]|\n)+?>)|(&nbsp;)|(&raquo;)", " "); 
            // jeszcze raz usuwa bo czasem sa zagniezdzone znaczniki w skryptach javy itd..  
            OnlyBodyTxt = Regex.Replace(OnlyBodyTxt, @"(<([^<]|\n)+?>)", " ");
            return OnlyBodyTxt;
        }

działa dobrze ale gdy czytam strony z całego katalogu strasznie długo to trwa.. lub gdy plik nie ma znaczników.. no nie doczekanie.. problemem może tu być sprawdzanie czy każdy znak [^<]..

proszę o pomoc

0

Cos mi sie zdaje, ze przekombinowales z wyrazeniem. Takie nie wystarczy?
http://weblogs.asp.net/rosherove/archive/2003/05/13/6963.aspx

0

dzięki za zainteresowanie.. :)

takie nie wystarczy, gdyż zostawia często śmieci tj. np. gdy mamy:

dostajemy: .noscript {display:none;} bo pomija '<' przed "STYLE>"
i tu jest problema :-/ , więc zrobiłem, że jest ok, ale za to wolno.. umiałby to ktoś zmodyfikować aby było prawidłowo ale mniej skomplikowanie??

0

To usuwaj najpierw te znaczniki, ktore powinny zniknac z cala zawartoscia, typu style, object, applet, script. A pozniej juz tym powyzej. Jak bede mial czas wieczorem to rzuce okiem, chyba, ze do tego czasu uda Ci sie wymyslic.

Ja bym to robil petla:
<\sstyle\s>\s*[^<]\s<\s*/\sstyle\s>
podkladajac po kolei nazwy tagow, a pozniej tamtym reszte + jeszcze jednym encje typu  . Z tymze przy encjach to raczej w wyrazeniu wszystkie encje wymienione, jezeli chcesz je usuwac, a petla jesli zamieniac na odpowiedniki.

0

hmmm..

byłbym wdzięczny gdybyś ożywił nieco tą idee :), tak więc czekam na pomysł

dzięki i pozdrawiam

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