From 49fb944408c8a9df9fb828dd2fb3ba5c2c52d13f Mon Sep 17 00:00:00 2001 From: Tom Strange Date: Thu, 13 Jul 2023 13:20:17 +0100 Subject: [PATCH] Update hellofresh scraper to remove special handling of recipes that can be scaled to 1 portion. (#778) --- recipe_scrapers/hellofresh.py | 21 +- tests/test_data/hellofresh.testhtml | 524 ++++++++++------- tests/test_data/hellofresh_adhoc.testhtml | 666 ++++++++++------------ tests/test_hellofresh.py | 2 +- tests/test_hellofresh_adhoc.py | 46 +- 5 files changed, 625 insertions(+), 634 deletions(-) diff --git a/recipe_scrapers/hellofresh.py b/recipe_scrapers/hellofresh.py index c142e3045..2b620fdd4 100644 --- a/recipe_scrapers/hellofresh.py +++ b/recipe_scrapers/hellofresh.py @@ -17,10 +17,7 @@ def yields(self): return self.schema.yields() def ingredients(self): - if not self._serving_one_on_page(): - return self.schema.ingredients() - else: - return [f"2 * {ingredient}" for ingredient in self.schema.ingredients()] + return self.schema.ingredients() def instructions(self): return self.schema.instructions() @@ -36,19 +33,3 @@ def cuisine(self): def category(self): return self.schema.category() - - def _serving_one_on_page(self): - # ad-hoc solution for https://github.com/hhursev/recipe-scrapers/issues/527 - try: - return ( - self.soup.find("div", {"data-test-id": "serving-amount-container"}) - .find("div", {"class": "fela-_txm046"}) - .select("div[class*=ds]")[0] - .get_text() - == "1" - ) - except (AttributeError, IndexError): - # AttributeError if .find(..) method errored - # IndexError if the .select(..)[0] did not work as expected - # both cases to fall back to default behaviour - return True diff --git a/tests/test_data/hellofresh.testhtml b/tests/test_data/hellofresh.testhtml index 578d2b087..13dd75e7a 100644 --- a/tests/test_data/hellofresh.testhtml +++ b/tests/test_data/hellofresh.testhtml @@ -1,214 +1,310 @@ - - - - Pork Stir-Fry with Green Beans and Rice Recipe | HelloFresh - - - - - - - - - - - - - - - - - - - - - -
HelloFresharrow right iconarrow right iconRecipesarrow right iconarrow right iconThai Style Pork Stir Fry
topBanner
Thai Style Pork Stir-Fry

Thai Style Pork Stir-Fry

with Veggie Rice

Read more

Tonight’s twenty minute recipe is an explosion of fresh flavours and one that you’ll be coming back to time and time again. Stir fried pork is coated in a glossy marinate of ginger, honey, soy sauce, ketjap manis and fresh lime juice and served over a warm and nourishing rice salad. For added texture and flavour, finish off with chopped peanuts, spring a onions and a good squeeze of lime.

Tags:Calorie SmartNot Suitable for Coeliacs
Allergens:SoyaCereals containing gluten

Boxes and ingredients are packed in facilities that handles Peanut, Nuts, Sesame, Fish, Crustaceans, Milk, Egg, Mustard, Celery, Soya, Gluten and Sulphites. Due to the conflict in Ukraine, it has been necessary to substitute sunflower oil with rapeseed oil in some products without a label change. The FSA have advised that allergic reactions to rapeseed oil are rare.

Preparation Time35 minutes
Cooking time15 minutes
Difficulty levelMedium
Ingredients
serving amount
2
3
4
Ingredientsarrow down iconarrow down icon
serving amount
2
3
4

150 grams

Basmati Rice

1 unit(s)

Echalion Shallot

2 unit(s)

Garlic Clove

¼ unit(s)

Red Chilli

2 unit(s)

Spring Onion

150 grams

Green Beans

300 grams

Pork Mince

50 grams

Ketjap Manis

(ContainsSoya)

25 milliliter(s)

Soy Sauce

(ContainsSoya, Cereals containing gluten)

6 grams

Fresh Thai Basil

Not included in your delivery

300 milliliter(s)

Water for the Rice

Nutritional information
Nutritional informationarrow down iconarrow down icon
per serving
per 100g
Energy (kcal)668 kcal
Energy (kJ)2795 kJ
Fat20.0 g
of which saturates6.0 g
Carbohydrate83 g
of which sugars20.0 g
Protein38 g
Salt3.25 g
Always refer to the product label for the most accurate ingredient and allergen information.
Utensils
Utensilsarrow down iconarrow down icon
Saucepan
Grater
Knife
Frying Pan
Plate
Instructionsarrow up iconarrow up icon
download icondownload icon
1

a) Pour the boiling water into a large saucepan and bring back to the boil on high heat. b) When boiling, add the rice and cook for 8-10 mins, then drain in a sieve and set aside.

