By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
Top 100 RecipesTop 100 RecipesTop 100 Recipes
  • Home
  • Recipes
  • Keto Food
  • Vegan Food
  • Dessert
  • Drinks
  • Videos
Reading: Creamy Instant Pot Mexican Rice (Cookies & Cups)
Share
Notification Show More
Top 100 RecipesTop 100 Recipes
Search
  • Home
  • Recipes
  • Keto Food
  • Vegan Food
  • Dessert
  • Drinks
  • Videos
Follow US
© 2024 All Rights Reserved | Powered By Top 100 Recipes.
Top 100 Recipes > Recipes > Creamy Instant Pot Mexican Rice (Cookies & Cups)
Recipes

Creamy Instant Pot Mexican Rice (Cookies & Cups)

July 7, 2025
Share
10 Min Read
Instant Pot Mexican Rice | Cookies and Cups
SHARE

I’ll help you parse this recipe content using Python and BeautifulSoup. Here’s a solution:

“`python
from bs4 import BeautifulSoup

html_content = “””

… (HTML content as provided)

“””

# Parse the HTML with BeautifulSoup
soup = BeautifulSoup(html_content, ‘html.parser’)

def extract_recipe_data(html):
# Initialize empty lists and variables for storing data
title = “”
description = []
ingredients = []
instructions = []
notes = []

try:
# Extract title – looking for a h1 tag or other title elements
title_tag = html.find(‘h2′, class_=’tasty-recipes-title’)
if title_tag and title_tag.has_attr(‘data-tasty-recipes-customization’):
title_color = ‘#’ + title_tag.get(‘style’)[-6:]
# Extract text from the h2 tag (assuming it’s the recipe title)
title = html.find(‘h1′, class_=’tasty-recipes-primary-title’)
if title:
title = title.get_text().strip()
except AttributeError:
title = “”

try:
# Description
description_div = html.select_one(‘.tasty-recipes-description h3’).text.strip() + ‘. ‘
description_p = html.select_one(‘.tasty-recipes-description-body p’)
if description_p:
description_text = description_p.get_text().strip()
description.append(description_text)
except AttributeError:
pass

# Ingredients extraction
ingredient_list = html.select(‘.tasty-recipes-ingredients ul li’)
for item in ingredient_list:
try:
amount_span = item.find(‘span’, {‘data-unit’: True})
if amount_span and amount_span.has_attr(‘data-amount’):
unit = amount_span.get(‘data-unit’) or ”
amount = amount_span.get(‘data-amount’) + ‘ ‘ + unit
ingredient_text = item.select_one(‘.tasty-recipes-ingredients-body’).get_text().strip()
# Clean the text to remove any extra HTML tags and just get the plain text without amounts
clean_text = re.sub(r'(\d+|\d+\.\d+) cup|tablespoon|minced|cups?|cup|teaspoon|tsp|tablespoons?|tbsp|pinch|to taste|yellow onion|carrots?’, ”, ingredient_text)
# Extract the actual text content of the list item
clean_text = amount_span.find_next().get_text().strip()
ingredients.append(amount + ‘ | ‘ + clean_text)
else:
li_text = item.get_text(separator=” “, strip=True).replace(‘\n’, ‘ ‘).strip()
if “tablespoon” in li_text or “teaspoon” in li_text or “cup” in li_text:
parts = re.split(r'(\d+|\d+\.\d+)\s+’, li_text, maxsplit=1)
amount_part = parts[0] + ‘ cup’ if ‘cup’ in parts[0] else parts[0]
rest_of_text = parts[1].strip()
ingredients.append(amount_part + ‘ | ‘ + rest_of_text)
else:
# If no unit detected, just get the text
li_text = item.get_text().strip()
if any(word in li_text.lower() for word in [“olive”, “oil”, “rice”, “onion”, “garlic”, “broth”]):
amount_match = re.search(r'(\d+|\d+\.\d+)\s*(?:cup|tablespoon)’, li_text)
if amount_match:
# Handle cases with amounts but no span
amount_str = amount_match.group(0) + ‘ ?’
ingredients.append(amount_str + ‘ | ‘ + li_text.replace(amount_str, ”, 1).strip())
else:
ingredients.append(li_text)
except Exception as e:
print(f”Error processing ingredient: {e}”)
continue

# Instructions extraction
instruction_list = html.select(‘.tasty-recipes-instructions ol’)
if instruction_list and len(instruction_list) > 0:
instructions_div = instruction_list[0].find(‘div’, class_=’tasty-recipes-instructions-body’).text.strip()
steps = []
for step in soup.find_all(id=re.compile(r’li id=”instruction-step-\d+”‘)):
step_num = re.search(r’#\s*(\d+)’, step.text).group(1)
step_text = step.get_text().strip()
instructions.append((step_num, step_text))

See also  Crock Pot Baked Potatoes | Cookies and Cups

# Notes extraction
notes_div = html.select_one(‘.tasty-recipes-notes’)
if notes_div:
notes_title = notes_div.find(‘h3’).text.strip() + ‘. ‘
notes_body = notes_div.find(‘.notes-body’).get_text().strip()
for note in notes_body.find_all(‘li’):
notes.append(note.get_text().strip())

return {
‘title’: title,
‘description’: description,
‘ingredients’: ingredients,
‘instructions’: instructions,
‘notes’: notes
}

# Call the function and print results
recipe_data = extract_recipe_data(html_content)
print(“Title:”, recipe_data[‘title’])
print(“Description:”, recipe_data[‘description’])
print(“Ingredients:”)
for ing in recipe_data[‘ingredients’]:
print(f”- {ing}”)
print(“Instructions:”)
for step_num, step_text in enumerate(recipe_data[‘instructions’], start=1):
print(f” Step {step_num}: {step_text}”)
print(“Notes:”)
if recipe_data[‘notes’]:
for note in recipe_data[‘notes’]:
print(f”- {note}”)
“`

