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 @@ -
Sparschäler, Hobel,
Sparschäler, Hobel,