From 8d26cd67322edae68718d15bf0b8c92d93319299 Mon Sep 17 00:00:00 2001 From: Bastian Kleineidam Date: Wed, 16 Oct 2024 18:23:08 +0200 Subject: [PATCH] Improve rezeptwelt.de recipe parsing This change improves the parser of recipes at rezeptwelt.de: - detect ingredient groups - support HTML layout for newer recipes, especially for instruction parsing - add prep time - add equipment entries --- recipe_scrapers/rezeptwelt.py | 90 +- tests/test_data/rezeptwelt.de/rezeptwelt.json | 38 +- .../test_data/rezeptwelt.de/rezeptwelt_2.json | 96 + .../rezeptwelt.de/rezeptwelt_2.testhtml | 4342 +++++++++++++++++ 4 files changed, 4556 insertions(+), 10 deletions(-) create mode 100644 tests/test_data/rezeptwelt.de/rezeptwelt_2.json create mode 100644 tests/test_data/rezeptwelt.de/rezeptwelt_2.testhtml diff --git a/recipe_scrapers/rezeptwelt.py b/recipe_scrapers/rezeptwelt.py index 9a5a5b942..459a23a43 100644 --- a/recipe_scrapers/rezeptwelt.py +++ b/recipe_scrapers/rezeptwelt.py @@ -1,6 +1,22 @@ +from bs4 import Tag +import re + from ._abstract import AbstractScraper from ._exceptions import SchemaOrgException, StaticValueException -from ._utils import normalize_string +from ._utils import normalize_string, get_minutes +from ._grouping_utils import IngredientGroup + +# fiter to find non-empty tags +nonempty = re.compile(r".+") + + +def has_css_class(tag, cssclass): + classes = tag.get("class") + if not classes: + return False + if isinstance(classes, list): + return cssclass in classes + return classes == cssclass class Rezeptwelt(AbstractScraper): @@ -9,19 +25,69 @@ def host(cls): return "rezeptwelt.de" def site_name(self): - raise StaticValueException(return_value="Rezeptwelt") + return "Thermomix Rezeptwelt" def author(self): - return normalize_string(self.soup.find("span", {"id": "viewRecipeAuthor"}).text) + tag = self.soup.find("div", itemprop="author") + if tag: + return normalize_string(tag.get_text()) + tag = self.soup.find("span", {"id": "viewRecipeAuthor"}) + return normalize_string(tag.get_text()) + + def ingredients(self) -> list[str]: + results = [] + for ingredient_group in self.ingredient_groups(): + results.extend(ingredient_group.ingredients) + return results + + def ingredient_groups(self) -> list[IngredientGroup]: + ingredient_groups = [] + group = None + ingredients = None + section = self.soup.find(id="ingredient-section") + # iterate over all tags in the ingredient section + # for each

