diff --git a/README.rst b/README.rst index bcb1ad8cd..d521ace33 100644 --- a/README.rst +++ b/README.rst @@ -370,6 +370,7 @@ Scrapers available for: - `https://recipetineats.com/ `_ - `https://redhousespice.com/ `_ - `https://reishunger.de/ `_ +- `https://rewe.de/ `_ - `https://rezeptwelt.de/ `_ - `https://ricetta.it/ `_ - `https://ricette.giallozafferano.it/ `_ diff --git a/recipe_scrapers/__init__.py b/recipe_scrapers/__init__.py index ea538b3e8..3739e60eb 100644 --- a/recipe_scrapers/__init__.py +++ b/recipe_scrapers/__init__.py @@ -317,6 +317,7 @@ from .recipetineats import RecipeTinEats from .redhousespice import RedHouseSpice from .reishunger import Reishunger +from .rewe import Rewe from .rezeptwelt import Rezeptwelt from .ricetta import Ricetta from .ricetteperbimby import RicettePerBimby @@ -562,6 +563,7 @@ Recept.host(): Recept, ReceptyPreVas.host(): ReceptyPreVas, RecipeGirl.host(): RecipeGirl, + Rewe.host(): Rewe, RicettePerBimby.host(): RicettePerBimby, SandwhichTribunal.host(): SandwhichTribunal, SavoryNothings.host(): SavoryNothings, diff --git a/recipe_scrapers/rewe.py b/recipe_scrapers/rewe.py new file mode 100644 index 000000000..32efd31d1 --- /dev/null +++ b/recipe_scrapers/rewe.py @@ -0,0 +1,80 @@ +import ast +import re + +from ._abstract import AbstractScraper +from ._utils import get_minutes, normalize_string + + +class Rewe(AbstractScraper): + @classmethod + 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: + text = item.find("div", {"class": "ld-rds flex-[1_0_0%]"}) + ingredient_text = ( + text.get_text(" ", strip=True).replace("\n", "").replace(" ", " ") + ) + ingredient_text = re.sub(r"\s+", " ", ingredient_text) + + ingredients.append(ingredient_text) + + return ingredients + + def instructions(self): + step_divs = self.soup.find_all("div", {"class": "step-ingredients"}) + steps = [] + + for step in step_divs: + instruction = step.find( + "div", + { + "class": "ld-rds mt-4 self-stretch text-sm leading-5 text-gray-1000 md:text-base lg:mt-6 lg:leading-6 [&_a:hover]:text-brand-800 [&_a]:underline [&_a]:underline-offset-3" + }, + ) + + 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"] diff --git a/tests/test_data/rewe.de/rewe.json b/tests/test_data/rewe.de/rewe.json new file mode 100644 index 000000000..6e2e28ea3 --- /dev/null +++ b/tests/test_data/rewe.de/rewe.json @@ -0,0 +1,42 @@ +{ + "author": null, + "canonical_url": "https://www.rewe.de/rezepte/wintergemuese-gnocchi-pfanne-kraeuterdip/", + "site_name": "Rewe.de", + "host": "rewe.de", + "language": "de", + "title": "Wintergemüse-Gnocchi-Pfanne mit Kräuterdip", + "ingredients": [ + "800 g REWE Beste Wahl Gnocchi (Kühlregal)", + "Salz", + "2 rote Zwiebeln", + "0.5 Spitzkohl", + "2 Möhren", + "1 Stange(n) Lauch", + "1 Rote Bete (frisch)", + "50 g REWE Beste Wahl aromatische Walnüsse", + "2 EL Rohrzucker", + "0.5 Bd. Schnittlauch", + "0.5 Bd. Petersilie", + "400 g Quark (Halbfettstufe)", + "Pfeffer", + "Zitronensaft", + "1 Prise(n) Zucker", + "3 EL Rapsöl", + "Muskatnuss" + ], + "instructions_list": [ + "Gnocchi gegebenenfalls (Packungsanweisung beachten) in Salzwasser al dente kochen.", + "Zwiebeln schälen, in feine Streifen schneiden. Kohl putzen, in Streifen schneiden. Möhren schälen und stifteln. Lauch der Länge nach halbieren, gut waschen und in halbe Ringe schneiden. Rote Bete schälen und in dünne Scheiben hobeln.", + "Walnüsse grob hacken und mit Rohrzucker in einer Pfanne unter Rühren rösten, sodass der Zucker leicht karamellisiert.", + "Für den Dip Kräuter hacken und unter den Quark rühren. Dip mit Salz, Pfeffer, Zitronensaft und einer Prise Zucker abschmecken.", + "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", + "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.63, + "ratings_count": 35, + "image": "https://c.rewe-static.de/31535699/6/31535699.png" +} diff --git a/tests/test_data/rewe.de/rewe.testhtml b/tests/test_data/rewe.de/rewe.testhtml new file mode 100644 index 000000000..3ac4ff764 --- /dev/null +++ b/tests/test_data/rewe.de/rewe.testhtml @@ -0,0 +1,1443 @@ +Wintergemüse-Gnocchi-Pfanne mit Kräuterdip Rezept - REWE.de
  • rewe.de
  • Jobs bei REWE

Rezept des Tages +

Wintergemüse-Gnocchi-Pfanne mit Kräuterdip

Wintergemüse-Gnocchi-Pfanne mit Kräuterdip +

+ +
Gesamtzeit
+
Einfach +
35

Zubereitung +

+ +
  • 800 g Gnocchi (Kühlregal)
  • Salz

Gnocchi gegebenenfalls (Packungsanweisung beachten) in Salzwasser al dente kochen.

+ +
  • Sparschäler
  • Hobel
+ +
  • 2 rote Zwiebeln
  • 0.5 Spitzkohl
  • 2 Möhren
  • 1 Stange(n) Lauch
  • 1 Rote Bete (frisch)

Zwiebeln schälen, in feine Streifen schneiden. Kohl putzen, in Streifen schneiden. Möhren schälen und stifteln. Lauch der Länge nach halbieren, gut waschen und in halbe Ringe schneiden. Rote Bete schälen und in dünne Scheiben hobeln.

+ +
  • 50 g Walnüsse
  • 2 EL Rohrzucker

Walnüsse grob hacken und mit Rohrzucker in einer Pfanne unter Rühren rösten, sodass der Zucker leicht karamellisiert.

+ +
  • 0.5 Bd. Schnittlauch
  • 0.5 Bd. Petersilie
  • 400 g Quark (Halbfettstufe)
  • Pfeffer
  • Zitronensaft
  • 1 Prise(n) Zucker

Für den Dip Kräuter hacken und unter den Quark rühren. Dip mit Salz, Pfeffer, Zitronensaft und einer Prise Zucker abschmecken.

+ +
  • 2 EL Rapsöl
  • Muskatnuss

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.

+ +
  • 1 EL Rapsöl

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.

Wintergemüse-Gnocchi-Pfanne mit Kräuterdip

Tipp zum Rezept +

Noch besser schmeckt die Gnocci-Pfanne natürlich mit selbergemachten Gnocchi.

Anne Lippert Bild
Food Stylistin & Ökotrophologin

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.

Lecker gespart +

Hier findest du unsere besten Angebotsrezepte der Woche. +

+ + Angebotsrezepte entdecken +
\ No newline at end of file