2

a) Meanwhile, trim the carrot then grate on the coarse side of your grater (no need to peel). b) Trim the spring onion then finely slice. Roughly chop the peanuts. Zest the lime then chop into wedges. c) Chop the pork into 2cm chunks. iIMPORTANT: Remember to wash your hands after handling raw meat.

3

a) In a small bowl, stir together the easy ginger, ketjap manis, soy sauce, honey and the juice of half the lime. Set aside.

4

a) Heat a splash of oil in a large frying pan on high heat. b) When hot, add the pork and stir-fry until browned all over, 4-5 mins.

5

a) Lower the heat to medium then pour the sauce into the pan. b) Cook, coating the pork in the sticky sauce, for 2-3 mins.iIMPORTANT: The pork is cooked when it is no longer pink in the middle. c) Meanwhile, in a large bowl gently toss together the rice, lime zest, carrot, half the spring onion and half the peanuts. Season to taste with salt and pepper if needed.

6

a) Serve the sticky pork on top of the veggie rice. b) Finish by pouring any sauce left in the pan over the top and scattering over the remaining peanuts and spring onion. c) Top with the remaining lime wedges. ENJOY!

- - - - - - - - - - - - +Pork Stir-Fry with Green Beans and Rice Recipe | HelloFresh
Our Recipe BoxesGift Cards
Thai Style Pork Stir-Fry
topBannerName Desktop
topBannerName Tablet
topBannerName Mobile
Thai Style Pork Stir-Fry

Thai Style Pork Stir-Fry

with Veggie Rice

Tonight’s twenty minute recipe is an explosion of fresh flavours and one that you’ll be coming back to time and time again. Stir fried pork is coated in a glossy marinate of ginger, honey, soy sauce, ketjap manis and fresh lime juice and served over a warm and nourishing rice salad. For added texture and flavour, finish off with chopped peanuts, spring a onions and a good squeeze of lime.

Tags:
Calorie Smart
Not Suitable for Coeliacs
Allergens:
Soya
Cereals containing gluten

Boxes and ingredients are packed in facilities that handles Peanut, Nuts, Sesame, Fish, Crustaceans, Milk, Egg, Mustard, Celery, Soya, Gluten and Sulphites. Due to the war in Ukraine, it has been necessary to substitute sunflower oil with rapeseed oil in some products without a label change. The FSA have advised that allergic reactions to rapeseed oil are rare.

Preparation Time35 minutes
Cooking time15 minutes
DifficultyMedium

Ingredients

serving amount

150 grams

Basmati Rice

1 unit(s)

Echalion Shallot

2 unit(s)

Garlic Clove

¼ unit(s)

Red Chilli

2 unit(s)

Spring Onion

150 grams

Green Beans

300 grams

Pork Mince

50 grams

Ketjap Manis

(Contains Soya)

25 milliliter(s)

Soy Sauce

(Contains Cereals containing gluten, Soya)

6 grams

Fresh Thai Basil

Not included in your delivery

300 milliliter(s)

Water for the Rice

sideBannerName

Nutritional information

Energy (kcal)668 kcal
Energy (kJ)2795 kJ
Fat20 g
of which saturates6 g
Carbohydrate83 g
of which sugars20 g
Protein38 g
Salt3.25 g
Always refer to the product label for the most accurate ingredient and allergen information.

Utensils

Medium Saucepan
Grater
Knife
Grill Pan
Plate

Instructions

Cook the rice
1

a) Pour the boiling water into a large saucepan and bring back to the boil on high heat. b) When boiling, add the rice and cook for 8-10 mins, then drain in a sieve and set aside.