start a new group + # for each add a new ingredient + for child in section.descendants: + if isinstance(child, Tag): + if child.name == "p" and has_css_class(child, "h5"): + if ingredients: + # save previous group + ingredient_groups.append(IngredientGroup(purpose=group, ingredients=ingredients)) + # group might be an empty string, but that is ok + group = child.text.strip() + ingredients = [] + elif child.get("itemprop", "") == "recipeIngredient": + ingredients.append(child.text) + if ingredients: + # group can be None if there is only one main group for all ingredients + ingredient_groups.append(IngredientGroup(purpose=group, ingredients=ingredients)) + return ingredient_groups def instructions(self): container = self.soup.find("div", id="preparationSteps").find( "span", itemprop="text" ) - instructions = [ - normalize_string(paragraph.text) for paragraph in container.find_all("p") - ] - return "\n".join(filter(None, instructions)) + instructions = [] + for p in container.find_all("p"): + text = p.get_text().strip() + if text: + instructions.append(text) + if not instructions: + # instructions are divided by "
" + for text in str(container).replace("
", "\n").replace("\r", "").splitlines(): + text = normalize_string(text.strip()) + if text: + instructions.append(text) + # add optional tips to instructions + container = self.soup.find("div", attrs={"class": "tips"}) + for p in container.find_all("p"): + if p and p.string: + for text in str(p).replace("
", "\n").replace("\r", "").splitlines(): + text = normalize_string(text.strip()) + if text: + instructions.append(text) + return "\n".join(instructions) def cuisine(self): try: @@ -36,3 +102,13 @@ def description(self): def language(self): return self.soup.find("meta", {"property": "og:locale"})["content"] + + def prep_time(self): + tag = self.soup.find(itemprop="performTime", content=nonempty) + return get_minutes(tag['content']) if tag else None + + def equipment(self): + return [tag['content'] for tag in self.soup.find_all("meta", itemprop="tool", content=nonempty)] + + def reviews(self): + return None diff --git a/tests/test_data/rezeptwelt.de/rezeptwelt.json b/tests/test_data/rezeptwelt.de/rezeptwelt.json index 71792773f..744eff1d9 100644 --- a/tests/test_data/rezeptwelt.de/rezeptwelt.json +++ b/tests/test_data/rezeptwelt.de/rezeptwelt.json @@ -1,7 +1,7 @@ { "author": "Kräuterwiese", "canonical_url": "rezeptwelt.de", - "site_name": "Rezeptwelt", + "site_name": "Thermomix Rezeptwelt", "host": "rezeptwelt.de", "language": "de_DE", "title": "Italienischer Nudelsalat", @@ -21,23 +21,55 @@ "1 TL Salz", "2 Prisen Pfeffer" ], + "ingredient_groups": [ + { + "ingredients": [ + "250 g Nudeln z.B. Fusilli,Penne", + "1000 g Wasser", + "1 EL Gemüsebrühe", + "100 g Tomaten getrocknet, ohne Öl", + "500 g Kirschtomaten halbiert", + "1 Kugel Mozarella, halbiert", + "8 Stück schwarze Oliven, entsteint", + "100 g Rucola/Rauke", + "2 Zehen Knoblauch", + "1 Bund Basilkum (ohne Stiele)", + "45 g Weißweinessig", + "40 g Olivenöl", + "1 TL Salz", + "2 Prisen Pfeffer" + ], + "purpose": "" + } + ], + "instructions": "Salat\n1. Wasser und Gemüsebrühe in den Mixtopf geben und 8Min./100°/Stufe 1 aufkochen\n2. Nudeln zugeben, je nach Packungsanweisung ca. 8-10Min./100°/\"Linkslauf\" /Stufe \"Sanftrührstufe\" garen, Nudeln in den Gareinsatz abgießen und Garflüssigkeit dabei auffangen. Nudeln in eine große Schüssel umfüllen und etwas abkühlen lassen.\n3. getrocknete Tomaten in den Mixtopf geben, 5Sek./\"Linkslauf deaktiviert\" /Stufe 4 zerkleinern und zu den Nudeln geben.\n4.Mozarella in den Mixtopf geben, 2 Sek./Stufe 4 zerkleinern und zu den Nudeln geben.\n5. Alle weiteren Salatzutaten (Rucola, schwarze Oliven und Kirschtomaten) in die große Schüssel zugeben und vermischen\nDressing:\n6. Knoblauch und Basilikum in den Mixtopf geben 4 Sek./Stufe 7 zerkleinern.\n7. Übrige Zutaten und 120 g Garflüssigkeit zugeben und 15Sek./Stufe 3-4 verrühren, zum Salat geben und vermischen.\nEin Sattmacher-Rezept.\nDieser Salat enthält nicht nur alle Farben der italienischen Flagge, er schmeckt auch typisch mediterran !\nWW geeignet.", "instructions_list": [ "Salat", "1. Wasser und Gemüsebrühe in den Mixtopf geben und 8Min./100°/Stufe 1 aufkochen", - "2. Nudeln zugeben, je nach Packungsanweisung ca. 8-10Min./100°/\"Linkslauf\" /Stufe \"Sanftrührstufe\" garen, Nudeln in den Gareinsatz abgießen und Garflüssigkeit dabei auffangen. Nudeln in eine große Schüssel umfüllen und etwas abkühlen lassen.", + "2. Nudeln zugeben, je nach Packungsanweisung ca. 8-10Min./100°/\"Linkslauf\" /Stufe \"Sanftrührstufe\" garen, Nudeln in den Gareinsatz abgießen und Garflüssigkeit dabei auffangen. Nudeln in eine große Schüssel umfüllen und etwas abkühlen lassen.", "3. getrocknete Tomaten in den Mixtopf geben, 5Sek./\"Linkslauf deaktiviert\" /Stufe 4 zerkleinern und zu den Nudeln geben.", "4.Mozarella in den Mixtopf geben, 2 Sek./Stufe 4 zerkleinern und zu den Nudeln geben.", "5. Alle weiteren Salatzutaten (Rucola, schwarze Oliven und Kirschtomaten) in die große Schüssel zugeben und vermischen", "Dressing:", "6. Knoblauch und Basilikum in den Mixtopf geben 4 Sek./Stufe 7 zerkleinern.", - "7. Übrige Zutaten und 120 g Garflüssigkeit zugeben und 15Sek./Stufe 3-4 verrühren, zum Salat geben und vermischen." + "7. Übrige Zutaten und 120 g Garflüssigkeit zugeben und 15Sek./Stufe 3-4 verrühren, zum Salat geben und vermischen.", + "Ein Sattmacher-Rezept.", + "Dieser Salat enthält nicht nur alle Farben der italienischen Flagge, er schmeckt auch typisch mediterran !", + "WW geeignet." ], "category": "Vorspeisen/Salate", "yields": "6 servings", "description": "Italienischer Nudelsalat, ein Rezept der Kategorie Vorspeisen/Salate.", "total_time": 50, + "prep_time": 50, "cuisine": null, "ratings": 4.68, "ratings_count": 358, + "equipment": [ + "Spatel", + "2. Mixtopf TM6" + ], + "reviews": null, + "nutrients": {}, "image": "https://de.rc-cdn.community.thermomix.com/recipeimage/wbtt7xp3-9544c-831497-cfcd2-6bis4hp6/d60b5483-c12d-4c2a-871d-05748e5aa06c/main/italienischer-nudelsalat.jpg" } diff --git a/tests/test_data/rezeptwelt.de/rezeptwelt_2.json b/tests/test_data/rezeptwelt.de/rezeptwelt_2.json new file mode 100644 index 000000000..43b3a6cfe --- /dev/null +++ b/tests/test_data/rezeptwelt.de/rezeptwelt_2.json @@ -0,0 +1,96 @@ +{ + "author": "von tilasaniy", + "canonical_url": "rezeptwelt.de", + "site_name": "Thermomix Rezeptwelt", + "host": "rezeptwelt.de", + "language": "de_DE", + "title": "Wirsing-Kartoffel-Hack-Auflauf", + "ingredients": [ + "800 g Kartoffeln, gewürfelt", + "1 Stück kleiner Wirsing, in Streifen geschnitten", + "800 g Wasser", + "1 geh. TL Suppengrundstock (selbstgemacht), oder Gemüsebrühe", + "600 g Hackfleisch, (wir nehmen Rind)", + "4 EL Tomatenketchup", + "4 EL Tomatenmark", + " Pfeffer/Kräuter-Salz/Muskat", + "500 g Schupfnudeln aus dem Kühlregal, (bei Bedarf - Auflauf reicht dann für 6 Personen!)", + "50 g Butter", + "80 g Mehl", + "300 g Milch", + "300 g Garflüssigkeit, (vom Gemüse garen)", + "1 TL Salz", + " Öl für die Form", + "200 g Käse gerieben, zum Überbacken" + ], + "ingredient_groups": [ + { + "ingredients": [ + "800 g Kartoffeln, gewürfelt", + "1 Stück kleiner Wirsing, in Streifen geschnitten", + "800 g Wasser", + "1 geh. TL Suppengrundstock (selbstgemacht), oder Gemüsebrühe", + "600 g Hackfleisch, (wir nehmen Rind)", + "4 EL Tomatenketchup", + "4 EL Tomatenmark", + " Pfeffer/Kräuter-Salz/Muskat", + "500 g Schupfnudeln aus dem Kühlregal, (bei Bedarf - Auflauf reicht dann für 6 Personen!)" + ], + "purpose": "Auflauf" + }, + { + "ingredients": [ + "50 g Butter", + "80 g Mehl", + "300 g Milch", + "300 g Garflüssigkeit, (vom Gemüse garen)", + "1 TL Salz" + ], + "purpose": "Béchamelsoße" + }, + { + "ingredients": [ + " Öl für die Form", + "200 g Käse gerieben, zum Überbacken" + ], + "purpose": "Ausserdem" + } + ], + "instructions": "Die Kartoffeln in das Garkörbchen geben. Den Wirsing in Streifen geschnitten in den Varoma geben.\nWasser und Suppengrundstock in den Mixtopf geben, Garkörbchen einhängen, Varoma aufsetzen und alles 25 Min./Varoma/Stufe 1 kochen.\nHackfleischmasse\nWährend das Gemüse kocht: Hackfleisch in der Pfanne krümelig braten. Wenn es durch ist, das Ketchup und das Tomatenmark sowie die Gewürze zugeben und nochmals kurz braten.\nBechamelsosse\nBackofen auf 200 °C Ober-/Unterhitze vorheizen.\nWenn der Wirsing fertig ist, Varoma und Garkörbchen zu Seite stellen und die Garflüssigkeit aus dem Mixtopf auffangen (300 g).\nButter im Mixtopf 2 Min./100°C/Stufe 1 schmelzen, Mehl dazu geben und 1 Min./100°C/Stufe 2 anschwitzen.\nMilch und Garflüssigkeit hinzufügen und 7 Min./100°C/Stufe 2 einkochen. Danach mit dem Salz würzen und nochmals kurz 10 Sek./Stufe 5 verrühren.\nIn die geölte Auflaufform erst etwas Bechamelsoße (1/3), dann die Schupfnudeln (bei Bedarf) und die Kartoffeln geben. Den Wirsing einfüllen, 1/3 Soße dazu, dann die Hackfleischmasse darauf und die restliche Bechamelsoße drüber verteilen. Mit geriebenem Käse bestreuen.\nIm vorgeheizten Backofen bei 200 °C Ober-/Unterhitze etwa 25 - 30 Minuten backen.\nDieses Rezept ist eine Variation vom \"Wirsing-Auflauf\" von littlecloud51277. Vielen Dank für die Anregung!", + "instructions_list": [ + "Die Kartoffeln in das Garkörbchen geben. Den Wirsing in Streifen geschnitten in den Varoma geben.", + "Wasser und Suppengrundstock in den Mixtopf geben, Garkörbchen einhängen, Varoma aufsetzen und alles 25 Min./Varoma/Stufe 1 kochen.", + "Hackfleischmasse", + "Während das Gemüse kocht: Hackfleisch in der Pfanne krümelig braten. Wenn es durch ist, das Ketchup und das Tomatenmark sowie die Gewürze zugeben und nochmals kurz braten.", + "Bechamelsosse", + "Backofen auf 200 °C Ober-/Unterhitze vorheizen.", + "Wenn der Wirsing fertig ist, Varoma und Garkörbchen zu Seite stellen und die Garflüssigkeit aus dem Mixtopf auffangen (300 g).", + "Butter im Mixtopf 2 Min./100°C/Stufe 1 schmelzen, Mehl dazu geben und 1 Min./100°C/Stufe 2 anschwitzen.", + "Milch und Garflüssigkeit hinzufügen und 7 Min./100°C/Stufe 2 einkochen. Danach mit dem Salz würzen und nochmals kurz 10 Sek./Stufe 5 verrühren.", + "In die geölte Auflaufform erst etwas Bechamelsoße (1/3), dann die Schupfnudeln (bei Bedarf) und die Kartoffeln geben. Den Wirsing einfüllen, 1/3 Soße dazu, dann die Hackfleischmasse darauf und die restliche Bechamelsoße drüber verteilen. Mit geriebenem Käse bestreuen.", + "Im vorgeheizten Backofen bei 200 °C Ober-/Unterhitze etwa 25 - 30 Minuten backen.", + "Dieses Rezept ist eine Variation vom \"Wirsing-Auflauf\" von littlecloud51277. Vielen Dank für die Anregung!" + ], + "category": "Hauptgerichte mit Fleisch", + "yields": "5 servings", + "description": "Wirsing-Kartoffel-Hack-Auflauf, ein Rezept der Kategorie Hauptgerichte mit Fleisch. Mehr Thermomix® Rezepte auf www.rezeptwelt.de", + "total_time": 70, + "cook_time": null, + "prep_time": 40, + "cuisine": "Europäisch", + "ratings": 4.69, + "ratings_count": 94, + "equipment": [ + "Spatel", + "Auflaufform Anna", + "Spülbürste Set", + "2. Mixtopf TM6" + ], + "reviews": null, + "nutrients": {}, + "image": "https://de.rc-cdn.community.thermomix.com/recipeimage/vwpr9gab-d4f55-857620-cfcd2-f55fe74i/2f7c6e32-d54b-49df-839e-e7cb02a20eaf/original/wirsing-kartoffel-hack-auflauf.jpg", + "keywords": [ + "Europäisch", + "europaisch" + ] +} diff --git a/tests/test_data/rezeptwelt.de/rezeptwelt_2.testhtml b/tests/test_data/rezeptwelt.de/rezeptwelt_2.testhtml new file mode 100644 index 000000000..cac4392c2 --- /dev/null +++ b/tests/test_data/rezeptwelt.de/rezeptwelt_2.testhtml @@ -0,0 +1,4342 @@ + + + + + + + + Wirsing-Kartoffel-Hack-Auflauf von tilasaniy. Ein Thermomix® Rezept aus der Kategorie Hauptgerichte mit Fleisch auf www.rezeptwelt.de, der Thermomix® Community. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + +
+
+ + +
+
+
+
+ +
+ +
+
+
+
+

