π‘ ΠΠ°ΠΊ Π²ΡΡΠ°ΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· HTML Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python
Π Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ BeautifulSoup Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· HTML.
from bs4 import BeautifulSoup
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ BeautifulSoup, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install beautifulsoup4
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ HTML-ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΡΠ΅Π³ΠΈ <a> Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅:
import requests
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° HTML-ΠΊΠΎΠ΄Π°
response = requests.get("http://example.com")
html = response.text
# ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
# ΠΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ
ΡΠ΅Π³ΠΎΠ² <a>
links = soup.find_all("a")
# ΠΡΠ²ΠΎΠ΄ ΡΡΡΠ»ΠΎΠΊ
for link in links:
print(link.get("href"))
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° requests Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ HTML-ΠΊΠΎΠ΄Π° Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ BeautifulSoup Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π²ΡΠ΅Ρ ΡΠ΅Π³ΠΎΠ² <a> Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° href.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
pip install beautifulsoup4
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Beautiful Soup. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ 1: ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅Π³Π°
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ HTML ΠΊΠΎΠ΄:
<html>
<body>
<h1>ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!</h1>
<p>ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ HTML ΠΊΠΎΠ΄Π°.</p>
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ°</a>
</body>
</html>
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Beautiful Soup, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³Π° <h1>, <p> ΠΈ <a>. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
from bs4 import BeautifulSoup
html = '''
<html>
<body>
<h1>ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!</h1>
<p>ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ HTML ΠΊΠΎΠ΄Π°.</p>
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ°</a>
</body>
</html>
'''
soup = BeautifulSoup(html, 'html.parser')
h1_tag = soup.find('h1')
p_tag = soup.find('p')
a_tag = soup.find('a')
print(h1_tag.text) # ΠΡΠ²ΠΎΠ΄ΠΈΡ 'ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!'
print(p_tag.text) # ΠΡΠ²ΠΎΠ΄ΠΈΡ 'ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ HTML ΠΊΠΎΠ΄Π°.'
print(a_tag['href']) # ΠΡΠ²ΠΎΠ΄ΠΈΡ 'https://www.example.com'
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ BeautifulSoup ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½ΡΠΆΠ½ΡΡ
Π½Π°ΠΌ ΡΠ΅Π³ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ 2: ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
ΠΡΠ»ΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Beautiful Soup. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
from bs4 import BeautifulSoup
html = '''
<html>
<body>
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ° 1</a>
<a href="https://www.google.com">Π‘ΡΡΠ»ΠΊΠ° 2</a>
<a href="https://www.python.org">Π‘ΡΡΠ»ΠΊΠ° 3</a>
</body>
</html>
'''
soup = BeautifulSoup(html, 'html.parser')
links = soup.find_all('a')
for link in links:
print(link['href'])
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ Π²ΡΠ΅ ΡΠ΅Π³ΠΈ <a> ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΡ
Π°ΡΡΠΈΠ±ΡΡ 'href'. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ 3: ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ
ΠΡΠ»ΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Beautiful Soup Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
from bs4 import BeautifulSoup
html = '''
<html>
<body>
<table>
<tr>
<th>ΠΠΌΡ</th>
<th>ΠΠΎΠ·ΡΠ°ΡΡ</th>
</tr>
<tr>
<td>ΠΠ½Π½Π°</td>
<td>25</td>
</tr>
<tr>
<td>ΠΠ²Π°Π½</td>
<td>30</td>
</tr>
</table>
</body>
</html>
'''
soup = BeautifulSoup(html, 'html.parser')
rows = soup.find_all('tr')
data = []
for row in rows[1:]:
name = row.find('td').text
age = row.find('td').find_next('td').text
data.append({'Name': name, 'Age': age})
for person in data:
print(person)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ Π²ΡΠ΅ ΡΠ΅Π³ΠΈ <tr>, Π° Π·Π°ΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°. ΠΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Beautiful Soup Π² Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· HTML ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π²Π΅Π±-ΡΠΊΡΠ°ΠΏΠΈΠ½Π³ΠΎΠΌ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Beautiful Soup Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· HTML Π² Python.