Files
CraftCalc/craft_parser/notebook.ipynb
2026-01-19 22:17:38 +07:00

223 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}