Prep the veggies
2

a) Meanwhile, trim the carrot then grate on the coarse side of your grater (no need to peel). b) Trim the spring onion then finely slice. Roughly chop the peanuts. Zest the lime then chop into wedges. c) Chop the pork into 2cm chunks. iIMPORTANT: Remember to wash your hands after handling raw meat.

Make the Sauce
3

a) In a small bowl, stir together the easy ginger, ketjap manis, soy sauce, honey and the juice of half the lime. Set aside.

Fry the Pork
4

a) Heat a splash of oil in a large frying pan on high heat. b) When hot, add the pork and stir-fry until browned all over, 4-5 mins.

Glaze it up
5

a) Lower the heat to medium then pour the sauce into the pan. b) Cook, coating the pork in the sticky sauce, for 2-3 mins.iIMPORTANT: The pork is cooked when it is no longer pink in the middle. c) Meanwhile, in a large bowl gently toss together the rice, lime zest, carrot, half the spring onion and half the peanuts. Season to taste with salt and pepper if needed.

Finish and serve
6

a) Serve the sticky pork on top of the veggie rice. b) Finish by pouring any sauce left in the pan over the top and scattering over the remaining peanuts and spring onion. c) Top with the remaining lime wedges. ENJOY!

\ No newline at end of file diff --git a/tests/test_data/hellofresh_adhoc.testhtml b/tests/test_data/hellofresh_adhoc.testhtml index a2b0df5cc..7e49b6152 100644 --- a/tests/test_data/hellofresh_adhoc.testhtml +++ b/tests/test_data/hellofresh_adhoc.testhtml @@ -1,376 +1,290 @@ - - - - Chakchouka au fromage de chèvre Recipe | HelloFresh - - - - - - - - - - - - - - - - - - - - - -
If you are using a screen reader and are having problems using this website, please call 1-646-846-3663 for assistance.Skip to main content
HelloFresharrow right iconarrow right iconRecipesarrow right iconarrow right iconChakchouka Au Fromage De Chèvre
topBanner
Chakchouka au fromage de chèvre

Chakchouka au fromage de chèvre

avec du piment, des œufs et du persil

Read more

La - chakchouka est l'un de nos plats végétariens préférés. Vous avez -énormément de possibilités avec ce plat, par exemple en variant le type -de fromage utilisé. Les œufs sont pleins de bons nutriments, tels que -des vitamines, des minéraux et bien sûr des protéines - un choix -végétarien nutritif.

Tags:Végétarien
Allergens:ŒufLait (dont lactose)MoutardeGluten/GlutenCéréales contenant du gluten

Produced in a facility that processes eggs, milk, fish, peanuts, sesame, shellfish, soy, tree nuts, and wheat.

Total Time35 minutes
Cooking difficultyMedium
Ingredients
serving amount
Ingredientsarrow down iconarrow down icon
serving amount
Oignon jaune

1 pièce

Oignon jaune

Gousse d'ail

2 pièce

Gousse d'ail

Piment rouge

½ pièce

Piment rouge

Poivron rouge

1 pièce

Poivron rouge

Tomate allongée

4 pièce

Tomate allongée

Œuf de poule élevée en plein air

4 pièce

Œuf de poule élevée en plein air

(ContainsŒuf)
Fromage de chèvre frais

75 g

Fromage de chèvre frais

(ContainsŒuf, Lait (dont lactose), Moutarde, Gluten/GlutenMay containŒuf, Moutarde, Gluten/Gluten)
Persil plat

5 g

Persil plat

(May containCéléri)
Demi-baguette

2 pièce

Demi-baguette

(ContainsCéréales contenant du gluten)

Not included in your delivery

Cube de bouillon de légumes

½ pièce

Cube de bouillon de légumes

Huile d'olive

1 cs

Huile d'olive

Poivre et sel

selon le goût

Poivre et sel

Nutrition Values
Nutrition Valuesarrow down iconarrow down icon
Énergie (kJ)3584 kJ
Énergie (kcal)857 kcal
Matières grasses28 g
dont acides gras saturés10 g
Glucides109 g
dont sucres15 g
Protéines35 g
Sel4 g
Due - to the different suppliers we purchase our products from, nutritional -facts per meal can vary from the website to what is received in the -delivered box, depending on your region.
Utensils
Utensilsarrow down iconarrow down icon
Couteau
Wok avec couvercle
Instructions
Instructionsarrow up iconarrow up icon
Préparer
1