+ + +

+
+
+
+
+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+
+
+ + +
+ +
+ thumbnail image 1 + +
+
+
+
+ thumbnail image 1 +
+
+ + + +
+
+
+
+
+
+ +
+
+
Zubereitungszeit
+
40min
+ +
+
+
+
+ +
+
+
Gesamtzeit
+
1h 10min
+ + +
+
+
+
+
+
+ +
+
+
Portion/en
+
+ 5 + Portion/en +
+
+
+
+
+ +
+
+
Schwierigkeitsgrad
+
einfach
+
+
+
+
+
+
+
+
+ + +
+ + + +
+
    +
  • TM6
  • +
  • TM5
  • +
  • TM31
  • +
+ +
+ + +
+
+
+ + +
+ + + +
+ + +
+
+ +
+ +
published: 27.10.2015
+ +
geändert: 09.10.2024
+
+
+ +
+ + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+

Zutaten

+ Auflauf +

  • 800 g Kartoffeln, gewürfelt
  • 1 Stück kleiner Wirsing, in Streifen geschnitten
  • 800 g Wasser
  • 1 geh. TL Suppengrundstock (selbstgemacht), oder Gemüsebrühe
  • 600 g Hackfleisch, (wir nehmen Rind)
  • 4 EL Tomatenketchup
  • 4 EL Tomatenmark
  • Pfeffer/Kräuter-Salz/Muskat
  • 500 g Schupfnudeln aus dem Kühlregal, (bei Bedarf - Auflauf reicht dann für 6 Personen!)

