Skip to content
Image
Programmingoneonone
Programmingoneonone

Learn everything about programming

  • Home
  • CS Subjects
    • Internet of Things (IoT)
    • Digital Communication
    • Human Values
    • Cybersecurity
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
Programmingoneonone
Programmingoneonone

Learn everything about programming

HackerRank HTML Parser – Part 1 solution in Python

Image YASH PAL, 31 July 202417 January 2026

HackerRank HTML Parser – Part 1 solution in Python – In this HTML Parser – Part 1 problem You are given an HTML code snippet of N lines. Your task is to print start tags, end tags, and empty tags separately.

HTML
Hypertext Markup Language is a standard markup language used for creating World Wide Web pages.

Parsing
Parsing is the process of syntactic analysis of a string of symbols. It involves resolving a string into its component parts and describing their syntactic roles.

HTMLParser
An HTMLParser instance is fed HTML data and calls handler methods when start tags, end tags, text, comments, and other markup elements are encountered.

Example (from the Python 3 documentation):

Code

from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Encountered a start tag:", tag)

    def handle_endtag(self, tag):
        print("Encountered an end tag :", tag)

    def handle_data(self, data):
        print("Encountered some data  :", data)

parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'
            '<body><h1>Parse me!</h1></body></html>')

Output

Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h1
Encountered some data  : Parse me!
Encountered an end tag : h1
Encountered an end tag : body
Encountered an end tag : html  

.handle_starttag(tag, attrs)

This method is called to handle the start tag of an element. (For example: <div class=’marks’>)
The tag argument is the name of the tag converted to lowercase.
The attrs argument is a list of (name, value) pairs containing the attributes found inside the tag’s <> brackets.

.handle_endtag(tag)

This method is called to handle the end tag of an element. (For example: </div>)
The tag argument is the name of the tag converted to lowercase.

.handle_startendtag(tag,attrs)

This method is called to handle the empty tag of an element. (For example: <br />)
The tag argument is the name of the tag converted to lowercase.
The attrs argument is a list of (name, value) pairs containing the attributes found inside the tag’s <> brackets.


HackerRank HTML Parser - Part 1 solution in python

HackerRank HTML Parser – Part 1 solution in Python 2.

from HTMLParser import HTMLParser

# create a subclass and override the handler methods
class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print "Start :", tag
        for attr in attrs:
            print "->", attr[0], ">", attr[1]
    def handle_endtag(self, tag):
        print "End   :", tag
    def handle_startendtag(self, tag, attrs):
        print "Empty :", tag
        for attr in attrs:
            print "->", attr[0], ">", attr[1]

N = int(input())
parser = MyHTMLParser()

for i in xrange(N):
    parser.feed(raw_input())

HTML Parser – Part 1 solution in Python 3.

# 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 ('Start :',tag)
        for ele in attrs:
            print ('->',ele[0],'>',ele[1])
            
    def handle_endtag(self, tag):
        print ('End   :',tag)
        
    def handle_startendtag(self, tag, attrs):
        print ('Empty :',tag)
        for ele in attrs:
            print ('->',ele[0],'>',ele[1])
            
MyParser = MyHTMLParser()
MyParser.feed(''.join([input().strip() for _ in range(int(input()))]))

Problem solution in pypy programming.

from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        if tag == 'comment':
            return None
        print('Start : {0}'.format(tag))
        if attrs:
            for el in attrs:
                print('-> {0} > {1}'.format(el[0], el[1]))
    def handle_endtag(self, tag):
        if tag == 'comment':
            return None
        print('End   : {0}'.format(tag))
    def handle_startendtag(self, tag, attrs):
        if tag == 'comment':
            return None
        print('Empty : {0}'.format(tag))
        if attrs:
            for el in attrs:
                print('-> {0} > {1}'.format(el[0], el[1]))
        
h = MyHTMLParser()
single_html_str = ''
for _ in range(input()):
    single_html_str += raw_input()
h.feed(single_html_str)

Problem solution in pypy3 programming.

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

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print ("Start :", tag)
        self.value(attrs)

    def handle_endtag(self, tag):
        print ("End   :", tag)

    def handle_startendtag(self, tag, attrs):
        print ("Empty :", tag)
        self.value(attrs)

    def value(self, attrs = None):
        if attrs:
            [print('->', attr, '>', val) for attr, val, in attrs]

