{ "cells": [ { "cell_type": "code", "execution_count": 2, "id": "d3b20ae9", "metadata": {}, "outputs": [], "source": [ "import requests\n", "from bs4 import BeautifulSoup\n", "from collections import defaultdict, deque\n", "from urllib.parse import urljoin, urlparse\n", "\n", "from craft import CraftComponent, CraftItem, CraftRecipe\n", "from craft_storage import CraftStorage\n", "from collections import Counter\n", "import simple_extractor\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "6189c095", "metadata": {}, "outputs": [], "source": [ "def get_page_content(url):\n", " \"\"\"Загружает HTML-контент страницы.\"\"\"\n", " try:\n", " response = requests.get(url)\n", " response.raise_for_status()\n", " return response.text\n", " except requests.RequestException as e:\n", " print(f\"Ошибка при загрузке страницы: {e}\")\n", " return None\n", " \n", "def get_soup(content):\n", " soup = BeautifulSoup(content, \"html.parser\")\n", " return soup" ] }, { "cell_type": "code", "execution_count": 4, "id": "3ea684bc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Анализирую https://ru.minecraft.wiki/w/IndustrialCraft_2/Квантовая_броня....\n", "Укреплённое стекло уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Улучшенная электросхема уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовый шлем\n", "Композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Лазуротроновый кристалл уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовый жилет\n", "Лазуротроновый кристалл уже есть в датасете, скипаю\n", "Основной корпус машины уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Светопыль уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовые поножи\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Лазуротроновый кристалл уже есть в датасете, скипаю\n", "Резиновые ботинки уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовые ботинки\n", "Квантовый шлем уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Лазуротроновый кристалл уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Улучшенная электросхема уже есть в датасете, скипаю\n", "Укреплённое стекло уже есть в датасете, скипаю\n", "Улучшенная электросхема уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовый шлем\n", "Квантовый жилет уже есть в датасете, скипаю\n", "Композит уже есть в датасете, скипаю\n", "Композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Лазуротроновый кристалл уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовый жилет\n", "Квантовые поножи уже есть в датасете, скипаю\n", "Основной корпус машины уже есть в датасете, скипаю\n", "Лазуротроновый кристалл уже есть в датасете, скипаю\n", "Основной корпус машины уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Светопыль уже есть в датасете, скипаю\n", "Светопыль уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовые поножи\n", "Квантовые ботинки уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Иридиевый композит уже есть в датасете, скипаю\n", "Резиновые ботинки уже есть в датасете, скипаю\n", "Лазуротроновый кристалл уже есть в датасете, скипаю\n", "Резиновые ботинки уже есть в датасете, скипаю\n", "Добавлен рецепт крафта для предмета Квантовые ботинки\n", "Закончен поиск по странице https://ru.minecraft.wiki/w/IndustrialCraft_2/Квантовая_броня\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n", "d:\\Development\\Python\\craft_calc\\craft_storage.py:56: FutureWarning: In a future version, object-dtype columns with all-bool values will not be included in reductions with bool_only=True. Explicitly cast to bool dtype instead.\n", " self.items_df = pd.concat(\n" ] } ], "source": [ "url = 'https://ru.minecraft.wiki/w/IndustrialCraft_2/Квантовая_броня'\n", "content = get_page_content(url)\n", "soup = get_soup(content)\n", "storage = CraftStorage()\n", "simple_extractor.extract_crafts(soup,url,storage)" ] }, { "cell_type": "code", "execution_count": 7, "id": "df4b0ee0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " recipe_id input_item count\n", "0 1 Укреплённое стекло 2\n", "1 1 Иридиевый композит 2\n", "2 1 Улучшенная электросхема 2\n", "3 1 Нановолоконный шлем 1\n", "4 1 Лазуротроновый кристалл 1\n", "5 1 Шлем-акваланг 1\n", "6 2 Иридиевый композит 4\n", "7 2 Композит 2\n", "8 2 Нановолоконный жилет 1\n", "9 2 Лазуротроновый кристалл 1\n", "10 2 Электрический реактивный ранец 1\n", "11 3 Основной корпус машины 2\n", "12 3 Иридиевый композит 2\n", "13 3 Светопыль 2\n", "14 3 Лазуротроновый кристалл 1\n", "15 3 Нановолоконные поножи 1\n", "16 4 Иридиевый композит 2\n", "17 4 Резиновые ботинки 2\n", "18 4 Нановолоконные ботинки 1\n", "19 4 Лазуротроновый кристалл 1\n" ] } ], "source": [ "print(storage.components_df.head(20))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.5" } }, "nbformat": 4, "nbformat_minor": 5 }