Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update & Fix: Lecker now abides to Schema & custom Instructions handling #1480

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 7 additions & 52 deletions recipe_scrapers/lecker.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from ._abstract import AbstractScraper
from ._exceptions import SchemaOrgException
from ._utils import normalize_string


Expand All @@ -8,55 +7,11 @@ class Lecker(AbstractScraper):
def host(cls):
return "lecker.de"

def title(self):
try:
return self.schema.title()
except TypeError:
return (
self.soup.find(
"header", {"class": "article-header article-header--article"}
)
.find("h1")
.get_text()
)

def instructions(self):
if self.schema.instructions():
return self.schema.instructions()
else:
divs = self.soup.find_all("div", {"class": "js-quizToggle"})
for d in divs:
if d.find("span", "article__shifted-jump-label"):
instructions = []
found_content = False
for element in d:
if not element.name:
continue

if element.name.startswith("h"):
if "Schritt" in element.text:
found_content = True
continue
elif found_content:
break

if not found_content:
continue

if element.name == "p" and element.text.strip():
instructions.append(element.text)

return "\n".join(instructions)

def cuisine(self):
try:
return self.schema.cuisine()
except SchemaOrgException:
return None

def description(self):
cleaned_description = self.schema.description()
return normalize_string(cleaned_description)

def site_name(self):
return "lecker.de"
instruction_steps = self.soup.select(
".bx-instruction-group__instruction-step + div p"
)
normalized_instructions = [
normalize_string(step.get_text()) for step in instruction_steps
]
return "\n".join(normalized_instructions)
31 changes: 9 additions & 22 deletions tests/test_data/lecker.de/lecker_1.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"author": "Lecker.de Redaktion",
"author": "Lecker",
"canonical_url": "https://www.lecker.de/gemuesepfanne-mit-haehnchen-zuckerschoten-und-brokkoli-79685.html",
"site_name": "lecker.de",
"site_name": "LECKER",
"host": "lecker.de",
"language": "de",
"title": "Gemüsepfanne mit Hähnchen, Zuckerschoten und Brokkoli",
Expand All @@ -18,22 +18,16 @@
"1 EL Sesamsaat"
],
"instructions_list": [
"Schritt 1",
"Brokkoli putzen und in kleinen Röschen vom Strunk schneiden. Zuckerschoten putzen. Lauchzwiebeln putzen und in ca. 10 cm lange Stücke schneiden.",
"Schritt 2",
"Brokkoli, Zuckerschoten und Lauchzwiebeln in reichlich kochendem Salzwasser 2–3 Minuten garen. Herausnehmen und mit kaltem Wasser abspülen. Auf ein Sieb gießen und gut abtropfen lassen.",
"Schritt 3",
"Fleisch trocken tupfen und in Würfel (ca. 1,5 x 1,5 cm) schneiden. Öl in einer weiten Pfanne oder einem Wok erhitzen. Fleisch darin, unter Wenden, ca. 3 Minuten kräftig anbraten. Hitze reduzieren und weitere ca. 2 Minuten braten. Gemüse, Sojasoße und Brühe zufügen und 3–4 Minuten dünsten. Dabei gelegentlich wenden.",
"Schritt 4",
"Koriander waschen und trocken schütteln und, bis auf einige Blätter zum Garnieren, samt Stiel grob hacken. Sesam und Koriander zur Gemüsepfanne geben und untermischen. Mit Salz und Pfeffer abschmecken und mit Koriander garnieren."
],
"category": "Hauptgericht",
"yields": "4 servings",
"description": "Unser beliebtes Rezept für Gemüsepfanne mit Hähnchen, Zuckerschoten und Brokkoli und mehr als 45.000 weitere kostenlose Rezepte auf LECKER.de.",
"total_time": 25,
"cook_time": 25,
"prep_time": null,
"cuisine": null,
"ratings": 3.94,
"ratings_count": 99,
"nutrients": {
Expand All @@ -45,23 +39,16 @@
},
"image": "https://images.lecker.de/gemusepfanne-mit-hahnchen-zuckerschoten-und-brokkoli/1x1,id=7e976162,b=lecker,w=1600,h=,ca=12.42,0,87.58,100,rm=sk.jpeg",
"keywords": [
"Hähnchen",
"Geflügel",
"Fleisch",
"Zutaten",
"Mittagessen",
"Mahlzeit",
"Rezepte",
"Abendbrot",
"Low Carb",
"Gesundes Essen",
"Hauptgerichte",
"Menüs",
"Fleisch",
"Geflügel",
"Hähnchen",
"Brokkoli",
"Kohl",
"Gemüse",
"Hauptgerichte",
"Low Carb",
"Zuckerschoten",
"Gemüsepfanne",
"Pfannengerichte"
"Mittagessen",
"Abendbrot"
]
}
Loading