from typing import Dict from .base import BaseParser class OpenGraphParser(BaseParser): allowed_og_properties = { "og:title", "og:description", "og:image", } def extract_data(self) -> Dict[str, str]: meta = self._soup.findAll("meta") result = {} for tag in meta: if not tag.has_attr("property"): continue if tag["property"] not in self.allowed_og_properties: continue og_property_name = tag["property"][len("og:") :] if not tag.has_attr("content"): continue result[og_property_name] = tag["content"] return result