+ Béchamelsoße +

  • 50 g Butter
  • 80 g Mehl
  • 300 g Milch
  • 300 g Garflüssigkeit, (vom Gemüse garen)
  • 1 TL Salz

+ Ausserdem +

  • Öl für die Form
  • 200 g Käse gerieben, zum Überbacken
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+

Hilfsmittel, die du benötigst

+
+
    +
  • + +
    + Spatel +
    +
    + Spatel + + jetzt kaufen! + + +
    +
  • +
  • + +
    + Auflaufform Anna +
    +
    + Auflaufform Anna + + jetzt kaufen! + + +
    +
  • +
  • + +
    + Spülbürste Set +
    +
    + Spülbürste Set + + jetzt kaufen! + + +
    +
  • +
  • + +
    + 2. Mixtopf TM6 +
    +
    + 2. Mixtopf TM6 + + jetzt kaufen! + + +
    +
  • +
+
+ + +
+
+
+
+
+
+ +
+
+
+
+

+ Teile + deine Aktivität +

+ + + Das koche ich heute + +
+
+
+
+
+

Zubereitung

  1. Die Kartoffeln in das Garkörbchen geben. Den Wirsing in Streifen geschnitten in den Varoma geben.

    +Wasser und Suppengrundstock in den Mixtopf geben, Garkörbchen einhängen, Varoma aufsetzen und alles 25 Min./Varoma/Stufe 1 kochen.


    Hackfleischmasse

    +Während das Gemüse kocht: Hackfleisch in der Pfanne krümelig braten. Wenn es durch ist, das Ketchup und das Tomatenmark sowie die Gewürze zugeben und nochmals kurz braten.


    Bechamelsosse

    Backofen auf 200 °C Ober-/Unterhitze vorheizen.

    +Wenn der Wirsing fertig ist, Varoma und Garkörbchen zu Seite stellen und die Garflüssigkeit aus dem Mixtopf auffangen (300 g).

    +Butter im Mixtopf 2 Min./100°C/Stufe 1 schmelzen, Mehl dazu geben und 1 Min./100°C/Stufe 2 anschwitzen.

    +Milch und Garflüssigkeit hinzufügen und 7 Min./100°C/Stufe 2 einkochen. Danach mit dem Salz würzen und nochmals kurz 10 Sek./Stufe 5 verrühren.

    +In die geölte Auflaufform erst etwas Bechamelsoße (1/3), dann die Schupfnudeln (bei Bedarf) und die Kartoffeln geben. Den Wirsing einfüllen, 1/3 Soße dazu, dann die Hackfleischmasse darauf und die restliche Bechamelsoße drüber verteilen. Mit geriebenem Käse bestreuen.

    +Im vorgeheizten Backofen bei 200 °C Ober-/Unterhitze etwa 25 - 30 Minuten backen.
