#!/usr/bin/env python3 from bs4 import BeautifulSoup import requests from prettytable import PrettyTable from textwrap import fill from termcolor import colored url = "https://cheeseboardcollective.coop/pizza/" content = requests.get(url) soup = BeautifulSoup(content.text, "html.parser") magic_ingredients = ["corn"] table = PrettyTable() table.field_names = ["date", "pizza"] table.align = "l" pizzas = soup.select(".pizza-list > article") for pizza in pizzas: date_color = "white" menu_color = "white" date = pizza.find(class_="date").text # the pizza is the 1st element, the 2nd is the salad, and i don't # care about the salad :) menu = ( pizza.select(".menu > p:nth-of-type(1)")[0] .get_text(strip=True, separator="\n") .split("\n") ) if "closed" in menu[0]: date_color = "red" if "Parbake pizza is available" in menu[0]: menu.pop(0) if "Lunch from" in menu[0]: menu.pop(0) if "No hot pizza today" in menu[0]: menu.pop(0) final_menu = "".join(menu) for ingredient in magic_ingredients: if ingredient in final_menu: menu_color = "yellow" table.add_row( [colored(date, date_color), fill(colored(final_menu, menu_color), width=80)] ) print(table)