π ΠΠ°ΠΊ ΠΏΠ°ΡΡΠΈΡΡ ΡΠ°ΠΉΡ Π½Π° ΠΠΈΡΠΎΠ½Π΅: ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ π
ΠΠ»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠ° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ BeautifulSoup. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import requests
from bs4 import BeautifulSoup
url = "Π°Π΄ΡΠ΅Ρ_ΡΠ°ΠΉΡΠ°"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
# ΠΠ°ΠΉΠ΄Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅_ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ = soup.find_all("ΡΠ΅Π³")
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠ΅ΠΊΡΡ
ΡΠ΅ΠΊΡΡ = [ΡΠ»Π΅ΠΌΠ΅Π½Ρ.get_text() for ΡΠ»Π΅ΠΌΠ΅Π½Ρ in Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅_ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ]
print(ΡΠ΅ΠΊΡΡ)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠ°ΡΡΠΈΡΡ ΡΠ°ΠΉΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅
ΠΠ°ΡΡΠΈΠ½Π³ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ°ΡΡΠΈΠ½Π³ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python.
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ BeautifulSoup
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° Π½Π° Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ BeautifulSoup. ΠΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ Π½Π° HTML-ΡΡΡΠ°Π½ΠΈΡΠ°Ρ .
pip install beautifulsoup4
2. ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ BeautifulSoup ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΠΏΠ°ΡΡΠΈΡΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. Π‘Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ requests. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ HTTP-Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ.
import requests
url = "http://example.com" # ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° Π½ΡΠΆΠ½ΡΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ
response = requests.get(url)
html_content = response.content
3. ΠΠΎΠΈΡΠΊ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΡΠ΅Π³ΠΈ <a> ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅.
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, "html.parser")
links = soup.find_all("a")
for link in links:
print(link.get("href"))
4. ΠΠ°ΡΡΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ
ΠΡΠ»ΠΈ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ°, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BeautifulSoup Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π½Π΅Π΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
table = soup.find("table")
rows = table.find_all("tr")
for row in rows:
columns = row.find_all("td")
for column in columns:
print(column.text)
5. Π Π°Π±ΠΎΡΠ° Ρ AJAX-Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
ΠΠ½ΠΎΠ³Π΄Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ AJAX-Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠ»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΡΠ°ΠΊΠΈΡ ΡΡΡΠ°Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Selenium, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ.
from selenium import webdriver
driver = webdriver.Chrome("path_to_chromedriver") # Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Chrome
driver.get(url)
# ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ
html_content = driver.page_source
driver.quit()
soup = BeautifulSoup(html_content, "html.parser")
# ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΠΏΠ°ΡΡΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ BeautifulSoup
6. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠ±Ρ ΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
ΠΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ HTTP, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΏΠ°ΡΡΠΈΠ½Π³Π°. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π³ΠΎΡΠΎΠ²Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅ΡΡ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈ try-except Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ:
try:
response = requests.get(url)
except requests.exceptions.RequestException as e:
print(e)
ΠΡΠ»ΠΈ ΡΠ°ΠΉΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π½Π°ΡΠΈ Π·Π°ΠΏΡΠΎΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Tor Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
7. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΡΠΈΠ½Π³Π°
Π§ΡΠΎΠ±Ρ ΠΏΠ°ΡΡΠΈΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ cron (Π½Π° Unix-ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ) ΠΈΠ»ΠΈ Task Scheduler (Π½Π° Windows).
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ schedule ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ:
import schedule
import time
def parse_website():
# ΠΠ°Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠ°
schedule.every().day.at("12:00").do(parse_website)
while True:
schedule.run_pending()
time.sleep(1)
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠ°ΡΡΠΈΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΡ Π½Π° Python! Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ BeautifulSoup ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!