Mastering Web Scraping in Python: Crawling from Scratch