# Course 40 - Web Scraping with Python | Episode 10: Navigating and Extracting Web Data with Beautiful Soup Page: https://stenobird.com/podcast/cybercode-academy-7578615/course-40-web-scraping-with-python-episode-10-navigating-and-extracting-web-data-with-beautiful-soup Text version: https://stenobird.com/podcast/cybercode-academy-7578615/course-40-web-scraping-with-python-episode-10-navigating-and-extracting-web-data-with-beautiful-soup.md Podcast: [CyberCode Academy](https://stenobird.com/podcast/cybercode-academy-7578615) Published: 2026-07-20T06:00:02+00:00 Episode link: https://www.spreaker.com/episode/course-40-web-scraping-with-python-episode-10-navigating-and-extracting-web-data-with-beautiful-soup--72756824 Audio file: https://dts.podtrac.com/redirect.mp3/api.spreaker.com/download/episode/72756824/parsing_broken_html_with_beautiful_soup.mp3 Processing state: not_requested JSON: https://stenobird.com/v1/public/podcasts/cybercode-academy-7578615/episodes/course-40-web-scraping-with-python-episode-10-navigating-and-extracting-web-data-with-beautiful-soup Duration seconds: 1104 ## Resource In this lesson, you’ll learn about: how HTML is structured as a tree, how to turn raw pages into navigable data using Beautiful Soup, and how to extract specific elements efficiently1. Understanding the HTML Parse Tree🔹 The Structure of a Web PageEvery web page is a hierarchical tree made of nodes: Root → Children → and Siblings → elements at the same level 🔹 Key Sections → metadata (title, scripts, styles) → visible content 👉 Key Insight Scraping is really about navigating this tree intelligently2. Turning HTML into Data (Beautiful Soup)🔹 The Core ToolUse Beautiful Soup Converts raw HTML → structured Python object Makes navigation simple and readable 🔹 Why It’s Powerful Handles messy HTML Supports multiple parsers Easy to search and extract 3. Choosing the Right Parser🔹 Available ParsersParserStrengthlxmlFast and efficienthtml5libHandles broken HTML🔹 When to Use Each Use lxml → performance Use html5lib → unreliable or malformed pages 👉 Pro Insight Real-world pages are often messy → parser choice matters4. From Request to Parsed Tree🔹 Workflow Overview Send HTTP request Receive HTML Parse with Beautiful Soup Navigate and extract 🔹 Example Setupimport requests from bs4 import BeautifulSoup r = requests.get("https://example.com") soup = BeautifulSoup(r.text, "lxml") 5. Extracting Text Content🔹 Headers & Paragraphstitle = soup.h1.string paragraph = soup.p.string 👉 Use Case Blog titles Article content Product descriptions 6. Extracting Attributes (Links & Images)🔹 Accessing Attributeslink = soup.a["href"] image = soup.img["src"] 👉 What You Can Extract URLs Image sources Metadata 7. Working with CSS Classes🔹 Finding Elements by Classitems = soup.find_all("div", class_="product") 🔹 Important Note Classes can be multi-valued 👉 Beautiful Soup handles this intelligently… ## Actions - request_transcript: `POST https://stenobird.com/v1/public/podcasts/cybercode-academy-7578615/episodes/course-40-web-scraping-with-python-episode-10-navigating-and-extracting-web-data-with-beautiful-soup/transcription-requests` — Idempotently request low-priority transcript generation for this episode. - read_markdown: `GET https://stenobird.com/podcast/cybercode-academy-7578615/course-40-web-scraping-with-python-episode-10-navigating-and-extracting-web-data-with-beautiful-soup.md` — Read the agent-friendly Markdown representation of this episode resource. A page view does not enqueue transcription. Agents should invoke `request_transcript` explicitly when they need this episode processed. ## Transcript Full transcripts are not published on public pages unless there is a clear rights basis.