ss = 'n'.join([input() for x in range(int(input()))])
parser = MyHTMLParser()
parser.feed(ss)

coding problems solutions Hackerrank Problems Solutions Python Solutions HackerRankPython

Post navigation

Previous post
Next post
HackerRank Python Solutions
Say “Hello, World!” With Python solution
Python If-Else problem solution
Arithmetic Operators problem solution
Python Division problem solution
Loops problem solution
Write a function problem solution
Print Function problem solution
List Comprehensions problem solution
Find the Runner-Up Score! problem solution
Nested Lists problem solution
Finding the percentage problem solution
Lists problem solution
Tuples problem problem solution
sWAP case problem solution
String Split and Join problem solution
What’s Your Name? problem solution
Mutations problem solution
Find a string problem solution
String Validators problem solution
Text Alignment problem solution
Text Wrap problem solution
Designer Door Mat problem solution
String Formatting problem solution
Alphabet Rangoli problem solution
Capitalize! problem solution
The Minion Game problem solution
Merge the Tools! problem solution
itertools.product() problem solution
collections.Counter() problem solution
itertools.permutations() problem solution
collections.Counter() problem solution
itertools.permutations() problem solution
Polar Coordinates problem solution
Introduction to Sets problem solution
DefaultDict Tutorial problem solution
Calendar Module problem solution
Exceptions problem solution
Collections.namedtuple() problem solution
Time Delta problem solution
Find Angle MBC problem solution
No Idea! problem solution
Collections.OrderedDict() problem solution
Symmetric Difference problem solution
itertools.combinations() problem solution
Incorrect Regex problem solution
Set .add() problem solution
itertools.combinations_with_replacement() problem solution
Word Order problem solution
Set .discard(), .remove() & .pop() problem solution
Collections.deque() problem solution
Compress the String! problem solution
Company Logo problem solution
Set .union() Operation problem solution
Piling Up! problem solution
Triangle Quest 2 problem solution
Iterables and Iterators problem solution
Set .intersection() Operation problem solution in python
Mod Divmod problem solution
Power — Mod Power problem solution
Maximize It! problem solution
Set .difference() Operation problem solution
Integers Come In All Sizes problem solution
Set .symmetric_difference() Operation problem solution
Set Mutations problem solution
Triangle Quest problem solution
The Captain’s Room problem solution
Check Subset problem solution
Check Strict Superset problem solution
Classes: Dealing with Complex Numbers problem solution
Class 2 — Find the Torsional Angle problem solution
Zipped! problem solution
Input() problem solution
Python Evaluation problem solution
Athlete Sort problem solution
Any or All problem solution
ginortS problem solution
Detect Floating Point Number problem solution
Map and Lambda Function problem solution
Re.split() problem solution
Validating Email Addresses With a Filter problem solution
Group(), Groups() & Groupdict() problem solution
Reduce Function problem solution
Re.findall() & Re.finditer() problem solution
Re.star() & Re.end() problem solution
Regex Substitution problem solution
Validating Roman Numerals problem solution
Validating Phone Numbers problem solution
Validating and parsing Email Addresses problem solution
Hex Color Code problem solution
HTML Parser — Part 1 problem solution
HTML Parser — Part 2 problem solution
Detect HTML Tags, Attributes and Attributes Values problem solution
XML 1 — Find the Score problem solution
Validating UID problem solution
Validating Credit Card Numbers problem solution
XML2 — Find the Maximum Depth problem solution
Standardize Mobile Number using Decorators problem solution
Validating Postal Codes problem solution
Decorators 2 — Name Directory problem solution
Matrix Script problem solution
Words Score problem solution
Arrays problem solution
Shape and Reshape problem solution
default Arguments problem solution
Transpose and Flatten problem solution
Concatenate problem solution
Zeros and One’s problem solution
Eye and Identity problem solution
Array Mathematics problem solution
Floor, Ceil, and Rint problem solution
Sum and Prod problem solution
Min and Max problem solution
Mean, Var, and Std problem solution
Dot and cross problem solution
Inner and Outer problem solution
Polynomials problem solution
Linear Algebra problem solution

Pages

  • About US
  • Contact US
  • Privacy Policy

Follow US

  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2026 Programmingoneonone | WordPress Theme by SuperbThemes
Advertisement