.. image:: https://img.shields.io/github/stars/hhursev/recipe-scrapers?style=social
:target: https://github.com/hhursev/recipe-scrapers/
:alt: Github
.. image:: https://img.shields.io/pypi/v/recipe-scrapers.svg?
:target: https://pypi.org/project/recipe-scrapers/
:alt: Version
.. image:: https://img.shields.io/pypi/pyversions/recipe-scrapers
:target: https://pypi.org/project/recipe-scrapers/
:alt: PyPI - Python Version
.. image:: https://pepy.tech/badge/recipe-scrapers
:target: https://pepy.tech/project/recipe-scrapers
:alt: Downloads
.. image:: https://github.com/hhursev/recipe-scrapers/workflows/unittests/badge.svg?branch=main
:target: https://github.com/hhursev/recipe-scrapers/actions/
:alt: GitHub Actions Unittests
.. image:: https://coveralls.io/repos/hhursev/recipe-scraper/badge.svg?branch=main&service=github
:target: https://coveralls.io/github/hhursev/recipe-scraper?branch=main
:alt: Coveralls
.. image:: https://img.shields.io/github/license/hhursev/recipe-scrapers?
:target: https://github.com/hhursev/recipe-scrapers/blob/main/LICENSE
:alt: License
------
A simple scraping tool for recipe webpages.
Netiquette
----------
If you're using this library to collect large numbers of recipes from the web, please use the software responsibly and try to avoid creating high volumes of network traffic.
Python's standard library provides a ``robots.txt`` `parser <https://docs.python.org/3/library/urllib.robotparser.html>`_ that may be helpful to automatically follow common instructions specified by websites for web crawlers.
Getting Started
---------------
Start by using `Python's built-in package installer <https://docs.python.org/3/installing/index.html>`_, ``pip``, to install the library:
.. code:: shell
python -m pip install recipe-scrapers
This should produce output about the installation process, with the final line reading: ``Successfully installed recipe-scrapers-<version-number>``.
To learn what the library can do, you can open a `Python interpreter session <https://docs.python.org/3/tutorial/interpreter.html>`_, and then begin typing -- and/or modifying -- the statements below:
.. code:: python
from urllib.request import urlopen
from recipe_scrapers import scrape_html
url = "https://www.allrecipes.com/recipe/158968/spinach-and-feta-turkey-burgers/"
html = urlopen(url).read().decode("utf-8") # retrieves the recipe webpage HTML
scraper = scrape_html(html, org_url=url)
scraper.title()
scraper.instructions() # etc.
# for a complete list of methods:
# help(scraper)
Some Python HTTP clients that you can use to retrieve HTML include `requests`_, `httpx`_, and the `urllib.request module`_ included in Python's standard library. Please refer to their documentation to find out what options (timeout configuration, proxy support, etc) are available.
.. _requests: https://pypi.org/project/requests/
.. _httpx: https://pypi.org/project/httpx/
.. _urllib.request module: https://docs.python.org/3/library/urllib.request.html
Scrapers available for:
-----------------------
- `https://101cookbooks.com/ <https://101cookbooks.com/>`_
- `https://15gram.be <https://15gram.be>`_
- `https://40aprons.com/ <https://40aprons.com/>`_
- `https://www.750g.com <https://www.750g.com>`_
- `https://abeautifulmess.com/ <https://abeautifulmess.com/>`_
- `https://aberlehome.com/ <https://aberlehome.com>`_
- `https://abuelascounter.com/ <https://abuelascounter.com>`_
- `https://www.acouplecooks.com <https://acouplecooks.com/>`_
- `https://addapinch.com/ <https://addapinch.com/>`_
- `http://www.afghankitchenrecipes.com/ <http://www.afghankitchenrecipes.com/>`_
- `https://aflavorjournal.com/ <https://aflavorjournal.com/>`_
- `https://ah.nl/ <https://ah.nl/>`_
- `https://www.ahealthysliceoflife.com/ <https://www.ahealthysliceoflife.com/>`_
- `https://akispetretzikis.com/ <https://akispetretzikis.com/>`_
- `https://aldi-nord.de/ <https://aldi-nord.de/>`_
- `.es <https://aldi.es/>`__, `.fr <https://aldi.fr/>`__, `.lu <https://aldi.lu/>`__, `.nl <https://aldi.nl/>`__, `.pl <https://aldi.pl/>`__, `.pt <https://aldi.pt/>`__
- `https://aldi-sued.de/ <https://aldi-sued.de/>`_
- `.hu <https://aldi.hu/>`__, `.it <https://aldi.it/>`__
- `https://aldi-suisse.ch <https://aldi-suisse.ch/>`_
- `https://aldi.com.au/ <https://aldi.com.au/>`_
- `https://alexandracooks.com/ <https://alexandracooks.com/>`_
- `https://alittlebityummy.com/ <https://alittlebityummy.com/>`_
- `https://allrecipes.com/ <https://allrecipes.com/>`_
- `https://allthehealthythings.com/ <https://allthehealthythings.com/>`_
- `https://alltommat.se/ <https://alltommat.se/>`_
- `https://altonbrown.com/ <https://altonbrown.com/>`_
- `https://amazingribs.com/ <https://amazingribs.com/>`_
- `https://ambitiouskitchen.com/ <https://ambitiouskitchen.com>`_
- `https://ameessavorydish.com/ <https://ameessavorydish.com/>`_
- `https://americastestkitchen.com/ <https://www.americastestkitchen.com>`_ (*)
- `https://archanaskitchen.com/ <https://archanaskitchen.com/>`_
- `https://www.argiro.gr/ <https://www.argiro.gr/>`_
- `https://www.arla.se/ <https://www.arla.se/>`_
- `https://www.atelierdeschefs.fr/ <https://www.atelierdeschefs.fr/>`_
- `https://averiecooks.com/ <https://www.averiecooks.com/>`_
- `https://www.bakels.com.au/ <https://www.bakels.com.au/>`_
- `.co.uk <https://bakels.co.uk/>`_
- `https://baking-sense.com/ <https://baking-sense.com/>`_
- `https://bakingmischief.com/ <https://bakingmischief.com/>`_
- `https://barefeetinthekitchen.com/ <https://barefeetinthekitchen.com/>`_
- `https://barefootcontessa.com/ <https://barefootcontessa.com>`_
- `https://barefootinthepines.com/ <https://barefootinthepines.com/>`_
- `https://bbc.com/ <https://bbc.com/food/recipes>`_
- `.co.uk <https://bbc.co.uk/food/recipes>`__
- `https://bbcgoodfood.com/ <https://bbcgoodfood.com>`_
- `https://bestrecipes.com.au/ <https://bestrecipes.com.au>`_
- `https://betterfoodguru.com/ <https://betterfoodguru.com/>`_
- `https://bettybossi.ch/ <https://bettybossi.ch>`_
- `https://bettycrocker.com/ <https://bettycrocker.com>`_
- `https://beyondfrosting.com/ <https://beyondfrosting.com/>`_
- `https://biancazapatka.com/ <https://biancazapatka.com>`_
- `https://bigoven.com/ <https://bigoven.com>`_
- `https://bitsofcarey.com/ <https://bitsofcarey.com/>`_
- `https://blueapron.com/ <https://blueapron.com>`_
- `https://bluejeanchef.com/ <https://bluejeanchef.com/>`_
- `https://www.bodybuilding.com/ <https://www.bodybuilding.com/>`_
- `https://bonappetit.com/ <https://bonappetit.com>`_
- `https://bongeats.com/ <https://bongeats.com/>`_
- `https://books.ottolenghi.co.uk <https://books.ottolenghi.co.uk/>`_ (*)
- `https://bowlofdelicious.com/ <https://bowlofdelicious.com/>`_
- `https://breadtopia.com/ <https://breadtopia.com/>`_
- `https://briceletbaklava.ch/ <https://briceletbaklava.ch/>`_
- `https://brokenovenbaking.com/ <https://brokenovenbaking.com/>`_
- `https://budgetbytes.com/ <https://budgetbytes.com>`_
- `https://cafedelites.com/ <https://cafedelites.com/>`_
- `https://cakemehometonight.com/ <https://cakemehometonight.com/>`_
- `https://cambreabakes.com/ <https://cambreabakes.com/>`_
- `https://carlsbadcravings.com/ <https://carlsbadcravings.com/>`_
- `https://castironketo.net/ <https://castironketo.net/>`_
- `https://cdkitchen.com/ <https://cdkitchen.com/>`_
- `https://celebratingsweets.com/ <https://celebratingsweets.com/>`_
- `https://chefjeanpierre.com/ <https://chefjeanpierre.com/>`_
- `https://chefkoch.de/ <https://chefkoch.de>`_
- `https://www.chefnini.com/ <https://www.chefnini.com/>`_
- `https://chefsavvy.com/ <https://chefsavvy.com/>`_
- `https://claudia.abril.com.br/ <https://claudia.abril.com.br>`_
- `https://closetcooking.com/ <https://closetcooking.com>`_
- `https://colleenchristensennutrition.com/ <https://colleenchristensennutrition.com/>`_
- `https://comidinhasdochef.com/ <https://comidinhasdochef.com/>`_
- `https://cook-talk.com/ <https://cook-talk.com/>`_
- `https://cookeatshare.com/ <https://cookeatshare.com/>`_
- `https://cookieandkate.com/ <https://cookieandkate.com/>`_
- `https://cookiesandcups.com/ <https://cookiesandcups.com/>`_
- `https://cooking.nytimes.com/ <https://cooking.nytimes.com>`_
- `https://cookingcircle.com/ <https://cookingcircle.com/>`_
- `https://cookinglight.com/ <https://cookinglight.com/>`_
- `https://cookomix.com/ <https://cookomix.com/>`_
- `https://cookpad.com/ <https://cookpad.com/>`_
- `https://cookscountry.com/ <https://www.cookscountry.com>`_ (*)
- `https://cooksillustrated.com/ <https://www.cooksillustrated.com>`_ (*)
- `https://cookwell.com/ <https://cookwell.com/>`_
- `https://copykat.com/ <https://copykat.com>`_
- `https://www.costco.com/ <https://www.costco.com>`_
- `https://countryliving.com/ <https://countryliving.com>`_
- `https://creativecanning.com/ <https://creativecanning.com>`_
- `https://cucchiaio.it/ <https://cucchiaio.it>`_
- `https://cuisineaz.com/ <https://cuisineaz.com>`_
- `https://cybercook.com.br/ <https://cybercook.com.br/>`_
- `https://damndelicious.net/ <https://damndelicious.net/>`_
- `https://www.davidlebovitz.com/ <https://www.davidlebovitz.com/>`_
- `https://delish.com/ <https://delish.com>`_
- `https://dinneratthezoo.com/ <https://dinneratthezoo.com>`_
- `https://dinnerthendessert.com/ <https://dinnerthendessert.com/>`_
- `https://dish.co.nz/ <https://dish.co.nz>`_
- `https://dobruchut.aktuality.sk/ <https://dobruchut.aktuality.sk>`_
- `https://domesticate-me.com/ <https://domesticate-me.com/>`_
- `https://donalskehan.com/ <https://donalskehan.com/>`_
- `https://downshiftology.com/ <https://downshiftology.com/>`_
- `https://www.dr.dk/ <https://www.dr.dk/>`_
- `https://www.eatingbirdfood.com/ <https://www.eatingbirdfood.com>`_
- `https://www.eatingwell.com/ <https://www.eatingwell.com>`_
- `https://www.eatliverun.com/ <https://www.eatliverun.com/>`_
- `https://eatsmarter.com/ <https://eatsmarter.com/>`_
- `.de <https://eatsmarter.de/>`__
- `https://eatthismuch.com/ <https://eatthismuch.com/>`_
- `https://eattolerant.de/ <https://eattolerant.de/>`_
- `https://www.eatwell101.com <https://www.eatwell101.com>`_
- `https://eatwhattonight.com/ <https://eatwhattonight.com/>`_
- `https://eggs.ca/ <https://eggs.ca/>`_
- `https://elavegan.com/ <https://elavegan.com/>`_
- `https://emmikochteinfach.de/ <https://emmikochteinfach.de/>`_
- `https://en.wikibooks.org/ <https://en.wikibooks.org>`_
- `https://epicurious.com/ <https://epicurious.com>`_
- `https://www.errenskitchen.com/ <https://www.errenskitchen.com/>`_
- `https://ethanchlebowski.com/ <https://ethanchlebowski.com>`_
- `https://www.evolvingtable.com/ <https://www.evolvingtable.com/>`_
- `https://www.familyfoodonthetable.com/ <https://www.familyfoodonthetable.com/>`_
- `https://www.farmhouseonboone.com/ <https://www.farmhouseonboone.com/>`_
- `https://www.fattoincasadabenedetta.it/ <https://www.fattoincasadabenedetta.it/>`_
- `https://felix.kitchen <https://felix.kitchen>`_
- `https://fifteenspatulas.com/ <https://www.fifteenspatulas.com/>`_
- `https://finedininglovers.com/ <https://www.finedininglovers.com>`_
- `https://fitmencook.com/ <https://www.fitmencook.com>`_
- `https://fitslowcookerqueen.com <https://fitslowcookerqueen.com/>`_
- `https://food.com/ <https://www.food.com>`_
- `https://food52.com/ <https://www.food52.com>`_
- `https://foodandwine.com/ <https://www.foodandwine.com>`_
- `https://foodfidelity.com/ <https://foodfidelity.com>`_
- `https://foodnetwork.co.uk/ <https://www.foodnetwork.co.uk>`_
- `.com <https://www.foodnetwork.com>`__
- `https://foodrepublic.com/ <https://foodrepublic.com>`_
- `https://www.forksoverknives.com/ <https://www.forksoverknives.com/>`_
- `https://forktospoon.com/ <https://forktospoon.com/>`_
- `https://franzoesischkochen.de/ <https://franzoesischkochen.de/>`_
- `https://www.gesund-aktiv.com/ <https://www.gesund-aktiv.com>`_
- `https://gimmesomeoven.com/ <https://www.gimmesomeoven.com/>`_
- `https://glutenfreeonashoestring.com/ <https://glutenfreeonashoestring.com/>`_
- `https://godt.no/ <https://godt.no/>`_
- `https://gonnawantseconds.com/ <https://gonnawantseconds.com>`_
- `https://goodfooddiscoveries.com/ <https://goodfooddiscoveries.com/>`_
- `https://goodhousekeeping.com/ <https://www.goodhousekeeping.com/>`_
- `https://gourmettraveller.com.au/ <https://gourmettraveller.com.au>`_
- `https://www.grandfrais.com/ <https://www.grandfrais.com>`_
- `https://greatbritishchefs.com/ <https://greatbritishchefs.com>`_
- `https://grimgrains.com/ <https://grimgrains.com>`_
- `http://www.grouprecipes.com/ <http://www.grouprecipes.com/>`_
- `https://halfbakedharvest.com/ <https://www.halfbakedharvest.com/>`_
- `https://handletheheat.com/ <https://handletheheat.com/>`_
- `https://www.hassanchef.com/ <https://www.hassanchef.com/>`_
- `https://headbangerskitchen.com/ <https://www.headbangerskitchen.com/>`_
- `https://healthyeating.nhlbi.nih.gov/ <https://healthyeating.nhlbi.nih.gov>`_
- `https://heatherchristo.com/ <https://heatherchristo.com/>`_
- `https://www.heb.com/ <https://www.heb.com/recipe/landing>`_
- `https://hellofresh.com/ <https://hellofresh.com>`_
- `.at <https://www.hellofresh.at/>`__, `.be <https://www.hellofresh.be/>`__, `.ca <https://www.hellofresh.ca/>`__, `.ch <https://www.hellofresh.ch/>`__, `.co.nz <https://www.hellofresh.co.nz/>`__, `.co.uk <https://hellofresh.co.uk>`__, `.com.au <https://www.hellofresh.com.au/>`__, `.de <https://www.hellofresh.de/>`__, `.dk <https://www.hellofresh.dk/>`__, `.es <https://www.hellofresh.es/>`__, `.fr <https://www.hellofresh.fr/>`__, `.ie <https://www.hellofresh.ie/>`__, `.it <https://www.hellofresh.it/>`__, `.lu <https://www.hellofresh.lu/>`__, `.nl <https://www.hellofresh.nl/>`__, `.no <https://www.hellofresh.no/>`__, `.se <https://www.hellofresh.se/>`__
- `https://www.hersheyland.com/ <https://www.hersheyland.com/>`_
- `https://hofer.at/ <https://hofer.at/>`_
- `.si <https://hofer.si/>`__
- `https://www.homechef.com/ <https://www.homechef.com/>`_
- `https://hostthetoast.com/ <https://hostthetoast.com/>`_
- `https://hungryhappens.net/ <https://hungryhappens.net/>`_
- `https://www.ica.se/ <https://www.ica.se/>`_
- `https://www.im-worthy.com/ <https://www.im-worthy.com>`_
- `https://inbloombakery.com/ <https://inbloombakery.com/>`_
- `https://indianhealthyrecipes.com <https://www.indianhealthyrecipes.com>`_
- `https://ingoodflavor.com <https://www.ingoodflavor.com>`_
- `https://www.innit.com/ <https://www.innit.com/>`_
- `https://insanelygoodrecipes.com <https://insanelygoodrecipes.com/>`_
- `https://inspiralized.com/ <https://inspiralized.com>`_
- `https://inspiredtaste.net/ <https://inspiredtaste.net/>`_
- `https://irishcentral.com/ <https://irishcentral.com>`_
- `https://izzycooking.com/ <https://izzycooking.com/>`_
- `https://jamieoliver.com/ <https://jamieoliver.com>`_
- `https://jimcooksfoodgood.com/ <https://jimcooksfoodgood.com/>`_
- `https://www.jocooks.com/ <https://www.jocooks.com>`_
- `https://joshuaweissman.com/ <https://joshuaweissman.com/>`_
- `https://joyfoodsunshine.com/ <https://joyfoodsunshine.com>`_
- `https://joythebaker.com/ <https://joythebaker.com>`_
- `https://juliegoodwin.com.au/ <https://juliegoodwin.com.au>`_
- `https://justataste.com/ <https://justataste.com>`_
- `https://justbento.com/ <https://justbento.com>`_
- `https://www.justonecookbook.com/ <https://www.justonecookbook.com>`_
- `https://kalejunkie.com/ <https://kalejunkie.com/>`_
- `https://kennymcgovern.com/ <https://kennymcgovern.com>`_
- `https://keukenliefde.nl/ <https://keukenliefde.nl>`_
- `https://www.kingarthurbaking.com <https://www.kingarthurbaking.com>`_
- `https://kitchenaid.com.au/ <https://kitchenaid.com.au/blogs/kitchenthusiast/tagged/blog-category-recipes>`_
- `https://kitchendivas.com <https://kitchendivas.com>`_
- `https://www.kitchendreaming.com <https://www.kitchendreaming.com>`_
- `https://www.kitchensanctuary.com/ <https://www.kitchensanctuary.com>`_
- `https://www.kitchenstories.com/ <https://www.kitchenstories.com>`_
- `https://kochbar.de/ <https://kochbar.de>`_
- `https://kochbucher.com/ <https://kochbucher.com/>`_
- `http://koket.se/ <http://koket.se>`_
- `https://kristineskitchenblog.com/ <https://kristineskitchenblog.com>`_
- `https://krollskorner.com/ <https://krollskorner.com/>`_
- `https://kuchnia-domowa.pl/ <https://www.kuchnia-domowa.pl/>`_
- `https://kuchynalidla.sk/ <https://www.kuchynalidla.sk/>`_
- `https://www.kwestiasmaku.com/ <https://www.kwestiasmaku.com/>`_
- `https://lanascooking.com/ <https://lanascooking.com/>`_
- `https://www.latelierderoxane.com <https://www.latelierderoxane.com/blog/recettes/>`_
- `https://leanandgreenrecipes.net <https://leanandgreenrecipes.net>`_
- `https://www.lecker.de <https://www.lecker.de/rezepte>`_
- `https://lecremedelacrumb.com/ <https://lecremedelacrumb.com/>`_
- `https://leitesculinaria.com <https://leitesculinaria.com>`_
- `https://lekkerensimpel.com <https://lekkerensimpel.com>`_
- `https://leukerecepten.nl/ <https://www.leukerecepten.nl>`_
- `https://lifestyleofafoodie.com <https://lifestyleofafoodie.com>`_
- `https://littlespicejar.com/ <https://littlespicejar.com>`_
- `https://littlesunnykitchen.com/ <https://littlesunnykitchen.com>`_
- `http://livelytable.com/ <http://livelytable.com/>`_
- `https://lovingitvegan.com/ <https://lovingitvegan.com/>`_
- `https://www.maangchi.com <https://www.maangchi.com>`_
- `https://www.madamecuisine.de <https://www.madamecuisine.de>`_
- `https://madensverden.dk/ <https://madensverden.dk/>`_
- `https://madsvin.com/ <https://madsvin.com/>`_
- `https://makeitdairyfree.com/ <https://makeitdairyfree.com/>`_
- `https://marmiton.org/ <https://marmiton.org/>`_
- `https://www.marthastewart.com/ <https://www.marthastewart.com/>`_
- `https://matprat.no/ <https://matprat.no/>`_
- `https://www.mccormick.com/ <https://www.mccormick.com/>`_
- `https://meganvskitchen.com/ <https://meganvskitchen.com/>`_
- `https://meljoulwan.com/ <https://meljoulwan.com/>`_
- `https://www.melskitchencafe.com/ <https://www.melskitchencafe.com/>`_
- `https://www.miljuschka.nl/ <https://www.miljuschka.nl/>`_
- `http://mindmegette.hu/ <http://mindmegette.hu/>`_
- `https://minimalistbaker.com/ <https://minimalistbaker.com/>`_
- `https://ministryofcurry.com/ <https://ministryofcurry.com/>`_
- `https://misya.info/ <https://misya.info>`_
- `https://www.mob.co.uk/ <https://www.mob.co.uk/>`_
- `https://mobkitchen.co.uk/ <https://mobkitchen.co.uk/>`_
- `https://www.modernhoney.com/ <https://www.modernhoney.com/>`_
- `https://www.momontimeout.com/ <https://www.momontimeout.com/>`_
- `https://momswithcrockpots.com/ <https://momswithcrockpots.com>`_
- `http://motherthyme.com/ <http://motherthyme.com/>`_
- `https://www.moulinex.fr/ <https://www.moulinex.fr/>`_
- `https://www.mundodereceitasbimby.com.pt/ <https://www.mundodereceitasbimby.com.pt/>`_
- `https://mybakingaddiction.com/ <https://mybakingaddiction.com>`_
- `https://myjewishlearning.com/ <https://myjewishlearning.com>`_
- `https://mykitchen101.com/ <https://mykitchen101.com>`_
- `https://mykitchen101en.com/ <https://mykitchen101en.com>`_
- `https://mykoreankitchen.com/ <https://mykoreankitchen.com>`_
- `https://www.myplate.gov/ <https://www.myplate.gov/>`_
- `https://myrecipes.com/ <https://myrecipes.com>`_
- `https://myvegetarianroots.com/ <https://myvegetarianroots.com/>`_
- `https://www.nhs.uk/healthier-families/ <https://www.nhs.uk/healthier-families/>`_
- `https://nibbledish.com/ <https://nibbledish.com>`_
- `https://noracooks.com/ <https://noracooks.com/>`_
- `https://norecipes.com/ <https://norecipes.com/>`_
- `https://nosalty.hu/ <https://nosalty.hu/>`_
- `https://www.notenoughcinnamon.com/ <https://www.notenoughcinnamon.com/>`_
- `https://nourishedbynutrition.com/ <https://nourishedbynutrition.com/>`_
- `https://www.nrk.no/ <https://www.nrk.no/>`_
- `https://www.number-2-pencil.com/ <https://www.number-2-pencil.com/>`_
- `https://nutritionbynathalie.com/blog <https://nutritionbynathalie.com/blog>`_
- `https://nutritionfacts.org/ <https://nutritionfacts.org/>`_
- `https://ohsheglows.com/ <https://ohsheglows.com>`_
- `https://omnivorescookbook.com <https://omnivorescookbook.com>`_
- `https://www.onceuponachef.com <https://www.onceuponachef.com>`_
- `https://onesweetappetite.com/ <https://onesweetappetite.com>`_
- `https://owen-han.com/ <https://owen-han.com>`_
- `https://www.paleorunningmomma.com/ <https://www.paleorunningmomma.com>`_
- `https://www.panelinha.com.br/ <https://www.panelinha.com.br>`_
- `https://paninihappy.com/ <https://paninihappy.com>`_
- `https://www.peelwithzeal.com/ <https://www.peelwithzeal.com/>`_
- `https://www.persnicketyplates.com/ <https://www.persnicketyplates.com/>`_
- `https://www.pickuplimes.com/ <https://www.pickuplimes.com/>`_
- `https://pinchofyum.com/ <https://pinchofyum.com/>`_
- `https://www.pingodoce.pt/ <https://www.pingodoce.pt>`_
- `https://pinkowlkitchen.com/ <https://pinkowlkitchen.com/>`_
- `https://www.platingpixels.com/ <https://www.platingpixels.com/>`_
- `https://plowingthroughlife.com/ <https://plowingthroughlife.com/>`_
- `https://popsugar.com/ <https://popsugar.com>`_
- `https://potatorolls.com/ <https://potatorolls.com/>`_
- `https://practicalselfreliance.com/ <https://practicalselfreliance.com>`_
- `https://pressureluckcooking.com/ <https://pressureluckcooking.com/>`_
- `https://www.primaledgehealth.com/ <https://www.primaledgehealth.com/>`_
- `https://www.projectgezond.nl/ <https://www.projectgezond.nl/>`_
- `https://przepisy.pl/ <https://przepisy.pl>`_
- `https://purelypope.com/ <https://purelypope.com>`_
- `https://purplecarrot.com/ <https://purplecarrot.com>`_
- `https://quitoque.fr/ <https://quitoque.fr>`_
- `https://rachlmansfield.com/ <https://rachlmansfield.com>`_
- `https://rainbowplantlife.com/ <https://rainbowplantlife.com/>`_
- `https://realfood.tesco.com/ <https://realfood.tesco.com>`_
- `https://realsimple.com/ <https://www.realsimple.com>`_
- `https://receitas.globo.com/ <https://www.receitas.globo.com/>`_
- `https://receitas.ig.com.br/ <https://receitas.ig.com.br>`_
- `https://www.receitasnestle.com.br <https://www.receitasnestle.com.br>`_
- `https://recept.se/ <https://recept.se/>`_
- `https://receptyprevas.sk/ <https://receptyprevas.sk/>`_
- `https://recette.plus/ <https://recette.plus/>`_
- `https://www.recipegirl.com/ <https://www.recipegirl.com/>`_
- `https://recipeland.com/ <https://recipeland.com/>`_
- `https://reciperunner.com/ <https://www.reciperunner.com>`_
- `https://recipes.farmhousedelivery.com/ <https://recipes.farmhousedelivery.com/>`_
- `https://recipes.timesofindia.com/ <https://recipes.timesofindia.com/>`_
- `https://recipetineats.com/ <https://www.recipetineats.com/>`_
- `https://redhousespice.com/ <https://redhousespice.com/>`_
- `https://reishunger.de/ <https://www.reishunger.de/>`_
- `https://rewe.de/ <https://www.rewe.de>`_
- `https://rezeptwelt.de/ <https://rezeptwelt.de>`_
- `https://ricetta.it/ <https://ricetta.it>`_
- `https://ricette.giallozafferano.it/ <https://ricette.giallozafferano.it>`_
- `https://www.ricetteperbimby.it/ <https://www.ricetteperbimby.it/>`_
- `https://rosannapansino.com <https://rosannapansino.com>`_
- `https://rutgerbakt.nl/ <https://rutgerbakt.nl/>`_
- `https://www.saboresajinomoto.com.br/ <https://www.saboresajinomoto.com.br/>`_
- `https://sallys-blog.de <https://sallys-blog.de/>`_
- `https://sallysbakingaddiction.com <https://sallysbakingaddiction.com/>`_
- `https://saltpepperskillet.com/ <https://saltpepperskillet.com/>`_
- `https://sandwichtribunal.com/ <https://sandwichtribunal.com/>`_
- `https://www.saveur.com/ <https://www.saveur.com/>`_
- `https://www.savorynothings.com/ <https://www.savorynothings.com/>`_
- `https://schoolofwok.co.uk/ <https://schoolofwok.co.uk/>`_
- `https://seriouseats.com/ <https://seriouseats.com>`_
- `https://shelikesfood.com/ <https://shelikesfood.com/>`_
- `https://simple-veganista.com/ <https://simple-veganista.com/>`_
- `https://simply-cookit.com/ <https://simply-cookit.com>`_
- `https://simplyquinoa.com/ <https://simplyquinoa.com>`_
- `https://simplyrecipes.com/ <https://simplyrecipes.com>`_
- `https://simplywhisked.com/ <https://simplywhisked.com>`_
- `https://skinnytaste.com/ <https://www.skinnytaste.com>`_
- `https://smulweb.nl/ <https://smulweb.nl>`_
- `https://sobors.hu/ <https://sobors.hu>`_
- `https://www.southerncastiron.com/ <https://www.southerncastiron.com>`_
- `https://southernliving.com/ <https://southernliving.com/>`_
- `https://spainonafork.com/ <https://spainonafork.com/>`_
- `https://spendwithpennies.com/ <https://spendwithpennies.com/>`_
- `https://www.springlane.de <https://www.springlane.de>`_
- `https://www.staysnatched.com/ <https://www.staysnatched.com/>`_
- `https://steamykitchen.com/ <https://steamykitchen.com>`_
- `https://streetkitchen.hu/ <https://streetkitchen.hu>`_
- `https://www.strongrfastr.com <https://www.strongrfastr.com>`_
- `https://sunbasket.com/ <https://sunbasket.com>`_
- `https://sundpaabudget.dk/ <https://sundpaabudget.dk>`_
- `https://www.sunset.com/ <https://www.sunset.com/>`_
- `https://sweetcsdesigns.com/ <https://www.sweetcsdesigns.com/>`_
- `https://sweetpeasandsaffron.com/ <https://sweetpeasandsaffron.com/>`_
- `https://www.taste.com.au/ <https://www.taste.com.au/>`_
- `https://www.tasteatlas.com/ <https://www.tasteatlas.com/>`_
- `https://tasteofhome.com <https://tasteofhome.com>`_
- `https://tastesbetterfromscratch.com <https://tastesbetterfromscratch.com>`_
- `https://tastesoflizzyt.com <https://tastesoflizzyt.com>`_
- `https://tasty.co <https://tasty.co>`_
- `https://tastykitchen.com/ <https://tastykitchen.com>`_
- `https://theclevercarrot.com/ <https://theclevercarrot.com>`_
- `https://www.thecookierookie.com/ <https://www.thecookierookie.com/>`_
- `https://thecookingguy.com/ <https://thecookingguy.com>`_
- `https://thefoodietakesflight.com/ <https://thefoodietakesflight.com/>`_
- `https://theglutenfreeaustrian.com/ <https://theglutenfreeaustrian.com/>`_
- `https://thehappyfoodie.co.uk/ <https://thehappyfoodie.co.uk>`_
- `https://thekitchencommunity.org/ <https://thekitchencommunity.org/>`_
- `https://www.thekitchenmagpie.com/ <https://www.thekitchenmagpie.com>`_
- `https://thekitchn.com/ <https://thekitchn.com/>`_
- `https://theloopywhisk.com/ <https://theloopywhisk.com/>`_
- `https://www.themagicalslowcooker.com/ <https://www.themagicalslowcooker.com/>`_
- `https://themediterraneandish.com/ <https://themediterraneandish.com/>`_
- `https://themodernproper.com/ <https://themodernproper.com/>`_
- `https://www.thepalatablelife.com <https://www.thepalatablelife.com/>`_
- `https://thepioneerwoman.com/ <https://thepioneerwoman.com>`_
- `https://therecipecritic.com/ <https://therecipecritic.com>`_
- `https://thesaltymarshmallow.com/ <https://thesaltymarshmallow.com/>`_
- `https://thespruceeats.com/ <https://thespruceeats.com/>`_
- `https://thevintagemixer.com/ <https://thevintagemixer.com>`_
- `https://thewoksoflife.com/ <https://thewoksoflife.com/>`_
- `https://thinlicious.com/ <https://thinlicious.com/>`_
- `https://tidymom.net <https://tidymom.net>`_
- `https://tine.no/ <https://tine.no>`_
- `https://tofoo.co.uk <https://tofoo.co.uk>`_
- `https://tudogostoso.com.br/ <https://www.tudogostoso.com.br/>`_
- `https://twopeasandtheirpod.com/ <http://twopeasandtheirpod.com>`_
- `https://uitpaulineskeuken.nl/ <https://uitpaulineskeuken.nl>`_
- `https://unsophisticook.com/ <https://unsophisticook.com/>`_
- `https://usapears.org/ <https://usapears.org>`_
- `https://www.valdemarsro.dk/ <https://www.valdemarsro.dk/>`_
- `https://vanillaandbean.com/ <https://vanillaandbean.com>`_
- `https://varecha.pravda.sk/ <https://varecha.pravda.sk>`_
- `https://www.vegetarbloggen.no/ <https://www.vegetarbloggen.no/>`_
- `https://vegolosi.it/ <https://vegolosi.it>`_
- `https://vegrecipesofindia.com/ <https://www.vegrecipesofindia.com/>`_
- `https://veroniquecloutier.com <https://veroniquecloutier.com>`_
- `https://www.waitrose.com/ <https://www.waitrose.com/>`_
- `https://watchwhatueat.com/ <https://watchwhatueat.com/>`_
- `https://wearenotmartha.com/ <https://wearenotmartha.com/>`_
- `https://wedishitup.com/ <https://wedishitup.com/>`_
- `https://www.weightwatchers.com/ <https://www.weightwatchers.com/>`_ (*)
- `https://www.wellplated.com/ <https://www.wellplated.com/>`_
- `https://whatsgabycooking.com/ <https://whatsgabycooking.com>`_
- `https://whole30.com/ <https://whole30.com/>`_
- `https://www.wholefoodsmarket.com/ <https://www.wholefoodsmarket.com/>`_
- `.co.uk <https://www.wholefoodsmarket.co.uk/>`__
- `https://www.williams-sonoma.com/ <https://www.williams-sonoma.com/>`_
- `https://womensweeklyfood.com.au/ <https://womensweeklyfood.com.au/>`_
- `https://woop.co.nz/ <https://woop.co.nz/>`_
- `https://yemek.com/ <https://yemek.com>`_
- `https://yummly.com/ <https://yummly.com>`_ (*)
- `https://www.zaubertopf.de <https://www.zaubertopf.de>`_
- `https://zeit.de/ (wochenmarkt) <https://www.zeit.de/zeit-magazin/wochenmarkt/index>`_
- `https://zenbelly.com/ <https://zenbelly.com>`_
(*) offline saved files only
Contribute
----------
If you spot a design change (or something else) that makes the scraper unable to work for a given site - please fire an issue asap.
If you are programmer PRs with fixes are warmly welcomed and acknowledged with a virtual beer. You can find documentation on how to develop scrapers `here <https://github.com/hhursev/recipe-scrapers/blob/main/docs/README.md>`__.
If you want a scraper for a new site added
------------------------------------------
- Open an `Issue <https://github.com/hhursev/recipe-scraper/issues/new>`_ providing us the site name, as well as a recipe link from it.
- You are a developer and want to code the scraper on your own:
- If `Schema is available <#faq>`_ on the site - `you can go like this. <https://github.com/hhursev/recipe-scrapers/pull/176>`_
- Otherwise, scrape the HTML - `like this <https://github.com/hhursev/recipe-scrapers/commit/ffee963d04>`_
- Generating a new scraper class:
.. code:: shell
python generate.py <ClassName> <URL>
- **ClassName**: The name of the new scraper class.
- **URL**: The URL of an example recipe from the target site. The content will be stored in ``test_data`` to be used with the test class.
You can find a more detailed guide `here <https://github.com/hhursev/recipe-scrapers/blob/main/docs/how-to-develop-scraper.md>`__.
For Devs / Contribute
---------------------
Assuming you have ``>=python3.9`` installed, navigate to the directory where you want this project to live in and drop these lines
.. code:: shell
git clone git@github.com:hhursev/recipe-scrapers.git &&
cd recipe-scrapers &&
python -m venv .venv &&
source .venv/bin/activate &&
python -m pip install --upgrade pip &&
pip install -e ".[dev]" &&
pip install pre-commit &&
pre-commit install &&
python -m unittest
In case you want to run a single unittest for a newly developed scraper
.. code:: shell
python -m unittest -k <test_file_name>
FAQ
---
**What if the recipe site I want to extract information from is not listed above?**
You can give it a try with the ``wild_mode`` option!
If there is Schema/Recipe available it will work just fine.
.. code:: python
url = 'https://www.feastingathome.com/tomato-risotto/'
name = input('What is your name, risotto sampler?\n')
html = requests.get(url, headers={"User-Agent": f"Risotto Sampler {name}"}).content
scraper = scrape_html(html, org_url=url, wild_mode=True)
scraper.host()
scraper.title()
scraper.total_time()
scraper.image()
scraper.ingredients()
scraper.ingredient_groups()
scraper.instructions()
scraper.instructions_list()
scraper.yields()
scraper.to_json()
scraper.links()
scraper.nutrients() # not always available
scraper.canonical_url() # not always available
scraper.equipment() # not always available
scraper.cooking_method() # not always available
scraper.keywords() # not always available
scraper.dietary_restrictions() # not always available
Notes:
- ``scraper.links()`` returns a list of dictionaries containing all of the <a> tag attributes. The attribute names are the dictionary keys.
**How do I know if a website has a Recipe Schema?**
Run in python shell:
.. code:: python
# first ensure you have the required packages:
# pip install "recipe-scrapers[online]"
from recipe_scrapers import scrape_html
scraper = scrape_html(html=None, org_url='<url of a recipe from the site>', online=True, wild_mode=True)
# if no error is raised - there's schema available:
scraper.title()
scraper.instructions() # etc.
Special thanks to:
------------------
All the `contributors that helped improving <https://github.com/hhursev/recipe-scrapers/graphs/contributors>`_ the package. You are awesome!
.. image:: https://contrib.rocks/image?repo=hhursev/recipe-scrapers
:target: https://github.com/hhursev/recipe-scrapers/graphs/contributors
Test Data Notice
----------------
All content in ``tests/test_data/`` is used for limited, non-commercial testing purposes and belongs to their respective copyright holders. See the ``tests/test_data/LICENSE.md`` for details. If you're a copyright holder with concerns, you can open an issue or contact us privately via the email in our PyPI page.
Extra:
------
| You want to gather recipes data?
| You have an idea you want to implement?
| Check out `our "Share a project" wall <https://github.com/hhursev/recipe-scrapers/issues/9>`_ - it may save you time and spark ideas!
Raw data
{
"_id": null,
"home_page": null,
"name": "recipe-scrapers",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "James Addison <james@reciperadar.com>",
"keywords": "python, recipes, scraper, harvest, recipe-scraper, recipe-scrapers",
"author": null,
"author_email": "Hristo Harsev <r+pypi@hharsev.com>, James Addison <james@reciperadar.com>",
"download_url": "https://files.pythonhosted.org/packages/74/79/601153905952716d9f2a6433ee40bcff951120daf4952f36d8c66426579e/recipe_scrapers-15.3.3.tar.gz",
"platform": null,
"description": ".. image:: https://img.shields.io/github/stars/hhursev/recipe-scrapers?style=social\n :target: https://github.com/hhursev/recipe-scrapers/\n :alt: Github\n.. image:: https://img.shields.io/pypi/v/recipe-scrapers.svg?\n :target: https://pypi.org/project/recipe-scrapers/\n :alt: Version\n.. image:: https://img.shields.io/pypi/pyversions/recipe-scrapers\n :target: https://pypi.org/project/recipe-scrapers/\n :alt: PyPI - Python Version\n.. image:: https://pepy.tech/badge/recipe-scrapers\n :target: https://pepy.tech/project/recipe-scrapers\n :alt: Downloads\n.. image:: https://github.com/hhursev/recipe-scrapers/workflows/unittests/badge.svg?branch=main\n :target: https://github.com/hhursev/recipe-scrapers/actions/\n :alt: GitHub Actions Unittests\n.. image:: https://coveralls.io/repos/hhursev/recipe-scraper/badge.svg?branch=main&service=github\n :target: https://coveralls.io/github/hhursev/recipe-scraper?branch=main\n :alt: Coveralls\n.. image:: https://img.shields.io/github/license/hhursev/recipe-scrapers?\n :target: https://github.com/hhursev/recipe-scrapers/blob/main/LICENSE\n :alt: License\n\n\n------\n\n\nA simple scraping tool for recipe webpages.\n\n\nNetiquette\n----------\n\nIf you're using this library to collect large numbers of recipes from the web, please use the software responsibly and try to avoid creating high volumes of network traffic.\n\nPython's standard library provides a ``robots.txt`` `parser <https://docs.python.org/3/library/urllib.robotparser.html>`_ that may be helpful to automatically follow common instructions specified by websites for web crawlers.\n\n\nGetting Started\n---------------\n\nStart by using `Python's built-in package installer <https://docs.python.org/3/installing/index.html>`_, ``pip``, to install the library:\n\n.. code:: shell\n\n python -m pip install recipe-scrapers\n\nThis should produce output about the installation process, with the final line reading: ``Successfully installed recipe-scrapers-<version-number>``.\n\nTo learn what the library can do, you can open a `Python interpreter session <https://docs.python.org/3/tutorial/interpreter.html>`_, and then begin typing -- and/or modifying -- the statements below:\n\n.. code:: python\n\n from urllib.request import urlopen\n\n from recipe_scrapers import scrape_html\n\n url = \"https://www.allrecipes.com/recipe/158968/spinach-and-feta-turkey-burgers/\"\n html = urlopen(url).read().decode(\"utf-8\") # retrieves the recipe webpage HTML\n scraper = scrape_html(html, org_url=url)\n scraper.title()\n scraper.instructions() # etc.\n # for a complete list of methods:\n # help(scraper)\n\nSome Python HTTP clients that you can use to retrieve HTML include `requests`_, `httpx`_, and the `urllib.request module`_ included in Python's standard library. Please refer to their documentation to find out what options (timeout configuration, proxy support, etc) are available.\n\n.. _requests: https://pypi.org/project/requests/\n\n.. _httpx: https://pypi.org/project/httpx/\n\n.. _urllib.request module: https://docs.python.org/3/library/urllib.request.html\n\n\nScrapers available for:\n-----------------------\n\n- `https://101cookbooks.com/ <https://101cookbooks.com/>`_\n- `https://15gram.be <https://15gram.be>`_\n- `https://40aprons.com/ <https://40aprons.com/>`_\n- `https://www.750g.com <https://www.750g.com>`_\n- `https://abeautifulmess.com/ <https://abeautifulmess.com/>`_\n- `https://aberlehome.com/ <https://aberlehome.com>`_\n- `https://abuelascounter.com/ <https://abuelascounter.com>`_\n- `https://www.acouplecooks.com <https://acouplecooks.com/>`_\n- `https://addapinch.com/ <https://addapinch.com/>`_\n- `http://www.afghankitchenrecipes.com/ <http://www.afghankitchenrecipes.com/>`_\n- `https://aflavorjournal.com/ <https://aflavorjournal.com/>`_\n- `https://ah.nl/ <https://ah.nl/>`_\n- `https://www.ahealthysliceoflife.com/ <https://www.ahealthysliceoflife.com/>`_\n- `https://akispetretzikis.com/ <https://akispetretzikis.com/>`_\n- `https://aldi-nord.de/ <https://aldi-nord.de/>`_\n - `.es <https://aldi.es/>`__, `.fr <https://aldi.fr/>`__, `.lu <https://aldi.lu/>`__, `.nl <https://aldi.nl/>`__, `.pl <https://aldi.pl/>`__, `.pt <https://aldi.pt/>`__\n- `https://aldi-sued.de/ <https://aldi-sued.de/>`_\n - `.hu <https://aldi.hu/>`__, `.it <https://aldi.it/>`__\n- `https://aldi-suisse.ch <https://aldi-suisse.ch/>`_\n- `https://aldi.com.au/ <https://aldi.com.au/>`_\n- `https://alexandracooks.com/ <https://alexandracooks.com/>`_\n- `https://alittlebityummy.com/ <https://alittlebityummy.com/>`_\n- `https://allrecipes.com/ <https://allrecipes.com/>`_\n- `https://allthehealthythings.com/ <https://allthehealthythings.com/>`_\n- `https://alltommat.se/ <https://alltommat.se/>`_\n- `https://altonbrown.com/ <https://altonbrown.com/>`_\n- `https://amazingribs.com/ <https://amazingribs.com/>`_\n- `https://ambitiouskitchen.com/ <https://ambitiouskitchen.com>`_\n- `https://ameessavorydish.com/ <https://ameessavorydish.com/>`_\n- `https://americastestkitchen.com/ <https://www.americastestkitchen.com>`_ (*)\n- `https://archanaskitchen.com/ <https://archanaskitchen.com/>`_\n- `https://www.argiro.gr/ <https://www.argiro.gr/>`_\n- `https://www.arla.se/ <https://www.arla.se/>`_\n- `https://www.atelierdeschefs.fr/ <https://www.atelierdeschefs.fr/>`_\n- `https://averiecooks.com/ <https://www.averiecooks.com/>`_\n- `https://www.bakels.com.au/ <https://www.bakels.com.au/>`_\n - `.co.uk <https://bakels.co.uk/>`_\n- `https://baking-sense.com/ <https://baking-sense.com/>`_\n- `https://bakingmischief.com/ <https://bakingmischief.com/>`_\n- `https://barefeetinthekitchen.com/ <https://barefeetinthekitchen.com/>`_\n- `https://barefootcontessa.com/ <https://barefootcontessa.com>`_\n- `https://barefootinthepines.com/ <https://barefootinthepines.com/>`_\n- `https://bbc.com/ <https://bbc.com/food/recipes>`_\n - `.co.uk <https://bbc.co.uk/food/recipes>`__\n- `https://bbcgoodfood.com/ <https://bbcgoodfood.com>`_\n- `https://bestrecipes.com.au/ <https://bestrecipes.com.au>`_\n- `https://betterfoodguru.com/ <https://betterfoodguru.com/>`_\n- `https://bettybossi.ch/ <https://bettybossi.ch>`_\n- `https://bettycrocker.com/ <https://bettycrocker.com>`_\n- `https://beyondfrosting.com/ <https://beyondfrosting.com/>`_\n- `https://biancazapatka.com/ <https://biancazapatka.com>`_\n- `https://bigoven.com/ <https://bigoven.com>`_\n- `https://bitsofcarey.com/ <https://bitsofcarey.com/>`_\n- `https://blueapron.com/ <https://blueapron.com>`_\n- `https://bluejeanchef.com/ <https://bluejeanchef.com/>`_\n- `https://www.bodybuilding.com/ <https://www.bodybuilding.com/>`_\n- `https://bonappetit.com/ <https://bonappetit.com>`_\n- `https://bongeats.com/ <https://bongeats.com/>`_\n- `https://books.ottolenghi.co.uk <https://books.ottolenghi.co.uk/>`_ (*)\n- `https://bowlofdelicious.com/ <https://bowlofdelicious.com/>`_\n- `https://breadtopia.com/ <https://breadtopia.com/>`_\n- `https://briceletbaklava.ch/ <https://briceletbaklava.ch/>`_\n- `https://brokenovenbaking.com/ <https://brokenovenbaking.com/>`_\n- `https://budgetbytes.com/ <https://budgetbytes.com>`_\n- `https://cafedelites.com/ <https://cafedelites.com/>`_\n- `https://cakemehometonight.com/ <https://cakemehometonight.com/>`_\n- `https://cambreabakes.com/ <https://cambreabakes.com/>`_\n- `https://carlsbadcravings.com/ <https://carlsbadcravings.com/>`_\n- `https://castironketo.net/ <https://castironketo.net/>`_\n- `https://cdkitchen.com/ <https://cdkitchen.com/>`_\n- `https://celebratingsweets.com/ <https://celebratingsweets.com/>`_\n- `https://chefjeanpierre.com/ <https://chefjeanpierre.com/>`_\n- `https://chefkoch.de/ <https://chefkoch.de>`_\n- `https://www.chefnini.com/ <https://www.chefnini.com/>`_\n- `https://chefsavvy.com/ <https://chefsavvy.com/>`_\n- `https://claudia.abril.com.br/ <https://claudia.abril.com.br>`_\n- `https://closetcooking.com/ <https://closetcooking.com>`_\n- `https://colleenchristensennutrition.com/ <https://colleenchristensennutrition.com/>`_\n- `https://comidinhasdochef.com/ <https://comidinhasdochef.com/>`_\n- `https://cook-talk.com/ <https://cook-talk.com/>`_\n- `https://cookeatshare.com/ <https://cookeatshare.com/>`_\n- `https://cookieandkate.com/ <https://cookieandkate.com/>`_\n- `https://cookiesandcups.com/ <https://cookiesandcups.com/>`_\n- `https://cooking.nytimes.com/ <https://cooking.nytimes.com>`_\n- `https://cookingcircle.com/ <https://cookingcircle.com/>`_\n- `https://cookinglight.com/ <https://cookinglight.com/>`_\n- `https://cookomix.com/ <https://cookomix.com/>`_\n- `https://cookpad.com/ <https://cookpad.com/>`_\n- `https://cookscountry.com/ <https://www.cookscountry.com>`_ (*)\n- `https://cooksillustrated.com/ <https://www.cooksillustrated.com>`_ (*)\n- `https://cookwell.com/ <https://cookwell.com/>`_\n- `https://copykat.com/ <https://copykat.com>`_\n- `https://www.costco.com/ <https://www.costco.com>`_\n- `https://countryliving.com/ <https://countryliving.com>`_\n- `https://creativecanning.com/ <https://creativecanning.com>`_\n- `https://cucchiaio.it/ <https://cucchiaio.it>`_\n- `https://cuisineaz.com/ <https://cuisineaz.com>`_\n- `https://cybercook.com.br/ <https://cybercook.com.br/>`_\n- `https://damndelicious.net/ <https://damndelicious.net/>`_\n- `https://www.davidlebovitz.com/ <https://www.davidlebovitz.com/>`_\n- `https://delish.com/ <https://delish.com>`_\n- `https://dinneratthezoo.com/ <https://dinneratthezoo.com>`_\n- `https://dinnerthendessert.com/ <https://dinnerthendessert.com/>`_\n- `https://dish.co.nz/ <https://dish.co.nz>`_\n- `https://dobruchut.aktuality.sk/ <https://dobruchut.aktuality.sk>`_\n- `https://domesticate-me.com/ <https://domesticate-me.com/>`_\n- `https://donalskehan.com/ <https://donalskehan.com/>`_\n- `https://downshiftology.com/ <https://downshiftology.com/>`_\n- `https://www.dr.dk/ <https://www.dr.dk/>`_\n- `https://www.eatingbirdfood.com/ <https://www.eatingbirdfood.com>`_\n- `https://www.eatingwell.com/ <https://www.eatingwell.com>`_\n- `https://www.eatliverun.com/ <https://www.eatliverun.com/>`_\n- `https://eatsmarter.com/ <https://eatsmarter.com/>`_\n - `.de <https://eatsmarter.de/>`__\n- `https://eatthismuch.com/ <https://eatthismuch.com/>`_\n- `https://eattolerant.de/ <https://eattolerant.de/>`_\n- `https://www.eatwell101.com <https://www.eatwell101.com>`_\n- `https://eatwhattonight.com/ <https://eatwhattonight.com/>`_\n- `https://eggs.ca/ <https://eggs.ca/>`_\n- `https://elavegan.com/ <https://elavegan.com/>`_\n- `https://emmikochteinfach.de/ <https://emmikochteinfach.de/>`_\n- `https://en.wikibooks.org/ <https://en.wikibooks.org>`_\n- `https://epicurious.com/ <https://epicurious.com>`_\n- `https://www.errenskitchen.com/ <https://www.errenskitchen.com/>`_\n- `https://ethanchlebowski.com/ <https://ethanchlebowski.com>`_\n- `https://www.evolvingtable.com/ <https://www.evolvingtable.com/>`_\n- `https://www.familyfoodonthetable.com/ <https://www.familyfoodonthetable.com/>`_\n- `https://www.farmhouseonboone.com/ <https://www.farmhouseonboone.com/>`_\n- `https://www.fattoincasadabenedetta.it/ <https://www.fattoincasadabenedetta.it/>`_\n- `https://felix.kitchen <https://felix.kitchen>`_\n- `https://fifteenspatulas.com/ <https://www.fifteenspatulas.com/>`_\n- `https://finedininglovers.com/ <https://www.finedininglovers.com>`_\n- `https://fitmencook.com/ <https://www.fitmencook.com>`_\n- `https://fitslowcookerqueen.com <https://fitslowcookerqueen.com/>`_\n- `https://food.com/ <https://www.food.com>`_\n- `https://food52.com/ <https://www.food52.com>`_\n- `https://foodandwine.com/ <https://www.foodandwine.com>`_\n- `https://foodfidelity.com/ <https://foodfidelity.com>`_\n- `https://foodnetwork.co.uk/ <https://www.foodnetwork.co.uk>`_\n - `.com <https://www.foodnetwork.com>`__\n- `https://foodrepublic.com/ <https://foodrepublic.com>`_\n- `https://www.forksoverknives.com/ <https://www.forksoverknives.com/>`_\n- `https://forktospoon.com/ <https://forktospoon.com/>`_\n- `https://franzoesischkochen.de/ <https://franzoesischkochen.de/>`_\n- `https://www.gesund-aktiv.com/ <https://www.gesund-aktiv.com>`_\n- `https://gimmesomeoven.com/ <https://www.gimmesomeoven.com/>`_\n- `https://glutenfreeonashoestring.com/ <https://glutenfreeonashoestring.com/>`_\n- `https://godt.no/ <https://godt.no/>`_\n- `https://gonnawantseconds.com/ <https://gonnawantseconds.com>`_\n- `https://goodfooddiscoveries.com/ <https://goodfooddiscoveries.com/>`_\n- `https://goodhousekeeping.com/ <https://www.goodhousekeeping.com/>`_\n- `https://gourmettraveller.com.au/ <https://gourmettraveller.com.au>`_\n- `https://www.grandfrais.com/ <https://www.grandfrais.com>`_\n- `https://greatbritishchefs.com/ <https://greatbritishchefs.com>`_\n- `https://grimgrains.com/ <https://grimgrains.com>`_\n- `http://www.grouprecipes.com/ <http://www.grouprecipes.com/>`_\n- `https://halfbakedharvest.com/ <https://www.halfbakedharvest.com/>`_\n- `https://handletheheat.com/ <https://handletheheat.com/>`_\n- `https://www.hassanchef.com/ <https://www.hassanchef.com/>`_\n- `https://headbangerskitchen.com/ <https://www.headbangerskitchen.com/>`_\n- `https://healthyeating.nhlbi.nih.gov/ <https://healthyeating.nhlbi.nih.gov>`_\n- `https://heatherchristo.com/ <https://heatherchristo.com/>`_\n- `https://www.heb.com/ <https://www.heb.com/recipe/landing>`_\n- `https://hellofresh.com/ <https://hellofresh.com>`_\n - `.at <https://www.hellofresh.at/>`__, `.be <https://www.hellofresh.be/>`__, `.ca <https://www.hellofresh.ca/>`__, `.ch <https://www.hellofresh.ch/>`__, `.co.nz <https://www.hellofresh.co.nz/>`__, `.co.uk <https://hellofresh.co.uk>`__, `.com.au <https://www.hellofresh.com.au/>`__, `.de <https://www.hellofresh.de/>`__, `.dk <https://www.hellofresh.dk/>`__, `.es <https://www.hellofresh.es/>`__, `.fr <https://www.hellofresh.fr/>`__, `.ie <https://www.hellofresh.ie/>`__, `.it <https://www.hellofresh.it/>`__, `.lu <https://www.hellofresh.lu/>`__, `.nl <https://www.hellofresh.nl/>`__, `.no <https://www.hellofresh.no/>`__, `.se <https://www.hellofresh.se/>`__\n- `https://www.hersheyland.com/ <https://www.hersheyland.com/>`_\n- `https://hofer.at/ <https://hofer.at/>`_\n - `.si <https://hofer.si/>`__\n- `https://www.homechef.com/ <https://www.homechef.com/>`_\n- `https://hostthetoast.com/ <https://hostthetoast.com/>`_\n- `https://hungryhappens.net/ <https://hungryhappens.net/>`_\n- `https://www.ica.se/ <https://www.ica.se/>`_\n- `https://www.im-worthy.com/ <https://www.im-worthy.com>`_\n- `https://inbloombakery.com/ <https://inbloombakery.com/>`_\n- `https://indianhealthyrecipes.com <https://www.indianhealthyrecipes.com>`_\n- `https://ingoodflavor.com <https://www.ingoodflavor.com>`_\n- `https://www.innit.com/ <https://www.innit.com/>`_\n- `https://insanelygoodrecipes.com <https://insanelygoodrecipes.com/>`_\n- `https://inspiralized.com/ <https://inspiralized.com>`_\n- `https://inspiredtaste.net/ <https://inspiredtaste.net/>`_\n- `https://irishcentral.com/ <https://irishcentral.com>`_\n- `https://izzycooking.com/ <https://izzycooking.com/>`_\n- `https://jamieoliver.com/ <https://jamieoliver.com>`_\n- `https://jimcooksfoodgood.com/ <https://jimcooksfoodgood.com/>`_\n- `https://www.jocooks.com/ <https://www.jocooks.com>`_\n- `https://joshuaweissman.com/ <https://joshuaweissman.com/>`_\n- `https://joyfoodsunshine.com/ <https://joyfoodsunshine.com>`_\n- `https://joythebaker.com/ <https://joythebaker.com>`_\n- `https://juliegoodwin.com.au/ <https://juliegoodwin.com.au>`_\n- `https://justataste.com/ <https://justataste.com>`_\n- `https://justbento.com/ <https://justbento.com>`_\n- `https://www.justonecookbook.com/ <https://www.justonecookbook.com>`_\n- `https://kalejunkie.com/ <https://kalejunkie.com/>`_\n- `https://kennymcgovern.com/ <https://kennymcgovern.com>`_\n- `https://keukenliefde.nl/ <https://keukenliefde.nl>`_\n- `https://www.kingarthurbaking.com <https://www.kingarthurbaking.com>`_\n- `https://kitchenaid.com.au/ <https://kitchenaid.com.au/blogs/kitchenthusiast/tagged/blog-category-recipes>`_\n- `https://kitchendivas.com <https://kitchendivas.com>`_\n- `https://www.kitchendreaming.com <https://www.kitchendreaming.com>`_\n- `https://www.kitchensanctuary.com/ <https://www.kitchensanctuary.com>`_\n- `https://www.kitchenstories.com/ <https://www.kitchenstories.com>`_\n- `https://kochbar.de/ <https://kochbar.de>`_\n- `https://kochbucher.com/ <https://kochbucher.com/>`_\n- `http://koket.se/ <http://koket.se>`_\n- `https://kristineskitchenblog.com/ <https://kristineskitchenblog.com>`_\n- `https://krollskorner.com/ <https://krollskorner.com/>`_\n- `https://kuchnia-domowa.pl/ <https://www.kuchnia-domowa.pl/>`_\n- `https://kuchynalidla.sk/ <https://www.kuchynalidla.sk/>`_\n- `https://www.kwestiasmaku.com/ <https://www.kwestiasmaku.com/>`_\n- `https://lanascooking.com/ <https://lanascooking.com/>`_\n- `https://www.latelierderoxane.com <https://www.latelierderoxane.com/blog/recettes/>`_\n- `https://leanandgreenrecipes.net <https://leanandgreenrecipes.net>`_\n- `https://www.lecker.de <https://www.lecker.de/rezepte>`_\n- `https://lecremedelacrumb.com/ <https://lecremedelacrumb.com/>`_\n- `https://leitesculinaria.com <https://leitesculinaria.com>`_\n- `https://lekkerensimpel.com <https://lekkerensimpel.com>`_\n- `https://leukerecepten.nl/ <https://www.leukerecepten.nl>`_\n- `https://lifestyleofafoodie.com <https://lifestyleofafoodie.com>`_\n- `https://littlespicejar.com/ <https://littlespicejar.com>`_\n- `https://littlesunnykitchen.com/ <https://littlesunnykitchen.com>`_\n- `http://livelytable.com/ <http://livelytable.com/>`_\n- `https://lovingitvegan.com/ <https://lovingitvegan.com/>`_\n- `https://www.maangchi.com <https://www.maangchi.com>`_\n- `https://www.madamecuisine.de <https://www.madamecuisine.de>`_\n- `https://madensverden.dk/ <https://madensverden.dk/>`_\n- `https://madsvin.com/ <https://madsvin.com/>`_\n- `https://makeitdairyfree.com/ <https://makeitdairyfree.com/>`_\n- `https://marmiton.org/ <https://marmiton.org/>`_\n- `https://www.marthastewart.com/ <https://www.marthastewart.com/>`_\n- `https://matprat.no/ <https://matprat.no/>`_\n- `https://www.mccormick.com/ <https://www.mccormick.com/>`_\n- `https://meganvskitchen.com/ <https://meganvskitchen.com/>`_\n- `https://meljoulwan.com/ <https://meljoulwan.com/>`_\n- `https://www.melskitchencafe.com/ <https://www.melskitchencafe.com/>`_\n- `https://www.miljuschka.nl/ <https://www.miljuschka.nl/>`_\n- `http://mindmegette.hu/ <http://mindmegette.hu/>`_\n- `https://minimalistbaker.com/ <https://minimalistbaker.com/>`_\n- `https://ministryofcurry.com/ <https://ministryofcurry.com/>`_\n- `https://misya.info/ <https://misya.info>`_\n- `https://www.mob.co.uk/ <https://www.mob.co.uk/>`_\n- `https://mobkitchen.co.uk/ <https://mobkitchen.co.uk/>`_\n- `https://www.modernhoney.com/ <https://www.modernhoney.com/>`_\n- `https://www.momontimeout.com/ <https://www.momontimeout.com/>`_\n- `https://momswithcrockpots.com/ <https://momswithcrockpots.com>`_\n- `http://motherthyme.com/ <http://motherthyme.com/>`_\n- `https://www.moulinex.fr/ <https://www.moulinex.fr/>`_\n- `https://www.mundodereceitasbimby.com.pt/ <https://www.mundodereceitasbimby.com.pt/>`_\n- `https://mybakingaddiction.com/ <https://mybakingaddiction.com>`_\n- `https://myjewishlearning.com/ <https://myjewishlearning.com>`_\n- `https://mykitchen101.com/ <https://mykitchen101.com>`_\n- `https://mykitchen101en.com/ <https://mykitchen101en.com>`_\n- `https://mykoreankitchen.com/ <https://mykoreankitchen.com>`_\n- `https://www.myplate.gov/ <https://www.myplate.gov/>`_\n- `https://myrecipes.com/ <https://myrecipes.com>`_\n- `https://myvegetarianroots.com/ <https://myvegetarianroots.com/>`_\n- `https://www.nhs.uk/healthier-families/ <https://www.nhs.uk/healthier-families/>`_\n- `https://nibbledish.com/ <https://nibbledish.com>`_\n- `https://noracooks.com/ <https://noracooks.com/>`_\n- `https://norecipes.com/ <https://norecipes.com/>`_\n- `https://nosalty.hu/ <https://nosalty.hu/>`_\n- `https://www.notenoughcinnamon.com/ <https://www.notenoughcinnamon.com/>`_\n- `https://nourishedbynutrition.com/ <https://nourishedbynutrition.com/>`_\n- `https://www.nrk.no/ <https://www.nrk.no/>`_\n- `https://www.number-2-pencil.com/ <https://www.number-2-pencil.com/>`_\n- `https://nutritionbynathalie.com/blog <https://nutritionbynathalie.com/blog>`_\n- `https://nutritionfacts.org/ <https://nutritionfacts.org/>`_\n- `https://ohsheglows.com/ <https://ohsheglows.com>`_\n- `https://omnivorescookbook.com <https://omnivorescookbook.com>`_\n- `https://www.onceuponachef.com <https://www.onceuponachef.com>`_\n- `https://onesweetappetite.com/ <https://onesweetappetite.com>`_\n- `https://owen-han.com/ <https://owen-han.com>`_\n- `https://www.paleorunningmomma.com/ <https://www.paleorunningmomma.com>`_\n- `https://www.panelinha.com.br/ <https://www.panelinha.com.br>`_\n- `https://paninihappy.com/ <https://paninihappy.com>`_\n- `https://www.peelwithzeal.com/ <https://www.peelwithzeal.com/>`_\n- `https://www.persnicketyplates.com/ <https://www.persnicketyplates.com/>`_\n- `https://www.pickuplimes.com/ <https://www.pickuplimes.com/>`_\n- `https://pinchofyum.com/ <https://pinchofyum.com/>`_\n- `https://www.pingodoce.pt/ <https://www.pingodoce.pt>`_\n- `https://pinkowlkitchen.com/ <https://pinkowlkitchen.com/>`_\n- `https://www.platingpixels.com/ <https://www.platingpixels.com/>`_\n- `https://plowingthroughlife.com/ <https://plowingthroughlife.com/>`_\n- `https://popsugar.com/ <https://popsugar.com>`_\n- `https://potatorolls.com/ <https://potatorolls.com/>`_\n- `https://practicalselfreliance.com/ <https://practicalselfreliance.com>`_\n- `https://pressureluckcooking.com/ <https://pressureluckcooking.com/>`_\n- `https://www.primaledgehealth.com/ <https://www.primaledgehealth.com/>`_\n- `https://www.projectgezond.nl/ <https://www.projectgezond.nl/>`_\n- `https://przepisy.pl/ <https://przepisy.pl>`_\n- `https://purelypope.com/ <https://purelypope.com>`_\n- `https://purplecarrot.com/ <https://purplecarrot.com>`_\n- `https://quitoque.fr/ <https://quitoque.fr>`_\n- `https://rachlmansfield.com/ <https://rachlmansfield.com>`_\n- `https://rainbowplantlife.com/ <https://rainbowplantlife.com/>`_\n- `https://realfood.tesco.com/ <https://realfood.tesco.com>`_\n- `https://realsimple.com/ <https://www.realsimple.com>`_\n- `https://receitas.globo.com/ <https://www.receitas.globo.com/>`_\n- `https://receitas.ig.com.br/ <https://receitas.ig.com.br>`_\n- `https://www.receitasnestle.com.br <https://www.receitasnestle.com.br>`_\n- `https://recept.se/ <https://recept.se/>`_\n- `https://receptyprevas.sk/ <https://receptyprevas.sk/>`_\n- `https://recette.plus/ <https://recette.plus/>`_\n- `https://www.recipegirl.com/ <https://www.recipegirl.com/>`_\n- `https://recipeland.com/ <https://recipeland.com/>`_\n- `https://reciperunner.com/ <https://www.reciperunner.com>`_\n- `https://recipes.farmhousedelivery.com/ <https://recipes.farmhousedelivery.com/>`_\n- `https://recipes.timesofindia.com/ <https://recipes.timesofindia.com/>`_\n- `https://recipetineats.com/ <https://www.recipetineats.com/>`_\n- `https://redhousespice.com/ <https://redhousespice.com/>`_\n- `https://reishunger.de/ <https://www.reishunger.de/>`_\n- `https://rewe.de/ <https://www.rewe.de>`_\n- `https://rezeptwelt.de/ <https://rezeptwelt.de>`_\n- `https://ricetta.it/ <https://ricetta.it>`_\n- `https://ricette.giallozafferano.it/ <https://ricette.giallozafferano.it>`_\n- `https://www.ricetteperbimby.it/ <https://www.ricetteperbimby.it/>`_\n- `https://rosannapansino.com <https://rosannapansino.com>`_\n- `https://rutgerbakt.nl/ <https://rutgerbakt.nl/>`_\n- `https://www.saboresajinomoto.com.br/ <https://www.saboresajinomoto.com.br/>`_\n- `https://sallys-blog.de <https://sallys-blog.de/>`_\n- `https://sallysbakingaddiction.com <https://sallysbakingaddiction.com/>`_\n- `https://saltpepperskillet.com/ <https://saltpepperskillet.com/>`_\n- `https://sandwichtribunal.com/ <https://sandwichtribunal.com/>`_\n- `https://www.saveur.com/ <https://www.saveur.com/>`_\n- `https://www.savorynothings.com/ <https://www.savorynothings.com/>`_\n- `https://schoolofwok.co.uk/ <https://schoolofwok.co.uk/>`_\n- `https://seriouseats.com/ <https://seriouseats.com>`_\n- `https://shelikesfood.com/ <https://shelikesfood.com/>`_\n- `https://simple-veganista.com/ <https://simple-veganista.com/>`_\n- `https://simply-cookit.com/ <https://simply-cookit.com>`_\n- `https://simplyquinoa.com/ <https://simplyquinoa.com>`_\n- `https://simplyrecipes.com/ <https://simplyrecipes.com>`_\n- `https://simplywhisked.com/ <https://simplywhisked.com>`_\n- `https://skinnytaste.com/ <https://www.skinnytaste.com>`_\n- `https://smulweb.nl/ <https://smulweb.nl>`_\n- `https://sobors.hu/ <https://sobors.hu>`_\n- `https://www.southerncastiron.com/ <https://www.southerncastiron.com>`_\n- `https://southernliving.com/ <https://southernliving.com/>`_\n- `https://spainonafork.com/ <https://spainonafork.com/>`_\n- `https://spendwithpennies.com/ <https://spendwithpennies.com/>`_\n- `https://www.springlane.de <https://www.springlane.de>`_\n- `https://www.staysnatched.com/ <https://www.staysnatched.com/>`_\n- `https://steamykitchen.com/ <https://steamykitchen.com>`_\n- `https://streetkitchen.hu/ <https://streetkitchen.hu>`_\n- `https://www.strongrfastr.com <https://www.strongrfastr.com>`_\n- `https://sunbasket.com/ <https://sunbasket.com>`_\n- `https://sundpaabudget.dk/ <https://sundpaabudget.dk>`_\n- `https://www.sunset.com/ <https://www.sunset.com/>`_\n- `https://sweetcsdesigns.com/ <https://www.sweetcsdesigns.com/>`_\n- `https://sweetpeasandsaffron.com/ <https://sweetpeasandsaffron.com/>`_\n- `https://www.taste.com.au/ <https://www.taste.com.au/>`_\n- `https://www.tasteatlas.com/ <https://www.tasteatlas.com/>`_\n- `https://tasteofhome.com <https://tasteofhome.com>`_\n- `https://tastesbetterfromscratch.com <https://tastesbetterfromscratch.com>`_\n- `https://tastesoflizzyt.com <https://tastesoflizzyt.com>`_\n- `https://tasty.co <https://tasty.co>`_\n- `https://tastykitchen.com/ <https://tastykitchen.com>`_\n- `https://theclevercarrot.com/ <https://theclevercarrot.com>`_\n- `https://www.thecookierookie.com/ <https://www.thecookierookie.com/>`_\n- `https://thecookingguy.com/ <https://thecookingguy.com>`_\n- `https://thefoodietakesflight.com/ <https://thefoodietakesflight.com/>`_\n- `https://theglutenfreeaustrian.com/ <https://theglutenfreeaustrian.com/>`_\n- `https://thehappyfoodie.co.uk/ <https://thehappyfoodie.co.uk>`_\n- `https://thekitchencommunity.org/ <https://thekitchencommunity.org/>`_\n- `https://www.thekitchenmagpie.com/ <https://www.thekitchenmagpie.com>`_\n- `https://thekitchn.com/ <https://thekitchn.com/>`_\n- `https://theloopywhisk.com/ <https://theloopywhisk.com/>`_\n- `https://www.themagicalslowcooker.com/ <https://www.themagicalslowcooker.com/>`_\n- `https://themediterraneandish.com/ <https://themediterraneandish.com/>`_\n- `https://themodernproper.com/ <https://themodernproper.com/>`_\n- `https://www.thepalatablelife.com <https://www.thepalatablelife.com/>`_\n- `https://thepioneerwoman.com/ <https://thepioneerwoman.com>`_\n- `https://therecipecritic.com/ <https://therecipecritic.com>`_\n- `https://thesaltymarshmallow.com/ <https://thesaltymarshmallow.com/>`_\n- `https://thespruceeats.com/ <https://thespruceeats.com/>`_\n- `https://thevintagemixer.com/ <https://thevintagemixer.com>`_\n- `https://thewoksoflife.com/ <https://thewoksoflife.com/>`_\n- `https://thinlicious.com/ <https://thinlicious.com/>`_\n- `https://tidymom.net <https://tidymom.net>`_\n- `https://tine.no/ <https://tine.no>`_\n- `https://tofoo.co.uk <https://tofoo.co.uk>`_\n- `https://tudogostoso.com.br/ <https://www.tudogostoso.com.br/>`_\n- `https://twopeasandtheirpod.com/ <http://twopeasandtheirpod.com>`_\n- `https://uitpaulineskeuken.nl/ <https://uitpaulineskeuken.nl>`_\n- `https://unsophisticook.com/ <https://unsophisticook.com/>`_\n- `https://usapears.org/ <https://usapears.org>`_\n- `https://www.valdemarsro.dk/ <https://www.valdemarsro.dk/>`_\n- `https://vanillaandbean.com/ <https://vanillaandbean.com>`_\n- `https://varecha.pravda.sk/ <https://varecha.pravda.sk>`_\n- `https://www.vegetarbloggen.no/ <https://www.vegetarbloggen.no/>`_\n- `https://vegolosi.it/ <https://vegolosi.it>`_\n- `https://vegrecipesofindia.com/ <https://www.vegrecipesofindia.com/>`_\n- `https://veroniquecloutier.com <https://veroniquecloutier.com>`_\n- `https://www.waitrose.com/ <https://www.waitrose.com/>`_\n- `https://watchwhatueat.com/ <https://watchwhatueat.com/>`_\n- `https://wearenotmartha.com/ <https://wearenotmartha.com/>`_\n- `https://wedishitup.com/ <https://wedishitup.com/>`_\n- `https://www.weightwatchers.com/ <https://www.weightwatchers.com/>`_ (*)\n- `https://www.wellplated.com/ <https://www.wellplated.com/>`_\n- `https://whatsgabycooking.com/ <https://whatsgabycooking.com>`_\n- `https://whole30.com/ <https://whole30.com/>`_\n- `https://www.wholefoodsmarket.com/ <https://www.wholefoodsmarket.com/>`_\n - `.co.uk <https://www.wholefoodsmarket.co.uk/>`__\n- `https://www.williams-sonoma.com/ <https://www.williams-sonoma.com/>`_\n- `https://womensweeklyfood.com.au/ <https://womensweeklyfood.com.au/>`_\n- `https://woop.co.nz/ <https://woop.co.nz/>`_\n- `https://yemek.com/ <https://yemek.com>`_\n- `https://yummly.com/ <https://yummly.com>`_ (*)\n- `https://www.zaubertopf.de <https://www.zaubertopf.de>`_\n- `https://zeit.de/ (wochenmarkt) <https://www.zeit.de/zeit-magazin/wochenmarkt/index>`_\n- `https://zenbelly.com/ <https://zenbelly.com>`_\n\n(*) offline saved files only\n\n\nContribute\n----------\n\nIf you spot a design change (or something else) that makes the scraper unable to work for a given site - please fire an issue asap.\n\nIf you are programmer PRs with fixes are warmly welcomed and acknowledged with a virtual beer. You can find documentation on how to develop scrapers `here <https://github.com/hhursev/recipe-scrapers/blob/main/docs/README.md>`__.\n\n\nIf you want a scraper for a new site added\n------------------------------------------\n\n- Open an `Issue <https://github.com/hhursev/recipe-scraper/issues/new>`_ providing us the site name, as well as a recipe link from it.\n- You are a developer and want to code the scraper on your own:\n\n - If `Schema is available <#faq>`_ on the site - `you can go like this. <https://github.com/hhursev/recipe-scrapers/pull/176>`_\n - Otherwise, scrape the HTML - `like this <https://github.com/hhursev/recipe-scrapers/commit/ffee963d04>`_\n - Generating a new scraper class:\n\n .. code:: shell\n\n python generate.py <ClassName> <URL>\n\n - **ClassName**: The name of the new scraper class.\n - **URL**: The URL of an example recipe from the target site. The content will be stored in ``test_data`` to be used with the test class.\n\n You can find a more detailed guide `here <https://github.com/hhursev/recipe-scrapers/blob/main/docs/how-to-develop-scraper.md>`__.\n\n\nFor Devs / Contribute\n---------------------\n\nAssuming you have ``>=python3.9`` installed, navigate to the directory where you want this project to live in and drop these lines\n\n.. code:: shell\n\n git clone git@github.com:hhursev/recipe-scrapers.git &&\n cd recipe-scrapers &&\n python -m venv .venv &&\n source .venv/bin/activate &&\n python -m pip install --upgrade pip &&\n pip install -e \".[dev]\" &&\n pip install pre-commit &&\n pre-commit install &&\n python -m unittest\n\nIn case you want to run a single unittest for a newly developed scraper\n\n.. code:: shell\n\n python -m unittest -k <test_file_name>\n\n\nFAQ\n---\n**What if the recipe site I want to extract information from is not listed above?**\n\nYou can give it a try with the ``wild_mode`` option!\n\nIf there is Schema/Recipe available it will work just fine.\n\n.. code:: python\n\n url = 'https://www.feastingathome.com/tomato-risotto/'\n name = input('What is your name, risotto sampler?\\n')\n html = requests.get(url, headers={\"User-Agent\": f\"Risotto Sampler {name}\"}).content\n scraper = scrape_html(html, org_url=url, wild_mode=True)\n\n scraper.host()\n scraper.title()\n scraper.total_time()\n scraper.image()\n scraper.ingredients()\n scraper.ingredient_groups()\n scraper.instructions()\n scraper.instructions_list()\n scraper.yields()\n scraper.to_json()\n scraper.links()\n scraper.nutrients() # not always available\n scraper.canonical_url() # not always available\n scraper.equipment() # not always available\n scraper.cooking_method() # not always available\n scraper.keywords() # not always available\n scraper.dietary_restrictions() # not always available\n\nNotes:\n\n- ``scraper.links()`` returns a list of dictionaries containing all of the <a> tag attributes. The attribute names are the dictionary keys.\n\n\n**How do I know if a website has a Recipe Schema?**\n\nRun in python shell:\n\n.. code:: python\n\n # first ensure you have the required packages:\n # pip install \"recipe-scrapers[online]\"\n\n from recipe_scrapers import scrape_html\n scraper = scrape_html(html=None, org_url='<url of a recipe from the site>', online=True, wild_mode=True)\n # if no error is raised - there's schema available:\n scraper.title()\n scraper.instructions() # etc.\n\n\nSpecial thanks to:\n------------------\n\nAll the `contributors that helped improving <https://github.com/hhursev/recipe-scrapers/graphs/contributors>`_ the package. You are awesome!\n\n.. image:: https://contrib.rocks/image?repo=hhursev/recipe-scrapers\n :target: https://github.com/hhursev/recipe-scrapers/graphs/contributors\n\n\nTest Data Notice\n----------------\n\nAll content in ``tests/test_data/`` is used for limited, non-commercial testing purposes and belongs to their respective copyright holders. See the ``tests/test_data/LICENSE.md`` for details. If you're a copyright holder with concerns, you can open an issue or contact us privately via the email in our PyPI page.\n\n\nExtra:\n------\n| You want to gather recipes data?\n| You have an idea you want to implement?\n| Check out `our \"Share a project\" wall <https://github.com/hhursev/recipe-scrapers/issues/9>`_ - it may save you time and spark ideas!\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Python package, scraping recipes from all over the internet",
"version": "15.3.3",
"project_urls": {
"Homepage": "https://github.com/hhursev/recipe-scrapers/"
},
"split_keywords": [
"python",
" recipes",
" scraper",
" harvest",
" recipe-scraper",
" recipe-scrapers"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "06b6b697e5d53ce7fccfc6b1d1c91871e7c21557603c3bf097c4386a9f9d54ec",
"md5": "317d334eaf2cf5e36389e3a3d8906c00",
"sha256": "e3092190ff81d79992bb3fd373c6d1ac7dff5d8be033d219ff6eb46bff8a37d3"
},
"downloads": -1,
"filename": "recipe_scrapers-15.3.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "317d334eaf2cf5e36389e3a3d8906c00",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 245992,
"upload_time": "2024-12-14T20:19:28",
"upload_time_iso_8601": "2024-12-14T20:19:28.236578Z",
"url": "https://files.pythonhosted.org/packages/06/b6/b697e5d53ce7fccfc6b1d1c91871e7c21557603c3bf097c4386a9f9d54ec/recipe_scrapers-15.3.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7479601153905952716d9f2a6433ee40bcff951120daf4952f36d8c66426579e",
"md5": "ab89c3b978c0aea8755bc2097e2646ff",
"sha256": "9bd41de3da0769eae6fa8a211a99db630fd283873eae6b518f51d27836c034f9"
},
"downloads": -1,
"filename": "recipe_scrapers-15.3.3.tar.gz",
"has_sig": false,
"md5_digest": "ab89c3b978c0aea8755bc2097e2646ff",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 132358,
"upload_time": "2024-12-14T20:19:32",
"upload_time_iso_8601": "2024-12-14T20:19:32.703456Z",
"url": "https://files.pythonhosted.org/packages/74/79/601153905952716d9f2a6433ee40bcff951120daf4952f36d8c66426579e/recipe_scrapers-15.3.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-14 20:19:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hhursev",
"github_project": "recipe-scrapers",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "recipe-scrapers"
}