Préchauffez - le four à 210 degrés. Hachez l'oignon et écrasez ou émincez l'ail. -Épépinez le piment rouge et le poivron rouge et coupez-les en lanières. -Coupez les tomates prunes en petits dés et ciselez finement le persil -frisé.

Cuire les légumes
2

Faites - chauffer l’huile d’olive dans un wok ou une sauteuse avec couvercle et -faites-y revenir l’oignon, l’ail et le piment rouge 2 minutes à feu -moyen-vif. Puis, ajoutez le poivron, la tomate et la moitié du persil.

Faire mijoter les légumes
3

Ajoutez - ensuite 30 ml d’eau par personne dans le wok ou la sauteuse, puis -émiettez le cube de bouillon par-dessus. Portez à ébullition tout en -remuant, puis laissez mijoter 5 minutes à couvert sur feu moyen-vif. -Salez et poivrez.

Cuire les oeufs
4

Pour - chaque œuf, faites un petit cratère dans le mélange de légumes, puis -cassez-y les œufs. Saupoudrez-les de sel et de poivre. Disposez le -chèvre frais émietté sur l’ensemble, couvrez et laissez les œufs cuire -pendant 10 minutes. Lors des 4 dernières minutes, retirez le couvercle, -augmentez un peu le feu et laissez l’excédent d’eau s’évaporer.

Cuire les dmi-baguettes
5

Pendant ce temps, enfournez les demi-baguettes 6 à 8 minutes ou jusqu’à ce qu’elles soient dorées.

Servir
6

Servez le chakchouka dans les assiettes. Garnissez du reste de persil et présentez les demi-baguettes en accompagnement.

- - - - - - - - - - - - - - - - - -
- - - - - - - - - - \ No newline at end of file +Chakchouka au chèvre frais Recette | HelloFresh
Commander
Chakchouka au chèvre frais
topBannerName Desktop
topBannerName Tablet
topBannerName Mobile
Chakchouka au chèvre frais

Chakchouka au chèvre frais

avec du piment, des œufs et du persil

La chakchouka est l'un de nos plats végétariens préférés. Vous avez énormément de possibilité avec ce plat, par exemple en variant le type de fromage utilisé. Les œufs sont pleins de bons nutriments, tels que des vitamines, des minéraux et bien sûr des protéines - un choix végétarien nutritif.

Tags:
Végétarien
Allergènes :
Seigle
Gluten
Blé

Référez-vous à l'étiquette du produit pour les informations complètes sur les ingrédients et allergènes

Temps total 35 minutes
Temps de préparation30 minutes
Difficulté Intermédiaire

Ingrédients

quantité

½ pièce(s)

Oignon

1 pièce(s)

Gousse d'ail

¼ pièce(s)

Piment

½ pièce(s)

Poivron rouge

2 pièce(s)

Tomate

2.5 g

Persil

2 pièce(s)

Œuf

50 g

Fromage de chèvre frais

1 pièce(s)

Baguette

(Contient Seigle, Gluten, Blé Peut contenir Anhydride sulfureux et sulfites, Fruits à coque, Graines de sésame, Lait (contient du lactose), Œuf, Soja, Lupin)

Ingrédients à avoir chez soi

1 cs

Huile d'olive

¼ pièce(s)

Cube de bouillon de légumes

selon le goût

Poivre et sel

sideBannerName

Valeurs nutritionnelles

Énergie (kcal)600 kcal
Énergie (kJ)2509 kJ
Matières grasses8.98 g
dont acides gras saturés1.25 g
Glucides107.89 g
dont sucres13.27 g
Protéines16.52 g
Sel3.12 g

Ustensiles

Wok avec couvercle
Couvercle

Instructions

Préparer
1

Préchauffez le four à 210 degrés. Hachez l'oignon et écrasez ou émincez l'ail. Épépinez le piment rouge et le poivron rouge et coupez-les en lanières. Coupez les tomates prunes en petits dés et ciselez finement le persil frisé.

CONSEIL: LE SAVIEZ-VOUS ? Ce plat contient plus de 250 g de légumes, et plus de l'apport journalier recommandé en vitamine C grâce à la tomate et au poivron.

