πΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HTML Π² Python: ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ π
from bs4 import BeautifulSoup
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ HTML-ΠΊΠΎΠ΄Π°
html_code = '''
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!
'''
# Π Π°Π·Π±ΠΎΡ HTML-ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ BeautifulSoup
soup = BeautifulSoup(html_code, 'html.parser')
# ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° h1
heading = soup.find('h1').text
# ΠΡΠ²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° h1
print(heading)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HTML Π² Python?
HTML (HyperText Markup Language) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ HTML Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π²Π΅Π±-ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ HTML Π² Python.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ BeautifulSoup
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° BeautifulSoup ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ HTML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π² Python. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· HTML-ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΠΈ.
from bs4 import BeautifulSoup
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
# ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
element_text = soup.find('div').text
# ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ°
attribute_value = soup.find('a')['href']
# ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
soup.find('h1').string = 'ΠΠΎΠ²ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ'
# ΠΡΡΠ°Π²ΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
new_element = soup.new_tag('p')
new_element.string = 'ΠΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ'
soup.body.append(new_element)
ΠΡΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ HTML. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π΅Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ requests
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° requests ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ HTTP-Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ HTML-ΠΊΠΎΠ΄ ΡΡΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
import requests
# ΠΡΠΏΡΠ°Π²ΠΊΠ° GET-Π·Π°ΠΏΡΠΎΡΠ° ΠΊ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅
response = requests.get(url)
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΡΡΡΠ° ΠΎΡΠ²Π΅ΡΠ°
if response.status_code == 200:
html_content = response.text
# ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° HTML-ΠΊΠΎΠ΄Π°
Π‘ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ requests Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Flask
Flask ΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΌ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Π΄Π»Ρ Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Flask Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ HTML-ΡΠ°Π·ΠΌΠ΅ΡΠΊΡ ΠΈ Python-ΠΊΠΎΠ΄.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Flask ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ HTML, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
4. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Selenium
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Selenium ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Selenium Π²ΠΌΠ΅ΡΡΠ΅ Ρ Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°Ρ , Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΡΠΌΡ, ΠΊΠ»ΠΈΠΊΠ°ΡΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ. Π΄.
from selenium import webdriver
# ΠΠ°ΠΏΡΡΠΊ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ°
driver = webdriver.Firefox()
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ
driver.get(url)
# ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
element = driver.find_element_by_id('element_id')
element.click()
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Selenium Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ HTML Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌ, ΡΠ±ΠΎΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ HTML Π² Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ BeautifulSoup ΠΈ requests, Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ HTML-ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Flask ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ HTML-ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΎΠΉ ΠΈ Python-ΠΊΠΎΠ΄ΠΎΠΌ. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Selenium ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°Ρ .