Newer versions of Python, in this case, Python 3 have HTML parser capabilities. I have Visual Studio code here, and what I have here as content is lots of table rows and table data, basically, extracted from a page that is representing HTML data with CVs which are common vulnerability. IVs that are representing a vulnerability in a piece of software. Let's just assume, for example, that you want to extract the value of the a tag here. In this case, this thing here is CVE 2009, 4186. How you do that? Well, first let's run that cell. Let's go back to the left. We have the content here. Triple quotes is pretty extensive. So it's very horrible really. So you want to parse that. How you do that? Well, HTMLParser works with a class. I have here the bare-bones class. You create this parser class you inherit from HTMLParser which we've imported from the parser module over here. You create the init. You have to use super. One trick that I use is the self recording. I set that to false. What is going on here? Well, basically we need to tell this parser when it finds a tag. We're going to do that in handle starttags. That means that every single tag it finds, you'll get that here, and you'll check. We want to check if we're getting the a tag. We are going to be doing something like this, if tag equals a. We're going say self recording, we want to record the data, is going to be true. You're going to see why this is critical here. Let's say else self recording equals false. Now, that's just saying the start of a tag, so something interesting that we want to look at, in this case, the a tag. Now, handle data will be able to tell us like if we're self recording, we can say something like print. When you set f strings here, found a tag info. I'm going to do curly brackets here, and then here I'm going to use data. I'm going to run this and see what happens. Well, we're going to execute this so that the code exists, and next we're going to call it. The way you call it is you create an instance of our class. Parser is our class over here. That's where we've named it. Next we're going to parse the content into feed, and we'll see what happens there. I'm going to run it. We're getting some values here. But you can see that some of these don't have anything in them. What's going on? Well, the HTMLParser is tricky to deal with. What we need to do is we need to rely on setting a false statement here, set recording to false every time we're done extracting what we want. I'm going to run this again. That should make it better. Now you can see here that now whenever the a tag is found, our recording is set to false, so it's only capturing exactly what we need. That said, really that's all you need to parse with HTMLParser. Here's the class again, we've created a class, we've set up the init, we found the starttag, in this case, a is the tag that we want to look at, and handled data, well, sets the self recording to false once it's done, and then you can see it works perfectly. That's how you will use the HTMLParser class in the parser module.