Cuire les légumes
2

Faites chauffer l’huile d’olive dans un wok ou une sauteuse avec couvercle et faites-y revenir l’oignon, l’ail et le piment rouge 2 minutes à feu moyen-vif. Puis, ajoutez le poivron, la tomate et la moitié du persil.

Faire mijoter les légumes
3

Ajoutez ensuite 30 ml d’eau par personne dans le wok ou la sauteuse, puis émiettez le cube de bouillon par-dessus. Portez à ébullition tout en remuant, puis laissez mijoter 5 minutes à couvert sur feu moyen-vif. Salez et poivrez.

Cuire les oeufs
4

Pour chaque œuf, faites un petit cratère dans le mélange de légumes, puis cassez-y les œufs. Saupoudrez-les de sel et de poivre. Disposez le chèvre frais émietté sur l’ensemble, couvrez et laissez les œufs cuire pendant 10 minutes (voir CONSEIL). Lors des 4 dernières minutes, retirez le couvercle, augmentez un peu le feu et laissez l’excédent d’eau s’évaporer.

CONSEIL: CONSEIL : La cuisson de l’œuf dépend de la hauteur de votre poêle. Elle durera plus longtemps avec une poêle profonde à bord haut, contrairement à une poêle à bord bas ou un wok.

Cuire la baguette
5

Pendant ce temps, enfournez les demi-baguettes 6 à 8 minutes ou jusqu’à ce qu’elles soient dorées.

Servir
6

Servez le chakchouka dans les assiettes. Garnissez du reste de persil et présentez les demi-baguettes en accompagnement.

