Usuwanie skryptów z ze strony html

Usuwanie skryptów z ze strony html
KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

Problem: potrzeba usunięcia skryptów (tagi <script> i ich zawartości) ze strony html

obecnie mój kod wygląda tak:

Kopiuj
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
            htmlDoc.OptionFixNestedTags = true;
            HtmlWeb web = new HtmlWeb();
var html =
        @"<TD class=texte width=""50%"">
			<DIV align=right>Name :<B> </B></DIV>
<script>to jest skrypt1</script>
		</TD>
		<TD width=""50%"">
    		<INPUT class=box value=John maxLength=16 size=16 name=user_name>
    		<INPUT class=box value=Tony maxLength=16 size=16 name=user_name>
    		<INPUT class=box value=Jams maxLength=16 size=16 name=user_name><script>to jest skrypt2</script>
		</TD>
		<TR vAlign=center>";
htmlDoc.LoadHtml(html);

            Console.WriteLine("Przed");
            Console.WriteLine(htmlDoc.Text);
            htmlDoc = RemoveScripts(htmlDoc);
Console.WriteLine("");
            Console.WriteLine("PO");
            Console.WriteLine(htmlDoc.Text);
Console.ReadKey();

public static HtmlAgilityPack.HtmlDocument RemoveScripts(HtmlAgilityPack.HtmlDocument webDocument)
        {

            // Get all Nodes: script
            HtmlAgilityPack.HtmlNodeCollection Nodes = webDocument.DocumentNode.SelectNodes("//script");

            // Make sure not Null:
            if (Nodes == null)
            {
                Console.WriteLine("brak scripts");
                return webDocument;
            }


            // Remove all Nodes:
            foreach (HtmlNode node in Nodes)
            {
                Console.WriteLine("są scripts");
                node.Remove();
            }
                

            return webDocument;

        }

i niestety kod początkowy i niby po usunięciu tagów script wygląda identycznie.

nie wiem dlaczego kod nie działa bo na necie ludzie opisują identyczne problemy i mają identyczny kod (zresztą swój kod opierałem też na artykule który opisywał taki problem), ale niestety u mnie to nie działa.

Jakieś porady? z góry dzięki

zrzut z działania programu tutaj: https://github.com/MyTempCode/temp/blob/main/temp.png

edytowany 2x, ostatnio: KiK
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0

A wybiera jakieś Nody

KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

no dwa nody script widzi bo są dwa wpisy 2x "sa script" (widoczne na zrzucie https://github.com/MyTempCode/temp/blob/main/temp.png) ale ich nie usuwa mimo że jest node.Remove

sorki zapomniałem na początku wrzucić kod metody RemoveScripts wrzuciłem do pierwszego wpisu

edytowany 1x, ostatnio: KiK
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0

Kod jest OK.
Zamiast htmlDoc .Text sprawdzaj htmlDoc.DocumentNode.InnerHtml

KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

Rzeczywiście przy zastosowaniu

Kopiuj
htmlDoc.DocumentNode.InnerHtml

skrypty się nie pojawiają
ale teraz to już zgłupiałem
przecież skoro "wyrzuciłem" skrypty to w htmlDoc w ogóle ich nie powinno być czy zastosuję .Text czy .DocumentNode.InnerHtml dlaczego przy .Text ona się ciągle pojawiają?

KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

W przykładzie na górze wykorzystuję HtmlAgilityPack a czy dałoby się, czy ktoś tego próbował żeby usunąć wszystkie skrypty i załadować stronę do drivera np. chrome ? i później "obrabiać" stronę za pomocą frameworka selenium?

edytowany 1x, ostatnio: KiK
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0

Widocznie Text się nie aktualizuje po zmianach w nodach.
A brakuje Ci czegoś w AgilityPack?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.