Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: How do we remove specific HTML tag

by Marshall (Canon)
on Nov 07, 2021 at 03:16 UTC ( [id://11138537]=note: print w/replies, xml ) Need Help??


in reply to How do we remove specific HTML element

I don't know about a completely general HTML solution because I am not an HTML expert. However, it could be that something simple would work ok? Here is some code that stops printing <nav sections after it has seen the first one. You could adapt this to your desired nth parameter functionality.
use strict; use warnings; my $nav_seen =0; while (<DATA>) { # if inside of <nav> section, print it # unless we have seen a <nav> section before if (my $status = /<nav/ ... /<\/nav/) { print unless $nav_seen; $nav_seen++ if $status =~ /E/; } else {print} } =PRINTOUT <body> <nav a=b> <div> </div> </nav> <div> </div> </body> =cut __DATA__ <body> <nav a=b> <div> </div> </nav> <div> </div> <nav c=d> <li> </li> </nav> </body>
To understand how this works, I direct you to Flipin good, or a total flop?.

Replies are listed 'Best First'.
Re^2: How do we remove specific HTML tag
by haukex (Archbishop) on Nov 07, 2021 at 05:36 UTC
      We don't really have any idea of how general purpose that the OP's function needs to be.
      The OP's test input is very simple and doesn't demo anything complex.
      It would be appropriate for the OP to post an extended test case.
      I like your link+ and the discussion therein.
      I certainly don't propose my simple code to be anything other than perhaps a "hack" to deal with one particular webpage.

        That's kind of the point. He might have matching cruft in a CDATA section, or (more likely) inside a comment because the web designer decided to move something around but left the old location in place for reference and never cleaned up afterwards. You've handed him a ticking bomb prossibly starting him off with a bad habit and sooner than later that's going to go boom.[1] You don't know what his actual data is so the best answer is the most generally correct one: don't try and wing it handling HTML with regexen, use a proper parser.

        [1] – "No boom today. Boom Tomorrow. There's always a boom tomorrow."

        The cake is a lie.
        The cake is a lie.
        The cake is a lie.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11138537]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (2)
As of 2024-04-26 03:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found