\ No newline at end of file diff --git a/tests/test_hellofresh.py b/tests/test_hellofresh.py index d5ffb311c..bc749a4f4 100644 --- a/tests/test_hellofresh.py +++ b/tests/test_hellofresh.py @@ -14,7 +14,7 @@ def test_host_domain(self): def test_canonical_url(self): self.assertEqual( - "https://www.hellofresh.co.uk/recipes/thai-style-pork-stir-fry-wk-49-5a01c742450cfa39e02c5642", + "https://www.hellofresh.co.uk/recipes/thai-style-pork-rice-bowl-5feb63f527c560013957dd24", self.harvester_class.canonical_url(), ) diff --git a/tests/test_hellofresh_adhoc.py b/tests/test_hellofresh_adhoc.py index 4b1eff47b..d0ad47cf8 100644 --- a/tests/test_hellofresh_adhoc.py +++ b/tests/test_hellofresh_adhoc.py @@ -15,7 +15,7 @@ def test_canonical_url(self): def test_title(self): self.assertEqual( - "Chakchouka au fromage de chèvre avec du piment, des œufs et du persil", + "Chakchouka au chèvre frais avec du piment, des œufs et du persil", self.harvester_class.title(), ) @@ -31,39 +31,39 @@ def test_yields(self): def test_ingredients(self): self.assertEqual( [ - "2 * ¼ pièce Cube de bouillon de légumes", - "2 * ½ pièce Oignon jaune", - "2 * 1 pièce Gousse d'ail", - "2 * ¼ pièce Piment rouge", - "2 * ½ pièce Poivron rouge", - "2 * 2 pièce Tomate allongée", - "2 * 2 pièce Œuf de poule élevée en plein air", - "2 * 50 g Fromage de chèvre frais", - "2 * 2.5 g Persil plat", - "2 * 1 pièce Demi-baguette", - "2 * 1 cs Huile d'olive", - "2 * selon le goût Poivre et sel", + "1 pièce(s) Oignon", + "2 pièce(s) Gousse d'ail", + "½ pièce(s) Piment", + "1 pièce(s) Poivron rouge", + "4 pièce(s) Tomate", + "5 g Persil", + "4 pièce(s) Œuf", + "75 g Fromage de chèvre frais", + "2 pièce(s) Baguette", + "1 cs Huile d'olive", + "½ pièce(s) Cube de bouillon de légumes", + "selon le goût Poivre et sel", ], self.harvester_class.ingredients(), ) def test_instructions(self): self.assertEqual( - """Préchauffez le four à 210 degrés. Hachez l'oignon et écrasez ou émincez l'ail. Épépinez le piment rouge et le poivron rouge et coupez-les en lanières. Coupez les tomates prunes en petits dés et ciselez finement le persil frisé.\nFaites chauffer l’huile d’olive dans un wok ou une sauteuse avec couvercle et faites-y revenir l’oignon, l’ail et le piment rouge 2 minutes à feu moyen-vif. Puis, ajoutez le poivron, la tomate et la moitié du persil.\nAjoutez ensuite 30 ml d’eau par personne dans le wok ou la sauteuse, puis émiettez le cube de bouillon par-dessus. Portez à ébullition tout en remuant, puis laissez mijoter 5 minutes à couvert sur feu moyen-vif. Salez et poivrez.\nPour chaque œuf, faites un petit cratère dans le mélange de légumes, puis cassez-y les œufs. Saupoudrez-les de sel et de poivre. Disposez le chèvre frais émietté sur l’ensemble, couvrez et laissez les œufs cuire pendant 10 minutes. Lors des 4 dernières minutes, retirez le couvercle, augmentez un peu le feu et laissez l’excédent d’eau s’évaporer.\nPendant ce temps, enfournez les demi-baguettes 6 à 8 minutes ou jusqu’à ce qu’elles soient dorées.\nServez le chakchouka dans les assiettes. Garnissez du reste de persil et présentez les demi-baguettes en accompagnement.""", + """Préchauffez le four à 210 degrés. Hachez l'oignon et écrasez ou émincez l'ail. Épépinez le piment rouge et le poivron rouge et coupez-les en lanières. Coupez les tomates prunes en petits dés et ciselez finement le persil frisé.CONSEIL: LE SAVIEZ-VOUS ? Ce plat contient plus de 250 g de légumes, et plus de l'apport journalier recommandé en vitamine C grâce à la tomate et au poivron.\nFaites chauffer l’huile d’olive dans un wok ou une sauteuse avec couvercle et faites-y revenir l’oignon, l’ail et le piment rouge 2 minutes à feu moyen-vif. Puis, ajoutez le poivron, la tomate et la moitié du persil.\nAjoutez ensuite 30 ml d’eau par personne dans le wok ou la sauteuse, puis émiettez le cube de bouillon par-dessus. Portez à ébullition tout en remuant, puis laissez mijoter 5 minutes à couvert sur feu moyen-vif. Salez et poivrez.\nPour chaque œuf, faites un petit cratère dans le mélange de légumes, puis cassez-y les œufs. Saupoudrez-les de sel et de poivre. Disposez le chèvre frais émietté sur l’ensemble, couvrez et laissez les œufs cuire pendant 10 minutes (voir CONSEIL). Lors des 4 dernières minutes, retirez le couvercle, augmentez un peu le feu et laissez l’excédent d’eau s’évaporer.CONSEIL: CONSEIL : La cuisson de l’œuf dépend de la hauteur de votre poêle. Elle durera plus longtemps avec une poêle profonde à bord haut, contrairement à une poêle à bord bas ou un wok.\nPendant ce temps, enfournez les demi-baguettes 6 à 8 minutes ou jusqu’à ce qu’elles soient dorées.\nServez le chakchouka dans les assiettes. Garnissez du reste de persil et présentez les demi-baguettes en accompagnement.""", self.harvester_class.instructions(), ) def test_nutrients(self): self.assertEqual( { - "calories": "857 kcal", - "fatContent": "28 g", - "saturatedFatContent": "10 g", - "carbohydrateContent": "109 g", - "sugarContent": "15 g", - "proteinContent": "35 g", - "sodiumContent": "4 g", - "servingSize": "654", + "calories": "600 kcal", + "fatContent": "8.98 g", + "saturatedFatContent": "1.25 g", + "carbohydrateContent": "107.89 g", + "sugarContent": "13.27 g", + "proteinContent": "16.52 g", + "sodiumContent": "3.12 g", + "servingSize": "484", }, self.harvester_class.nutrients(), ) @@ -72,4 +72,4 @@ def test_cuisine(self): self.assertEqual("Middle Eastern", self.harvester_class.cuisine()) def test_category(self): - self.assertEqual("main course", self.harvester_class.category()) + self.assertEqual("Plat principal", self.harvester_class.category())