In this Detect HTML, Tags Attributes and Attributes values problem, You are given an HTML code snippet of N lines. Your task is to detect and print all the HTML tags, attributes and attribute values.

HackerRank Detect HTML Tags, Attributes and Attribute values solution in python


Problem solution in Python 2 programming.

import re
num_lines = input()
lines = [raw_input() for i in xrange(num_lines)]
text = ' '.join(lines)
text = re.sub(r'<!--.*?-->', '', text, flags=re.DOTALL)

from HTMLParser import HTMLParser
class Parser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print tag
        for name, val in attrs:
            print '->', name, '>', val

Parser().feed(text)


Problem solution in Python 3 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print(tag)
        [print('-> {} > {}'.format(*attr)) for attr in attrs]
        
html = '\n'.join([input() for _ in range(int(input()))])
parser = MyHTMLParser()
parser.feed(html)
parser.close()


Problem solution in pypy programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
from HTMLParser import HTMLParser

class parseHTML(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print tag
        for attr in attrs:
            print "->", attr[0], ">", attr[1]

parser = parseHTML()
for _ in xrange(input()):
    parser.feed(raw_input())


Problem solution in pypy3 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT

from html.parser import HTMLParser


class MyHTMLParser(HTMLParser):
    def handle_starttag(self,tag, attrs):
        print(tag)
        for i in attrs:
            print("->",i[0],">",i[1])
        
    def handle_startendtag(self,tag, attrs):
        print(tag)
        for i in attrs:
            print("->",i[0],">",i[1])


N=int(input())
tmp=""
for _ in range(N):
    tmp=tmp+input()+"\n"
    

    
psr=MyHTMLParser()
psr.feed(tmp)