Transcribed

Course 40 - Web Scraping with Python | Episode 19: Tree Navigation, Advanced Filtering, and Link Extraction

Jul 29, 2026 · 22m 36s
Course 40 - Web Scraping with Python | Episode 19: Tree Navigation, Advanced Filtering, and Link Extraction
Description

In this lesson, you’ll learn about: advanced Beautiful Soup navigation, powerful filtering techniques, and how to extract and normalize real-world data like links from complex websites1. Advanced Tree Navigation🔹 Multi-Directional...

show more
In this lesson, you’ll learn about: advanced Beautiful Soup navigation, powerful filtering techniques, and how to extract and normalize real-world data like links from complex websites1. Advanced Tree Navigation🔹 Multi-Directional MovementBeautiful Soup allows you to move through HTML in three different dimensions:🔹 Vertical Navigationlist(tag.children) list(tag.descendants) tag.parent tag.parents
  • .children → direct children only
  • .descendants → all nested elements
  • .parent / .parents → move upward
👉 Key Insight
.children is shallow — .descendants is deep traversal🔹 Sideways Navigation (Siblings)tag.next_sibling tag.previous_sibling
  • Moves across elements at the same level
🔹 Chronological Navigation (Parser Order)tag.next_element tag.previous_element
  • Follows actual parsing sequence
  • Can move into text, nested tags, or out of structure
👉 Key Insight
next_element ≠ next_sibling
It follows document order, not hierarchy2. Advanced Filtering Techniques🔹 Precision Data Targeting3. Filtering with Regular Expressionsimport re soup.find_all(re.compile("^p"))
  • Matches tags starting with "p"
  • Useful for pattern-based selection
4. Filtering with Attributessoup.find_all("a", class_="nav") soup.find_all("div", id="main") soup.find_all("img", src=True)
  • class_ → avoids Python keyword conflict
  • src=True → finds elements that have the attribute
👉 Key Insight
You can filter by value OR existence of attributes5. Custom Function Filters (Power Feature)def has_src_no_href(tag): return tag.has_attr("src") and not tag.has_attr("href") soup.find_all(has_src_no_href) 👉 Key Insight
Custom functions = unlimited filtering logic6. Real-World Example: Link Extraction🔹 Extracting Links from a Page🔹 Extract All Linkslinks = soup.find_all("a") for link in links: print(link.get("href")) 7. Relative vs Absolute URLsTypeExampleRelative/aboutAbsolutehttps://site.com/about🔹 Convert to Absolutebase = "https://example.com" full_url = base + relative_url 👉 Key Insight
Most websites use relative links → you must normalize them8. Extracting All Resource Links# Anchor links soup.find_all("a") # Stylesheets / metadata soup.find_all("link") # Images soup.find_all("img") 👉 Key Insight
Data isn’t only in tags — it's everywhere9. Mental ModelThink of advanced scraping as:
  • 🧭 Navigation → move through tree
  • 🎯 Filtering → select exactly what you want
  • 🔗 Extraction → collect and normalize data
Final TakeawayAt this level, Beautiful Soup becomes more than a parser—it becomes a data navigation engine.Once you master:
  • Deep traversal (descendants, parents)
  • Smart filtering (regex + functions)
  • Real-world normalization (links, resources)
👉 You can extract any structured data from any HTML document, no matter how complex.

You can listen and download our episodes for free on more than 10 different platforms:
https://linktr.ee/cybercode_academy
show less
Information
Author CyberCode Academy
Organization CyberCode Academy
Website -
Tags

Looks like you don't have any active episode

Browse Spreaker Catalogue to discover great new content

Current

Podcast Cover

Looks like you don't have any episodes in your queue

Browse Spreaker Catalogue to discover great new content

Next Up

Episode Cover Episode Cover

It's so quiet here...

Time to discover new episodes!

Discover
Your Library
Search