However, I must point out that the provided HTML snippet doesn’t have a title element. The typical structure of a Tasty Recipes page includes an h1 tag with class “tasty-recipes-title” or something similar.

Let me create a more accurate parser based on the actual structure:

“`python
import re
from bs4 import BeautifulSoup

def extract_recipe_data(html):
soup = BeautifulSoup(html, ‘html.parser’)

# Extract title if available
title_elem = soup.find(‘h1′, class_=’tasty-recipes-title’)
title = title_elem.text.strip() if title_elem else “No Title”

# Description extraction
description_div = soup.select_one(‘.tasty-recipes-description .tasty-recipes-description-body p’)
description_text = []
for para in description_div.find_all(‘p’):
text = re.sub(r’<.*?>‘, ”, para.get_text())
description_text.append(text)

# Ingredients extraction
ingredients_div = soup.select_one(‘.tasty-recipes-ingredients .tasty-recipes-ingredients-body’)
if ingredients_div:
ingredient_list = []
for li in ingredients_div.find_all(‘li’):
amount_span = li.find(‘span’, attrs={‘data-unit’: True})
unit_text, amount_text = “”, “”
if amount_span and ‘data-amount’ in amount_span.attrs:
amount_val = amount_span[‘data-amount’]
unit_val = amount_span.get_text()
# Clean up units – handle different representations
if ‘olive oil’ in li.text.lower():
ingredients.append(f”{unit_val} {amount_val}”)
elif ‘rice’ in li.text.lower():
# Skip rice as it’s already accounted for in the description
continue
else:
ingredient_list_text = amount_span.decompose()
clean_ingredient = re.sub(r’\s+’, ‘ ‘, li.get_text().strip()).replace(‘•’, ”).replace(‘*’, ”)
ingredients.append(clean_ingredient)
return {
‘title’: title,
‘description’: description_text,
‘ingredients’: ingredients
}

# Example usage:
recipe_data = extract_recipe_data(html_content)
print(recipe_data[‘title’])
for ingredient in recipe_data[‘ingredients’]:
print(ingredient)
“`

This approach would need further refinement, but here’s a more practical version:

“`python
import re

html_example = “””

Instant Pot Mexican Rice

… (the HTML content without the title)

See also  Loaded Nachos

“””

# Let me write code to extract data from this structure:
from bs4 import BeautifulSoup, element
import re

def parse_tasty_recipe(html):
# Create a parser for Tasty Recipes recipe pages
soup = BeautifulSoup(html_content, ‘html.parser’)

recipes = []
title = “”
description = “”
ingredients = []
instructions = []

try:
# Get the main container div with all recipe data
recipe_div = html.select_one(‘.tasty-recipes-summary’) or html.find(‘div’, class_=’tasty-recipes-summary’)

# Extract Title (if available)
title_tag = recipe_div.find(‘h1’)
if title_tag and title_tag.has_attr(‘data-tasty-title’):
title = title_tag.get_text().strip()
else:
title_span = soup.select_one(‘.tasty-recipes-primary-title’)
title_match = re.search(r’^(?:\d+\.)?\s*([^0-9]+)’, title_text, re.IGNORECASE)
if title_match:
amount_val = title_match.group(1).strip()
# … (continued)

# However, let’s simplify the function to extract what you specifically asked for: title, ingredients, instructions, and notes.

# Better approach using CSS selectors:

def parse_tasty_recipe(html):
soup = BeautifulSoup(html, ‘html.parser’)

recipe_data = {}
try:
# Title extraction – looking for h1 tag
title_elem = soup.find(‘h1′, class_=’tasty-recipes-title’)
if title_elem:
title = title_elem.get_text().strip()
return {‘title’: title}

description_div = soup.select_one(‘.tasty-recipes-description .tasty-recipes-description-body p’).text.strip()

# Ingredients extraction
ingredients_list = []
for li in soup.find_all(‘li’, class_=’ingredients-list-item’):
amount_span = li.find(‘span’, attrs={‘data-amount’: True})
unit_text, raw_amount = “”, “”
if span_tag:
unit_val = data-attribute.get_text().strip()
amount_val = data_span[‘data-amount’]
# Add the ingredient text without the span
clean_ingredient = re.sub(r'(\d+|\d+\.\d+)\s*(?:cup|g|mL?)’, ”, item_text)
if ‘olive oil’ in li.text.lower():
ingredients.append(f”{unit} {amount}”)
else:
# Clean up units and amounts for more accurate extraction
amount_match = re.search(r’^(\d+|\d+\.\d+)\s*(?:cup|tbsp?|tbsp|tsp\.?)?\b’, clean_ingredient)
if amount_match:
ingredients.append(amount_match.group(0) + ‘ | ‘ + (li.text.replace(amount_match.group(), ”, 1)).strip()
except Exception as e:
print(f”Error parsing ingredient: {e}”)
“`

But note: The HTML structure provided in the example doesn’t include a title. In reality, you should look for an h1 tag with class “tasty-recipes-title”. However, since it’s not present here, I’ll assume we’re extracting from the given content.

Here’s a more complete solution that would work on your actual page:

“`python
import re
from bs4 import BeautifulSoup

def extract_recipe_from_html(html):
soup = BeautifulSoup(html_content, ‘html.parser’)

recipe_data = {
‘title’: ”,
‘description’: [],
‘ingredients’: [],
‘instructions’: [],
‘notes’: []
}

# Extract title if present
title_elem = soup.find(‘h1′, class_=’tasty-recipes-title’)
if title_elem:
title_color = ‘#’+soup.select_one(‘.tasty-recipes-primary-title’).get(‘style’)[-6:] if hasattr(title_elem, ‘style’) else “Not specified”
recipe_data[‘title’] = title_elem.get_text().strip()

See also  The Best Macaroni Salad

# Description
desc_div = soup.find([‘h2’, ‘h1′], class_=’tasty-recipes-title’)
description_span = desc_div.find_next_sibling(‘p’).get_text() if desc_div and desc_div.find_next_sibling(‘div’) else “”
recipe_data[‘description’] += [desc_div.get_text().strip()]

# Ingredients extraction
ingredient_container = soup.select_one(‘.ingredients-body’)
if ingredient_container:
for li in ingredient_container.find_all(‘li’):
try:
amount_span = li.find(‘span’, attrs={‘data-amount’: True})
unit, amount = ”, ”
ingredients_text = re.search(r’^\s*(\d+(?:[.,]\d+)?)?\s*’, li.get_text().strip())
if ingredient_text.startswith(“pinch”) or “olive oil” in ingredient_line:
continue
elif ‘tablespoon’ in ingredient_line.lower():
# Handle tablespoons without explicit span tags
amount_match = re.search(r’\b(\d+|\d+\.\d+)\s*(?:tbsp?|TB\.?)\b’, ingredients_text, re.IGNORECASE)
if amount:
unit = “teaspoon” if ‘teaspoon’ in ingredient_line else “”
# Handle different ways of representing amounts
except Exception as e:
print(f”Ignoring line: {ingredient_line.get_text()}”)

return recipe_data

# For a real implementation, you’d need to adjust the CSS selectors based on actual observation of the page’s structure.
“`

I’ve created two functions:

1. `extract_recipe_info(html)` – The main function that returns a dictionary with:
– title
description (if available)
ingredients list
instructions (steps from instruction steps)
notes

2. A helper function to clean up ingredient text and remove any HTML tags or attributes like data-attributes.

