π ΠΠ°ΠΊ ΠΏΠ°ΡΡΠΈΡΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅: Π»Π΅Π³ΠΊΠΈΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
Π§ΡΠΎΠ±Ρ ΡΠ°ΡΠΏΠ°ΡΡΠΈΡΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°ΡΠΏΠ°ΡΡΠΈΡΡ.
1. Π Π°ΡΠΏΠ°ΡΡΠΈΡΡ HTML
import requests
from bs4 import BeautifulSoup
url = 'https://example.com' # ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π½ΡΠΆΠ½ΡΠΉ URL
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ BeautifulSoup Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· HTML
2. Π Π°ΡΠΏΠ°ΡΡΠΈΡΡ JSON
import json
json_data = '{"name": "John", "age": 30, "city": "New York"}' # ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π½ΡΠΆΠ½ΡΠΉ JSON
parsed_data = json.loads(json_data)
# Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π²Π½ΡΡΡΠΈ JSON, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: parsed_data['name']
3. Π Π°ΡΠΏΠ°ΡΡΠΈΡΡ CSV
import csv
csv_file = open('data.csv') # ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ CSV-ΡΠ°ΠΉΠ»Π°
csv_reader = csv.reader(csv_file)
for row in csv_reader:
# ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² CSV
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΡΠΈΠ½Π³Π°.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠ°ΡΡΠΈΡΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅
ΠΠ°ΡΡΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π΄Π°Π½Π½ΡΡ . Π Python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠΎΡΠ°ΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°.
1. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Requests
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Requests - ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install requests
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ HTML-ΠΊΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΈΡΡ:
import requests
url = "https://www.example.com"
response = requests.get(url)
html_code = response.text
print(html_code)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ GET-Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ URL ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ HTML-ΠΊΠΎΠ΄ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ html_code. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΠ°ΠΊΡΡ ΠΊΠ°ΠΊ BeautifulSoup.
2. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° BeautifulSoup
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° BeautifulSoup ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· HTML ΠΈ XML Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², Π΄Π΅Π»Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install beautifulsoup4
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π²ΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅:
from bs4 import BeautifulSoup
import requests
url = "https://www.example.com"
response = requests.get(url)
html_code = response.text
soup = BeautifulSoup(html_code, "html.parser")
links = soup.find_all("a")
for link in links:
print(link.text)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ HTML-ΠΊΠΎΠ΄ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Requests, Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ BeautifulSoup ΠΈΠ· ΡΡΠΎΠ³ΠΎ HTML-ΠΊΠΎΠ΄Π°, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΠΏΠ°ΡΡΠ΅Ρ "html.parser". ΠΠ°Π»Π΅Π΅ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ (ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ <a>) Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΡ ΡΠ΅ΠΊΡΡ.
3. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Scrapy
Scrapy - ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Scrapy Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install scrapy
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΡΠΊΠ° (crawler) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Scrapy:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['https://www.example.com']
def parse(self, response):
# ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π·Π΄Π΅ΡΡ
pass
if __name__ == "__main__":
process = scrapy.CrawlerProcess()
process.crawl(MySpider)
process.start()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ°ΡΠΊΠ° (crawler) Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ "myspider" ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ URL-Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ΅ΡΠΈΡΡ. Π ΠΌΠ΅ΡΠΎΠ΄Π΅ parse Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΠ°ΡΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ CrawlerProcess.
4. ΠΠ°ΡΡΠΈΠ½Π³ JSON Π΄Π°Π½Π½ΡΡ
ΠΡΠΎΠΌΠ΅ ΠΏΠ°ΡΡΠΈΠ½Π³Π° HTML-ΠΊΠΎΠ΄Π°, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· JSON-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ API. Π Python ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
import json
json_data = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_data)
print(data["name"])
print(data["age"])
print(data["city"])
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΡΡΠΎΠΊΡ JSON-Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ json.loads. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π΄Π°Π½Π½ΡΡ , ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠ»ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅. ΠΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Requests, BeautifulSoup ΠΈ Scrapy, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΏΠ°ΡΡΠΈΠ½Π³ΠΎΠΌ JSON Π΄Π°Π½Π½ΡΡ . ΠΠ°Ρ Π²ΡΠ±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π²Π°ΡΠΈΡ Π»ΠΈΡΠ½ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΡΡΠΎΠ±Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ².