Skip to main content
Github Version PyPI - Python Version Downloads GitHub Actions Unittests Coveralls License Codacy Badge

A simple web scraping tool for recipe sites.

pip install recipe-scrapers

then:

from recipe_scrapers import scrape_me

scraper = scrape_me('https://www.allrecipes.com/recipe/158968/spinach-and-feta-turkey-burgers/')

# Q: What if the recipe site I want to extract information from is not listed below?
# A: You can give it a try with the wild_mode option! If there is Schema/Recipe available it will work just fine.
scraper = scrape_me('https://www.feastingathome.com/tomato-risotto/', 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()  # if available

You also have an option to scrape html-like content

import requests
from recipe_scrapers import scrape_html

url = "https://www.allrecipes.com/recipe/158968/spinach-and-feta-turkey-burgers/"
html = requests.get(url).content

scraper = scrape_html(html=html, org_url=url)

scraper.title()
scraper.total_time()
# etc...

Notes:

  • scraper.links() returns a list of dictionaries containing all of the <a> tag attributes. The attribute names are the dictionary keys.

Scrapers available for:

(*) 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.

If you want a scraper for a new site added

  • Open an Issue 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 on the site - you can go like this.

    • Otherwise, scrape the HTML - like this

    • Generating a new scraper class:

      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.

For Devs / Contribute

Assuming you have >=python3.7 installed, navigate to the directory where you want this project to live in and drop these lines

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 -r requirements-dev.txt &&
pip install pre-commit &&
pre-commit install &&
python -m unittest

In case you want to run a single unittest for a newly developed scraper

python -m unittest tests.test_myscraper

FAQ

  • How do I know if a website has a Recipe Schema? Run in python shell:

from recipe_scrapers import scrape_me
scraper = scrape_me('<url of a recipe from the site>', wild_mode=True)
# if no error is raised - there's schema available:
scraper.title()
scraper.instructions()  # etc.

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 that may be helpful to automatically follow common instructions specified by websites for web crawlers.

Another parser option – particularly if you find that many web requests from urllib.robotparser are blocked – is the robotexclusionrulesparser library.

Special thanks to:

All the contributors that helped improving the package. You are awesome!

https://contrib.rocks/image?repo=hhursev/recipe-scrapers

Extra:

You want to gather recipes data?
You have an idea you want to implement?
Check out our “Share a project” wall - it may save you time and spark ideas!

Metadata

Release files for recipe-scrapers 14.48.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for recipe-scrapers 14.48.0
File Size Uploaded
recipe_scrapers-14.48.0.tar.gz 367.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for recipe-scrapers 14.48.0
File Interpreter ABI Platform
recipe_scrapers-14.48.0-py3-none-any.whl Python 3 none any Details

Total release size: 558.6 kB

Release files / recipe_scrapers-14.48.0.tar.gz

Download URL recipe_scrapers-14.48.0.tar.gz
Size 367.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4a2892e2766e0fda50bba58bf453366f3f2a6a7ceaeaf0113a768dcb54e96690
BLAKE2b-256 checksum
How to use checksums
26073b9b1cb2fdf4553c4f424fb18598cfc7f1c6fe455e87fbb8de8d367b667e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.5

Release files / recipe_scrapers-14.48.0-py3-none-any.whl

Download URL recipe_scrapers-14.48.0-py3-none-any.whl
Size 191.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5549b129009d32e40c92738a3a39dc8f4d7c9529b3202c9dcedfe6fb1922f9b0
BLAKE2b-256 checksum
How to use checksums
f1dfba5bafc5e660967eeaf35ee52b74ec13be1991904d7bc758e383961081fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.5

Release history Release notifications | RSS feed

15.5.1

2 release files

15.5.0

2 release files

15.4.0

2 release files

15.3.3

2 release files

15.1.0

2 release files

15.0.1

2 release files

15.0.0

2 release files

This release

14.48.0 This release

2 release files

14.9.0

2 release files

14.8.1

2 release files

14.8.0

2 release files

14.5.2

2 release files

14.5.1

2 release files

14.5.0

2 release files

14.4.0

2 release files

14.3.1

2 release files

14.2.0

2 release files

14.1.0

2 release files

14.0.0

2 release files

13.9.1

2 release files

13.9.0

2 release files

13.7.0

2 release files

13.6.0

2 release files

13.5.0

2 release files

13.4.0

2 release files

13.3.5

2 release files

13.3.4

2 release files

13.3.3

2 release files

13.3.2

2 release files

13.3.0

2 release files

13.2.8

2 release files

13.2.7

2 release files

13.2.6

2 release files

13.2.5

2 release files

13.2.4

2 release files

13.1.1

2 release files

13.0.1

2 release files

13.0.0

2 release files

12.2.2

2 release files

12.2.0

2 release files

12.0.5

2 release files

12.0.4

2 release files

12.0.3

2 release files

12.0.2

1 release file

12.0.1

1 release file

12.0.0

1 release file

11.0.0

1 release file

10.2.1

1 release file

10.1.1

1 release file

10.1.0

1 release file

10.0.8

1 release file

10.0.7

1 release file

10.0.5

1 release file

10.0.4

1 release file

10.0.3

1 release file

10.0.2

1 release file

10.0.1

1 release file

10.0.0

1 release file

9.2.6

1 release file

9.2.5

1 release file

9.2.4

1 release file

9.2.3

1 release file

9.2.2

1 release file

9.2.1

1 release file

9.1.1

1 release file

9.1.0

1 release file

9.0.3

1 release file

9.0.2

1 release file

9.0.1

1 release file

9.0.0

1 release file

8.2.2

1 release file

8.2.1

1 release file

8.2.0

1 release file

8.1.0

1 release file

8.0.1

1 release file

8.0.0

2 release files

7.2.0

1 release file

7.1.0

1 release file

7.0.0

1 release file

6.1.2

1 release file

6.1.1

1 release file

6.1.0

1 release file

6.0.7

1 release file

6.0.6

1 release file

6.0.5

1 release file

6.0.3

1 release file

6.0.2

1 release file

6.0.1

1 release file

6.0.0

1 release file

5.18.0

1 release file

5.17.0

1 release file

5.16.0

1 release file

5.15.0

1 release file

5.14.0

1 release file

5.8.1

1 release file

5.8.0

1 release file

5.7.0

1 release file

5.6.0

1 release file

5.5.0

1 release file

5.4.1

1 release file

5.3.1

1 release file

5.3.0

1 release file

5.2.1

1 release file

5.2.0

1 release file

5.1.0

2 release files

5.0.1

2 release files

5.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page