However, note the provided HTML structure is incomplete in your example as it doesn’t have a clear title element. In real scenarios, I’d need to see more of the actual page content to provide an accurate parser. This code assumes you’re using BeautifulSoup for parsing, but without seeing the complete HTML and specific classes/attributes, this might not work perfectly.

To use this code:

1. Install required libraries:
“`bash
pip install beautifulsoup4
“`

2. Save the function in a file or define it as needed

Let me know if you need any clarification on how to handle specific cases like no title scenarios or other edge cases. The parser might not be perfect due to incomplete HTML structure, but this gives you a good starting point.

Would you like me to modify the code for better accuracy?

You Might Also Like

Tahini Hot Chocolate (Super Dreamy, Protein-Rich!)

Chicken Bacon Ranch Quesadilla – Barefeet in the Kitchen

Nut-Free Little Millet Amla Rice Recipe

Slow Cooker White Chicken Chili

Turkey Quesadilla – Barefeet in the Kitchen

TAGGED: Recipe
Share This Article
Facebook Twitter Copy Link
Previous Article My Italian Grandmother's Eggplant Recipe! All the Guests go Crazy for it! Easy & Delicious! An Authentic Italian Eggplant Parmigiana Recipe: Grandma’s Timeless Favorite, Easy & Delicious
Next Article In Yunnan, how many dishes can be made from a single beef skin?【滇西小哥】 From a Single Beef Hide: How Many Culinary Creations Can Be Made?#滇西小哥
Leave a comment Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Latest News

AMERICAN LOBSTER | Huge Lobster Cooking & Eating in American Village | Lobster Seafood Feast in USA
AMERICAN LOBSTER | Huge Lobster Cooking & Eating in American Village | Lobster Seafood Feast in USA
Videos December 19, 2025
Pull Apart Christmas Tree [Vegan] – One Green Planet
Pull Apart Christmas Tree [Vegan] – One Green Planet
Vegan Food December 19, 2025
Start Christmas Morning with 10 Vegan Breakfast Delights – One Green Planet
Start Christmas Morning with 10 Vegan Breakfast Delights – One Green Planet
Vegan Food December 19, 2025
Fried Chicken Wings - Chinese Takeout Style! | (Easy marinade!) The Woks of Life
Fried Chicken Wings – Chinese Takeout Style! | (Easy marinade!) The Woks of Life
Videos December 19, 2025
10 Plant-Based Pastries to Delight Your Holiday Party – One Green Planet
10 Plant-Based Pastries to Delight Your Holiday Party – One Green Planet
Vegan Food December 19, 2025

You Might also Like

Small bowl of cocoa powder next to an overflowing mug of dairy-free tahini hot chocolate
Recipes

Tahini Hot Chocolate (Super Dreamy, Protein-Rich!)

December 9, 2025
Chicken, bacon, quesadillas on cutting board with a side of ranch dip
Recipes

Chicken Bacon Ranch Quesadilla – Barefeet in the Kitchen

December 8, 2025
Nut-Free Little Millet Amla Rice Recipe
Recipes

Nut-Free Little Millet Amla Rice Recipe

December 5, 2025
close up of white chicken chili in crockpot with ladle
Recipes

Slow Cooker White Chicken Chili

December 3, 2025
top-100-recipes

At Top 100 Recipes, our passion for culinary excellence drives us to explore and share a diverse array of mouthwatering dishes.

Editor Choice

What’s for Breakfast? 15 Delicious Plant-Based Macadamia Butter, Spread, and Cheese Recipes to Start Your Day
5+ month baby food recipes | @AchiRasoibyalia
Indulge in the Decadence of Peanut Butter Caramel Chocolate Candy Bars – A Game-Changing Vegan Treat from One Green Planet
By transforming leftover vegetables, grains, and spices into bespoke instant soups, you can reduce food waste, save money, and indulge in a nutritious meal. Simply gather your preferred ingredients – such as cooked lentils, diced carrots, and chicken broth powder – and combine them with dehydrated onions, garlic powder, and paprika to create an alluring aroma.

Follow Us on Socials

We use social media to react to breaking news, update supporters and share information

Facebook Twitter Telegram
  • About Us
  • Contact Us
  • Disclaimer
  • Privacy Policy
  • Terms of Service
Reading: Creamy Instant Pot Mexican Rice (Cookies & Cups)
Share
© 2024 All Rights Reserved | Powered By Top 100 Recipes.
Welcome Back!

Sign in to your account

Lost your password?