Usuwanie skryptów z ze strony html

0

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

obecnie mój kod wygląda tak:

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

0

A wybiera jakieś Nody

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

0

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

0

Rzeczywiście przy zastosowaniu

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ą?

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?

0

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

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