From 0c81973599260622ea4435a734acd4fb5faf3cd8 Mon Sep 17 00:00:00 2001 From: Joey <7505194+jknndy@users.noreply.github.com> Date: Sun, 2 Feb 2025 15:08:43 -0800 Subject: [PATCH] new test and refactor (#1469) --- recipe_scrapers/rewe.py | 66 ++++-------------- tests/test_data/rewe.de/rewe.json | 6 +- tests/test_data/rewe.de/rewe.testhtml | 97 ++++++++++++++++----------- 3 files changed, 72 insertions(+), 97 deletions(-) diff --git a/recipe_scrapers/rewe.py b/recipe_scrapers/rewe.py index 5c5daafcd..e715439ad 100644 --- a/recipe_scrapers/rewe.py +++ b/recipe_scrapers/rewe.py @@ -1,9 +1,5 @@ -import ast -import re - from ._abstract import AbstractScraper -from ._exceptions import StaticValueException -from ._utils import get_minutes, normalize_string +from ._utils import normalize_string class Rewe(AbstractScraper): @@ -11,53 +7,26 @@ class Rewe(AbstractScraper): def host(cls): return "rewe.de" - def language(self): - return self.soup.find("html")["lang"] - - def author(self): - return self.schema.author() - - def title(self): - return self.soup.find("h1", {"class": "ld-rds"}).get_text() - - def category(self): - category = self.soup.find( - "a", {"id": "nutrition-information-mobile"} - ).get_text() - return normalize_string(category) - - def total_time(self): - x_data = self.soup.select_one( - "#recipe-basics>.ld-rds:first-child:first-child div:last-child span:first-child" - ).get("x-data") - - # Transform the `x-data` string into a dictionary - data_dict = ast.literal_eval( - re.sub(r"(\w+):", r"'\1':", x_data.replace("`", "'")) - ) - - # Return the "displayText" field - return get_minutes(data_dict["displayText"]) - - def yields(self): - return self.soup.find("span", {"x-text": "currentServings"}).get_text().strip() - def ingredients(self): ingredient_list = self.soup.find("ul", {"id": "ingredient_list"}) list_items = ingredient_list.find_all("li", {"class": "ingredient_list_item"}) ingredients = [] for item in list_items: - amount = normalize_string( - item.find("div", class_="formattedAmountDiv").get_text() - ) - ingredient = item.find( - "span", {"class": "ld-rds break-words leading-6"} - ).get_text(" ", strip=True) - ingredients.append( - normalize_string(f"{amount + ' ' if amount != '0' else ''}{ingredient}") + amount_div = item.find("div", {"class": "formattedAmountDiv"}) + amount = ( + normalize_string(amount_div.get_text(strip=True)) if amount_div else "" ) + name_span = item.find("span", {"class": "break-words"}) + name = normalize_string(name_span.get_text(strip=True)) if name_span else "" + + if amount == "0": + ingredients.append(name) + else: + ingredient_text = f"{amount} {name}".strip() + ingredients.append(ingredient_text) + return ingredients def instructions(self): @@ -75,12 +44,3 @@ def instructions(self): steps.append(instruction.get_text().strip()) return "\n".join(steps) - - def description(self): - return self.soup.find("meta", {"property": "og:description"})["content"] - - def canonical_url(self): - return self.soup.find("meta", {"property": "og:url"})["content"] - - def site_name(self): - raise StaticValueException(return_value="REWE") diff --git a/tests/test_data/rewe.de/rewe.json b/tests/test_data/rewe.de/rewe.json index ab14bce3f..78fc4f821 100644 --- a/tests/test_data/rewe.de/rewe.json +++ b/tests/test_data/rewe.de/rewe.json @@ -1,7 +1,7 @@ { "author": "Anne Lippert", "canonical_url": "https://www.rewe.de/rezepte/wintergemuese-gnocchi-pfanne-kraeuterdip/", - "site_name": "REWE", + "site_name": "Rewe.de", "host": "rewe.de", "language": "de", "title": "Wintergemüse-Gnocchi-Pfanne mit Kräuterdip", @@ -32,8 +32,8 @@ "2 EL Öl in einer großen Pfanne erhitzen, das Gemüse portionsweise, außer der roten Bete, unter Rühren 5 Minuten garen, sodass es gar ist aber noch leichten Biss hat. Mit Salz, Pfeffer und Muskatnuss würzen.", "Gemüse aus der Pfanne nehmen und Gnocchi im restlichen Öl kurz goldbraun braten. Dann das Gemüse, inklusive Rote Bete, wieder zugeben, mischen und nochmals mit Salz und Pfeffer würzen. Mit Walnüssen und Dip servieren." ], - "category": "Vegetarisch", - "yields": "4", + "category": "Abendessen, Hauptspeise, Mittagessen, Kindergerichte, Pfannengericht", + "yields": "4 servings", "description": "Wir treiben es gerne bunt! Starte auch du mit einer ausgewogenen Familien-Mahlzeit durch. Hol dir das REWE Rezept für Wintergemüse-Gnocchi-Pfanne & Kräuterdip.", "total_time": 45, "ratings": 4.69, diff --git a/tests/test_data/rewe.de/rewe.testhtml b/tests/test_data/rewe.de/rewe.testhtml index 35e6fa48d..d6059fa8c 100644 --- a/tests/test_data/rewe.de/rewe.testhtml +++ b/tests/test_data/rewe.de/rewe.testhtml @@ -1,4 +1,4 @@ -Wintergemüse-Gnocchi-Pfanne mit Kräuterdip Rezept - REWE.de
  • Anmelden
    • rewe.de
    • Jobs bei REWE
    Einfach
    42
    42
    42
    42
  • 0.5 Bd. -
    Petersilie
  • Petersilie
  • Zutaten bei REWE bestellen -

    Utensilien

    Sparschäler, Hobel,

    Sammel Euros mit REWE Bonus

    Lös dieses Guthaben jederzeit ein und spar beim Einkaufen

    Leg gleich los und sicher dir deinen 5 € Start-Bonus

    Utensilien

    Sparschäler, Hobel,

    Gib uns dein Feedback

    Hast du Feedback für unsere Redaktion? Hier kannst du uns Feedback zum Rezept geben.

    Gib uns dein Feedback

    Hast du Feedback für unsere Redaktion? Hier kannst du uns Feedback zum Rezept geben.

    Bewertungen mit Kommentar

    Hat's geschmeckt? Sag uns, wie dir unser Rezept gefallen hat.
    Dieses Rezept wurde noch nicht kommentiert, mit deiner Bewertung mit Kommentar hilfst du anderen dabei, schneller zu finden, was sie mögen.
    Du kannst deine Bewertung kommentieren, wenn du dich anmeldest.

    Bewertungen mit Kommentar

    Hat's geschmeckt? Sag uns, wie dir unser Rezept gefallen hat.
    Dieses Rezept wurde noch nicht kommentiert, mit deiner Bewertung mit Kommentar hilfst du anderen dabei, schneller zu finden, was sie mögen.
    Du kannst deine Bewertung kommentieren, wenn du dich anmeldest.
    Frittata mit Feldsalat
    • Glutenfrei
    1h 5min
    Einfach
    Gemüse-Crumble
    • Vegetarisch
    45min
    Einfach
    Grün-weißer Spargel-Reissalat mit Zitronen-Vinaigrette
    • Vegetarisch
    • Glutenfrei
    • Wenig Zucker
    45min
    Einfach

    Frittata mit Feldsalat
    • Glutenfrei
    1h 5min
    Einfach
    Gemüse-Crumble
    • Vegetarisch
    45min
    Einfach
    Grün-weißer Spargel-Reissalat mit Zitronen-Vinaigrette
    • Vegetarisch
    • Glutenfrei
    • Wenig Zucker
    45min
    Einfach

    Thunfisch Mousse
      15min
      Einfach
      Gemüse-Rösti
      • Vegetarisch
      • Glutenfrei
      45min
      Einfach