π ΠΠ°ΠΊ ΡΠΏΠ°ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΡΠ°ΠΉΡΠ° python: ΡΠΎΠ²Π΅ΡΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ
import requests
from bs4 import BeautifulSoup
# ΠΡΠΏΡΠ°Π²ΠΊΠ° GET-Π·Π°ΠΏΡΠΎΡΠ° ΠΊ Π²Π΅Π±-ΡΠ°ΠΉΡΡ
response = requests.get("URL_Π²Π΅Π±-ΡΠ°ΠΉΡΠ°")
# ΠΠ°ΡΡΠΈΠ½Π³ HTML-ΠΊΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΈΡΡ
soup = BeautifulSoup(response.content, 'html.parser')
# ΠΠ°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
elements = soup.find_all("ΡΠ΅Π³_ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°", attrs={"Π°ΡΡΠΈΠ±ΡΡ": "Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅"})
# ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
for element in elements:
Π΄Π°Π½Π½ΡΠ΅ = element.text
# ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ
...
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ requests ΠΈ BeautifulSoup ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΏΠ°ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΡΠ°ΠΉΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Python Π΄Π»Ρ ΡΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°. Π‘ΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π²Π΅Π±-ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Π°, ΠΈ Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° BeautifulSoup, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ HTML-ΠΊΠΎΠ΄ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ Π΄Π°Π½Π½ΡΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ BeautifulSoup, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install BeautifulSoup4
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ BeautifulSoup ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
ΠΡΠΈΠΌΠ΅Ρ 1: ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ HTML-ΠΊΠΎΠ΄ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°:
<p id="my-paragraph">ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!</p>
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°:
from bs4 import BeautifulSoup
# HTML-ΠΊΠΎΠ΄
html = '''
<p id="my-paragraph">ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!</p>
'''
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
# ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ id
element = soup.find(id="my-paragraph")
# ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
text = element.get_text()
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
print(text)
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!
ΠΡΠΈΠΌΠ΅Ρ 2: ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΎΠΊ ΠΈΠ· HTML-ΡΡΡΠ°Π½ΠΈΡΡ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ HTML-ΠΊΠΎΠ΄ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:
<div id="my-links">
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ° 1</a>
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ° 2</a>
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ° 3</a>
</div>
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ ΠΈΠ· HTML-ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°:
from bs4 import BeautifulSoup
# HTML-ΠΊΠΎΠ΄
html = '''
<div id="my-links">
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ° 1</a>
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ° 2</a>
<a href="https://www.example.com">Π‘ΡΡΠ»ΠΊΠ° 3</a>
</div>
'''
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
# ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ <a>
links = soup.find_all('a')
# ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΡΡΡΠ»ΠΊΠΈ
for link in links:
href = link.get('href')
print(href)
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
https://www.example.com
https://www.example.com
https://www.example.com
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΡΡΠ»ΠΊΠΈ ΠΈΠ· HTML-ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅Ρ 3: Π‘ΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ requests
ΠΡΠΈ ΡΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ requests Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ HTML-ΠΊΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΈΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ requests ΠΈ BeautifulSoup:
import requests
from bs4 import BeautifulSoup
# URL Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΡΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
url = 'https://www.example.com'
# ΠΠ°ΠΏΡΠΎΡ GET ΠΊ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅
response = requests.get(url)
# ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ HTML-ΠΊΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΈΡΡ
html = response.content
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
# ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· HTML-ΠΊΠΎΠ΄Π°
# ... Π²Π°Ρ ΠΊΠΎΠ΄ Π·Π΄Π΅ΡΡ ...
# ΠΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
# ... Π²Π°Ρ ΠΊΠΎΠ΄ Π·Π΄Π΅ΡΡ ...
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ requests Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ GET-Π·Π°ΠΏΡΠΎΡΠ° ΠΊ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ HTML-ΠΊΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ BeautifulSoup Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° HTML-ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Python Π΄Π»Ρ ΡΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Python Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π·Π°Π΄Π°Ρ.
Π£ΡΠΏΠ΅Ρ ΠΎΠ² Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ Python ΠΈ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΡΠΏΠ°ΡΡΠΈΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ²!