π½ ΠΠ°ΠΊ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ°ΠΉΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python? π½
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
import requests
import os
def download_page(url):
response = requests.get(url)
return response.text
def save_page(page_content, filename):
with open(filename, 'w', encoding='utf-8') as file:
file.write(page_content)
def download_website(url):
page_content = download_page(url)
save_page(page_content, 'index.html')
def download_website_recursive(url, folder):
page_content = download_page(url)
save_page(page_content, os.path.join(folder, 'index.html'))
links = re.findall(r'href=[\'"]?([^\'" >]+)', page_content)
for link in links:
if link.startswith('/'):
link = url + link[1:]
elif not link.startswith('http'):
link = url + link
if link.startswith(url):
subfolder = link.split('/')[-2]
subfolder_path = os.path.join(folder, subfolder)
os.makedirs(subfolder_path, exist_ok=True)
download_website_recursive(link, subfolder_path)
website_url = 'https://www.example.com'
output_folder = 'downloaded_website'
os.makedirs(output_folder, exist_ok=True)
download_website_recursive(website_url, output_folder)
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ website_url Π½Π° URL ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ, Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ output_folder - Π½Π° ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡΠ° ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π΅Π΅ Π² Π²ΠΈΠ΄Π΅ HTML ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ "index.html". ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π΅Π΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠΊΠ°ΡΠ°ΡΡ Π²Π΅ΡΡ ΡΠ°ΠΉΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ°ΠΉΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python
Π‘ΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π½Π° Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π±Π΅Π· Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΡ. Python ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python.
1. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Requests
Requests - ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΈ ΡΠ΄ΠΎΠ±Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ HTTP-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π²ΡΠ΅Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠΈΠ»ΠΈ CSS.
import requests
from urllib.parse import urlparse, urljoin
from bs4 import BeautifulSoup
import os
def download_page(url):
# ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ URL Π΄Π»Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΡΠ»ΠΎΠΊ
parsed_url = urlparse(url)
base_url = parsed_url.scheme + '://' + parsed_url.netloc
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ
response = requests.get(url)
html_content = response.text
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
directory = os.path.join(os.getcwd(), parsed_url.netloc)
if not os.path.exists(directory):
os.makedirs(directory)
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ BeautifulSoup Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ HTML
soup = BeautifulSoup(html_content, 'html.parser')
# ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
for link in soup.find_all('a'):
href = link.get('href')
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΡΠ»ΠΊΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΉ
if href and not urlparse(href).netloc:
absolute_url = urljoin(base_url, href)
# Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
file_response = requests.get(absolute_url)
file_content = file_response.content
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΡΡ Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°
file_path = os.path.join(directory, href)
# Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ°ΠΉΠ» Π½Π° Π΄ΠΈΡΠΊ
with open(file_path, 'wb') as file:
file.write(file_content)
# Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ
with open(os.path.join(directory, 'index.html'), 'w') as html_file:
html_file.write(html_content)
print(f'Π‘Π°ΠΉΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΊΠ°ΡΠ°Π½! Π‘ΠΎΡ
ΡΠ°Π½Π΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ΅ {parsed_url.netloc}')
# ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
url = 'https://www.example.com'
download_page(url)
2. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Scrapy
Scrapy - ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ Π²Π΅Π±-ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Π° ΠΈ ΡΠ±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ . ΠΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Requests.
ΠΠ»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Scrapy Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΡΠΊ (ΡΠΏΠ°ΠΉΠ΄Π΅Ρ), ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°ΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠ°ΠΉΡΠΎΠΌ:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
def start_requests(self):
url = 'https://www.example.com'
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ URL
base_url = response.url
# Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ HTML-ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ
filename = response.url.split("/")[-2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)
# Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
for href in response.css('a::attr(href)').getall():
absolute_url = response.urljoin(href)
yield scrapy.Request(absolute_url, callback=self.save_file)
def save_file(self, response):
filename = response.url.split("/")[-1]
with open(filename, 'wb') as f:
f.write(response.body)
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠ°ΡΠΊΠ° ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ°ΠΉΡ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
scrapy runspider spider_file.py
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Scrapy Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
3. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° wget
ΠΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Requests ΠΈΠ»ΠΈ Scrapy, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ wget, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ wget Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ:
import wget
url = 'https://www.example.com'
wget.download(url)
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°Π³ΡΡΠ·ΠΈΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ URL-Π°Π΄ΡΠ΅ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡ ΠΈΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ Π²Π°Ρ ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ°ΠΉΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠΆΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ!