Join us and get access to thousands of tutorials and a community of expert Pythonistas.
This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.
Exploring the Soup in Interactive Mode
00:00 Just as before, I want to again open up Python interpreter to play around with this a little bit before deciding which approach I am going to take to tackle the little tasks that I have.
00:10 And something that I like to use that I find quite useful is that I do not want to start a completely fresh interpreter, but I want to run my script in interactive mode, which means that Python is going to execute the script and then put me into a REPL at the end of it.
00:25
And I can do that by saying python -i and then get links.
00:32
So this -i runs your script and then puts you into a REPL that has understanding of the context of variables that you defined in the script.
00:42 Okay. When I run this, you can see that I get the printout of the type of the object, but now I also have access to the Beautiful Soup object and I can continue working with it, just using my REPL here.
00:54
Okay, so for example, what I want to do, this tasks out here, I want to find the link tags so I can, with Beautiful Soup, I can say soup.find and then pass in a type of tag that I want to find.
01:07
I know that these are a tags, the links, so they’re called a. And if I do soup.find and pass it a, I get the first link object returned, just like that.
01:18
You know, I didn’t have to do anything with indices like I had before, so that’s a lot easier, right? Okay. But it only gives me the first one. But of course there’s also another function here that’s called find_all().
01:30
And then I can pass in the a as an argument here again and this will give me a list of all of the a tags that are inside of this HTML.
01:44
Altight. That brings me pretty close to the solution already, right? With just this one line of code I have access to all of the different a tags.
01:53
Now I do need to get the value of the href attribute out of that. And you can do this by just using square bracket notation actually. So I need to do this for all three that go into a list here.
02:06
So I can loop over that list and say for link in soup.find_all all link tags.
02:19
I want to get the link URL, and that will be extracting href attribute the value of the href attribute from this Beautiful Soup object.
02:33
Beautiful Soup returns Beautiful Soup objects, which then means you can like find_all returns those. So I can do things like using this square bracket notation again, let’s just print those out for now.
02:45
See what we get there. Print link href, and just like that as you can see, I’m halfway there. I got `profiles /aphrodite, profiles/Poseidon, profiles/ Dionysus.
03:00
Okay. And this also points me to something that I might run into if I don’t think about this more, because currently you can see that my URL includes profiles already, but then the stop URLs here that that point forward also include the /profiles.
03:14
So I might duplicate profiles if I just stick those together. So I will have to edit something around the base URL, and then extract the href of the three links using this for loop.
03:27 And yeah, stick it together and then I think it should be done. So that sounds like a plan. Let’s move on to the next lesson and tackle it.
Become a Member to join the conversation.