CoderCastrov logo
CoderCastrov
Парсер

Что мы будем готовить сегодня, Icook?

Что мы будем готовить сегодня, Icook?
просмотров
3 мин чтение
#Парсер

Система рекомендации рецептов, чтобы развить вашего внутреннего MasterChef

Для кого-то это хобби, а для кого-то обязательство, искусство готовки неизбежно присутствует в нашей жизни. В конце концов, чтобы утолить голод, мы либо заказываем еду в Ifood, либо сами беремся за приготовление.

Однако успех в кулинарии во многом зависит от выбора блюд, которые будут составлять ваше меню. Ведь люди, которые будут есть вашу еду, имеют разные вкусы и привычки, поэтому даже если вы отлично готовите, это может быть недостаточно.

Именно из этой потребности возник этот проект. Icook выступает в роли помощника повара, предлагая алгоритм, который составляет полный план приготовления пищи, включая более 100 тысяч комбинаций закусок, основных блюд, гарниров и десертов.

Важно отметить, что все это возможно благодаря блестящей работе сайта рецептов PetitCHEF.

Используя список из 300 рецептов на их блоге, мы смогли получить все необходимое для успешного приготовления вкусного воскресного обеда.


Как это работает?

Icook основан на парсинге данных с веб-сайта, то есть он анализирует исходный код сайта и находит данные, которые обычно представлены одинаковым образом на разных страницах одного домена.

Начиненный картофель

Заметьте, что на приведенных выше изображениях есть два совершенно разных рецепта, с разными способами приготовления и дополнительными атрибутами, такими как фотография, которая полностью отличается друг от друга. Однако структура ингредиентов всегда одинакова.

Таким образом, повторяя одну и ту же процедуру сбора данных, меняя только страницу, алгоритм формирует базу данных с числами и текстами для анализа.

В случае с нашим помощником, он выполняет следующую процедуру:

  • Мы открываем список PetitCHEF и собираем ссылки на все страницы, относящиеся к этому списку блюд, ведь у нас есть разделы с 1 по 13, с 24 рецептами на каждой странице.
  • Затем мы открываем каждую собранную ссылку и получаем ссылку на 24 соответствующих рецепта для этого раздела.
  • Учитывая, что на нашем ужине могут быть люди, которые не едят определенные продукты, мы составляем список того, что не должно быть в ингредиентах.
  • Затем мы проходим по каждой ссылке рецепта и проверяем, есть ли в ингредиентах какой-либо элемент из списка, который должен быть исключен. Если мы находим что-то, мы отбрасываем этот рецепт для этого приема пищи.
  • После того, как мы учли все возможные варианты, которые могут быть в нашем меню, мы ищем в ссылках рецептов тип блюда, к которому они относятся, то есть, является ли это закуской, основным блюдом, гарниром, десертом или перекусом.
  • После этого мы берем случайную комбинацию каждого из следующих блюд: закуска, основное блюдо, гарнир и десерт. Мы объединяем все это в небольшой текст и показываем пользователю название каждого выбранного блюда и ссылку для начала приготовления.

Готово, можно приступать к приготовлению ужина!

Заметьте, что вряд ли вы найдете два одинаковых блюда, и тем более, исключив то, что люди не едят, у вас будет больше шансов быть воспринятым как опытный и инновационный шеф-повар.

Очевидно, есть несколько моментов, которые можно улучшить, например, выбор нескольких элементов сразу в списке ингредиентов, которые не должны появляться, таких как мясо для вегетарианцев. Однако, как проект с открытым исходным кодом, я оставляю это вам как упражнение, чтобы вы реализовали и помогли большему количеству людей успешно провести семейные обеды.

Надеюсь, вам понравилось, полный код этого проекта находится в репозитории на Github.

Bon appétit!