craft_parser_init
This commit is contained in:
222
craft_parser/notebook.ipynb
Normal file
222
craft_parser/notebook.ipynb
Normal file
@ -0,0 +1,222 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
Reference in New Issue
Block a user