class ScraperError(Exception): """Base scraper exception.""" class AntiBotDetectedError(ScraperError): """Raised when the target website appears to block automation.""" class SiteStructureChangedError(ScraperError): """Raised when the page shape changed and required data is missing."""