π₯ ΠΠ°ΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΈΡΠΎΠ½? ΠΡΠΎΡΡΠΎΠΉ Π³ΠΈΠ΄ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ππ₯οΈ
ΠΠ°ΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΈΡΠΎΠ½?
Π§ΡΠΎΠ±Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ beautifulsoup Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° HTML-ΠΊΠΎΠ΄Π° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ requests Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import os
import requests
from bs4 import BeautifulSoup
def download_page(url):
response = requests.get(url)
if response.status_code == 200:
return response.content
def save_page(content, file_name):
with open(file_name, 'wb') as f:
f.write(content)
def download_website(url, folder_name):
if not os.path.exists(folder_name):
os.makedirs(folder_name)
page_content = download_page(url)
soup = BeautifulSoup(page_content, 'html.parser')
for link in soup.find_all('a'):
href = link.get('href')
if href.startswith('/'):
href = url + href[1:]
try:
content = download_page(href)
file_name = os.path.join(folder_name, href.split('/')[-1])
save_page(content, file_name)
except:
pass
url = 'https://example.com'
folder_name = 'website'
download_website(url, folder_name)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ download_website
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ URL ΡΠ°ΠΉΡΠ° ΠΈ ΠΈΠΌΡ ΠΏΠ°ΠΏΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ. Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΠ°ΡΡΠΈΡ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΈΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΡΠ°ΠΉΡ, Π½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠ» Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΡ ΡΠ΅ΡΠ΅Π· Python
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ° ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π½Π° Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python - ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ Π½Π°Π²ΡΠΊ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠ°ΡΡ Π΅Π³ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΊΠΎΠ΄Π°.
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Python Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
pip install beautifulsoup4
pip install requests
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ requests
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° requests ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ requests Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°:
import requests
url = "https://www.example.com"
response = requests.get(url)
if response.status_code == 200:
content = response.text
print(content)
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ BeautifulSoup
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° BeautifulSoup ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ HTML-ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°:
from bs4 import BeautifulSoup
url = "https://www.example.com"
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
# ΠΠ°Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
4. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π½Π° Π΄ΠΈΡΠΊ
Π§ΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Python os:
import os
url = "https://www.example.com"
response = requests.get(url)
if response.status_code == 200:
content = response.text
with open('saved_page.html', 'w', encoding='utf-8') as file:
file.write(content)
print('Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΎ Π² ΡΠ°ΠΉΠ» saved_page.html')
5. Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΡ:
import os
import requests
from bs4 import BeautifulSoup
def download_page(url):
response = requests.get(url)
if response.status_code == 200:
content = response.text
with open(get_file_name(url), 'w', encoding='utf-8') as file:
file.write(content)
print(f'{url} ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π°')
soup = BeautifulSoup(content, 'html.parser')
for link in soup.find_all('a'):
href = link.get('href')
if href.startswith('/'):
href = url + href
download_page(href)
def get_file_name(url):
file_name = url.replace('https://', '').replace('http://', '').replace('/', '_')
return file_name
url = "https://www.example.com"
download_page(url)
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ requests ΠΈ BeautifulSoup Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π° Π΄ΠΈΡΠΊ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°.