+
+
+
+
+
+
+

Tipp

+

Dieses Rezept ist eine Variation vom "Wirsing-Auflauf" von littlecloud51277. Vielen Dank für die Anregung!

+
+
+ +
+

Thermomix® Modell

+
    +
  • +
    +
    + Appliance TM6 image +
    +
    + Rezept erstellt für +
    TM6
    +
    +
    + + +
    + Zum Garen (Simmern) bei Temperaturen von 95°C/200°F oder darüber sollte immer der Gareinsatz anstelle des TM6-Messbechers verwendet werden, da der TM6-Messbecher fest im Deckel sitzt. Der Gareinsatz liegt lose auf dem Deckel auf, ist dampfdurchlässig und verhindert außerdem, dass Lebensmittel aus dem Mixtopf spritzen. + +
    + +
  • +
  • +
    +
    + Appliance TM5 image +
    +
    + Rezept erstellt für +
    TM5
    +
    +
    + + +
    +
    + Wenn du einen Thermomix® TM6 Messbecher in deinem Thermomix® TM5 nutzt:
    Zum Garen (Simmern) bei Temperaturen von 95°C/200°F oder darüber sollte immer der Gareinsatz anstelle des TM6-Messbechers verwendet werden, da der TM6-Messbecher fest im Deckel sitzt. Der Gareinsatz liegt lose auf dem Deckel auf, ist dampfdurchlässig und verhindert außerdem, dass Lebensmittel aus dem Mixtopf spritzen. + +
    +
    + +
    + Bitte beachten Sie, dass der Mixtopf des TM5 ein größeres Fassungsvermögen hat als der des TM31 (Fassungsvermögen von 2,2 Litern anstelle von 2,0 Litern beim TM31). Aus Sicherheitsgründen müssen Sie daher die Mengen entsprechend anpassen, wenn Sie Rezepte für den Thermomix® TM5 mit einem Thermomix® TM31 kochen möchten. Verbrühungsgefahr durch heiße Flüssigkeiten: Die maximale Füllmenge darf nicht überschritten werden. Beachten Sie die Füllstandsmarkierungen am Mixtopf! + +
    +
    +
    +
    + + +
  • +
  • +
    +
    + Appliance TM31 image +
    +
    + Rezept erstellt für +
    TM31
    +
    +
    + + +
  • +
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+
+

Dieses Rezept wurde dir von einer/m Thermomix®-Kundin/en zur Verfügung gestellt und daher nicht von Vorwerk Thermomix® getestet. Vorwerk Thermomix® übernimmt keinerlei Haftung, insbesondere im Hinblick auf Mengenangaben und Gelingen. Bitte beachte stets die Anwendungs- und Sicherheitshinweise in unserer Gebrauchsanleitung. +

+
+
+
+
+ + + + + + +
+
+
+
+ + + +
+
+
+
+
+ Rezeptkategorien: +
+ Europäisch + + +
+
+
+
+ +
+ +
+
+
+ +
+

Druckversion

+
Wirsing-Kartoffel-Hack-Auflauf
+
+
+
+
+ + Drucken: + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+

+ Kommentare +

+ + +
+ +
+
+
+ +
+
Are you sure to delete this comment ?
+
+
+
+
+
+ Cancel + Confirm +
+
+
+
+ + + + + +
+
+
+
+
+ +
+
+
+
+
+

Anderen Benutzern gefiel auch

+
+
Ähnliches anzeigen:
+ +
+
+
+
+
+ + Schnitzel sauersüß mit Reis + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Schnitzel sauersüß mit Reis + +
+ von + + Roseroar + +
+
+
+
+ + Kabeljau mit Erbsen- Zitronen-Butter-  LOW CARB + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Kabeljau mit Erbsen- Zitronen-Butter- LOW CARB + +
+ von + + antelfrau + +
+
+
+
+ + Überbackene Putenschnitzel + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 5.0 + + + + (1) + +
+
+
+ + Überbackene Putenschnitzel + +
+ von + + Wormel + +
+
+
+
+ + Hackbällchen Toscana + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Hackbällchen Toscana + + +
+
+
+ + Chili con Carne + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Chili con Carne + + +
+
+
+ + Kerala chicken curry + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 5.0 + + + + (1) + +
+
+
+ + Kerala chicken curry + +
+ von + + Deepz + +
+
+
+
+ + Hackbällchen fettarm + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Hackbällchen fettarm + +
+ von + + Camino2017 + +
+
+
+
+ + Hamburger classic (Patties) + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Hamburger classic (Patties) + +
+ von + + robe02 + +
+
+
+
+ + „Grummbeere“ mit Blumenkohl und Hack + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 5.0 + + + + (1) + +
+
+
+ + „Grummbeere“ mit Blumenkohl und Hack + +
+ von + + Wovvbagger + +
+
+
+
+ + Cremige Hähnchenpfanne in leichter Parmesan-Sahne-Sauce + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Cremige Hähnchenpfanne in leichter Parmesan-Sahne-Sauce + +
+ von + + Arentche + +
+
+
+
+ + Frischkäse Hack Pasta + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Frischkäse Hack Pasta + +
+ von + + Arentche + +
+
+
+
+ + Fleisch-Reisbällchen in cremiger Tomatensauce + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 5.0 + + + + (1) + +
+
+
+ + Fleisch-Reisbällchen in cremiger Tomatensauce + +
+ von + + Orkus + +
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+ + Ratz-Fatz Spinat Lasagne - (Mangold-Anteil möglich) + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Ratz-Fatz Spinat Lasagne - (Mangold-Anteil möglich) + +
+ von + + tilasaniy + +
+
+
+
+ + Auf Vorrat: Tomatensoße aus frischen Tomaten + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 4.9 + + + + (74) + +
+
+
+ + Auf Vorrat: Tomatensoße aus frischen Tomaten + +
+ von + + tilasaniy + +
+
+
+
+ + Mildes Thai-Curry mit Brokkoli + Reis + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 4.7 + + + + (9) + +
+
+
+ + Mildes Thai-Curry mit Brokkoli + Reis + +
+ von + + tilasaniy + +
+
+
+
+ + Spätzleauflauf mit Leberkäse und Spiegelei + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 4.6 + + + + (7) + +
+
+
+ + Spätzleauflauf mit Leberkäse und Spiegelei + +
+ von + + tilasaniy + +
+
+
+
+ + Ratz-Fatz Tomatensuppe diesmal mit Reis + +
+
+ +
+
+
+
+ + + +
+ + +
+ + + + + +
+
+ + + 4.7 + + + + (134) + +
+
+
+ + Ratz-Fatz Tomatensuppe diesmal mit Reis + +
+ von + + tilasaniy + +
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+ + Schnelles Brot mit Körner + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Schnelles Brot mit Körner + +
+ von + + JASINDA + +
+
+
+
+ + Rosenkohleintopf a`la Mama + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Rosenkohleintopf a`la Mama + +
+ von + + antelfrau + +
+
+
+ +
+ + Butjadinger Creme + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Butjadinger Creme + +
+ von + + moorhexe68 + +
+
+
+
+ + Avocadopasta + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Avocadopasta + +
+ von + + LeniRauh + +
+
+
+
+ + Russischer Zupfkuchen + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Russischer Zupfkuchen + +
+ von + + HeartPulseM + +
+
+
+
+ + Grüne Tomaten Relish süß-sauer + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Grüne Tomaten Relish süß-sauer + +
+ von + + Matyse + +
+
+
+
+ + Variation Gebrannte Mandeln + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Variation Gebrannte Mandeln + +
+ von + + muehle64 + +
+
+
+
+ + Cremige Brokkoli- Erbsen- Suppe - LOW CARB + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Cremige Brokkoli- Erbsen- Suppe - LOW CARB + +
+ von + + antelfrau + +
+
+
+
+ + Krepli + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Krepli + +
+ von + + maximkorel1 + +
+
+
+
+ + Cinnamon Roll Kuchen + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Cinnamon Roll Kuchen + + +
+
+
+ + Blaubeer - Chia- Pudding mit Joghurt - LOW CARB + +
+
+ +
+
+
+ + +
+ + + + + +
+
+ + +
+
+
+ + Blaubeer - Chia- Pudding mit Joghurt - LOW CARB + +
+ von + + antelfrau + +
+
+
+ +
+
+ +
+ +
+
+
+
+
+
+
+
+
+ + + + + + +
+ + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + +