1. Продукти
  2.   HTML
  3.   Python
  4.   Beautiful Soup
 
  

Бібліотека Python з відкритим кодом для парсингу HTML/XML та витягування даних

Beautiful Soup — провідна бібліотека Python з відкритим кодом для парсингу, яка обробляє неструктурований HTML/XML, витягує текст/посилання, орієнтується в дереві та забезпечує сучасні процеси веб-скрапінгу.

Що таке Beautiful Soup?

Веб‑скрапінг став необхідною навичкою для дата‑науковців, розробників та дослідників, які потребують витягати цінну інформацію з веб‑сайтів. Beautiful Soup є однією з найпопулярніших та найзручніших бібліотек Python для розбору HTML та XML документів. З моменту свого створення у 2004 році цей потужний інструмент заощадив програмістам безліч годин у проектах веб‑скрапінгу. Інтуїтивний API бібліотеки, відмінна документація та активна підтримка спільноти забезпечують, що як новачки, так і досвідчені розробники можуть ефективно витягати веб‑дані.

Beautiful Soup — це бібліотека Python, спеціально розроблена для вилучення даних з файлів HTML та XML. Це потужна бібліотека Python, яка з 2004 року заощаджує програмістам години чи дні роботи над проєктами веб‑скрейпінгу. За кілька рядків коду ви можете виконувати складні запити, такі як простота та легкість використання, знаходження всіх посилань, витяг текстового вмісту, автоматичне перетворення кодування, гнучкість парсерів, надійна обробка помилок, пошук і вилучення посилань зі веб‑сторінок та багато іншого.

Бібліотека Beautiful Soup перетворює часто розчаровуюче завдання вилучення даних з документів HTML та XML у простий процес у стилі Python, перетворюючи погано структурований веб‑контент у акуратно організовані дерева розбору, якими можна легко навігувати та шукати за допомогою простих методів. Те, що традиційно займало години ручного кодування, можна виконати за хвилини за допомогою Beautiful Soup. Вона залишається галузевим стандартом для розробників Python, які входять у світ веб‑скрейпінгу. Її простота, у поєднанні з потужністю різних парсерів, робить її неперевершеним вибором для вилучення даних зі статичних веб‑сайтів.

Previous Next

Початок роботи з Beautiful Soup

Рекомендований та найпростіший спосіб встановити Beautiful Soup — використати pip. Будь ласка, використайте наступну команду для плавної інсталяції.

Встановіть бібліотеку Beautiful Soup за допомогою pip

pip install beautifulsoup4 

Ви також можете встановити його вручну; завантажте останні файли релізу безпосередньо зі сторінки Beautiful Soup web page.

Робота з кількома парсерами

Бібліотека Beautiful Soup не виконує весь парсинг сама — натомість вона працює поверх зрілих парсерів, таких як вбудований у Python html.parser, швидкий парсер lxml та браузероподібний html5lib. Залежно від потреб, ви можете віддавати перевагу швидкості або відповідності стандартам. Така архітектура дає вам гнучкість обирати парсер, який найкраще відповідає вашим вимогам, обмінювати швидкість парсингу на гнучкість, випробовувати різні стратегії парсингу без зміни коду Beautiful Soup тощо. Нижче наведено простий код, який показує, як розробники можуть використовувати різні парсери з Beautiful Soup.

Як використовувати кілька парсерів для розбору HTML‑документів у Python‑додатках?

# Using different parsers with Beautiful Soup
html_doc = "

Зразковий вміст

" # Using lxml parser (fast) soup_lxml = BeautifulSoup(html_doc, 'lxml') # Using html5lib parser (slower but more lenient) soup_html5lib = BeautifulSoup(html_doc, 'html5lib') # Using Python's built-in parser soup_builtin = BeautifulSoup(html_doc, 'html.parser')

Витягування посилань з веб-сторінок

Збір посилань — це поширене завдання веб-скрапінгу, особливо корисне для створення веб-сканерів. Відкрита бібліотека Beautiful Soup включає підтримку завантаження веб-сторінок та витягування посилань у Python‑застосунках. Наведений нижче простий приклад коду демонструє отримання живої веб-сторінки за допомогою бібліотеки requests, а потім витягування всіх тегів‑посилань у Python‑застосунках.

Як витягнути посилання з веб‑сторінок за допомогою Python?

from bs4 import BeautifulSoup
import requests

# Fetch a real webpage
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# Extract all links
links = soup.find_all('a')

print(f"Found {len(links)} links:")
for link in links:
    href = link.get('href')
    text = link.get_text().strip()
    print(f"Text: {text} | URL: {href}")

# Filter links by criteria
external_links = []
for link in soup.find_all('a'):
    href = link.get('href')
    if href and href.startswith('http'):
        external_links.append(href)

print(f"\nFound {len(external_links)} external links")

Пошук конкретних HTML-елементів

Однією з найбільших переваг Beautiful Soup є те, наскільки природно вона дозволяє шукати HTML, майже як читати просту англійську. Замість роботи зі складними DOM‑API, ви описуєте, що вам потрібно, і Beautiful Soup знаходить це за вас. Припустимо, ви хочете знайти всі посилання на сторінці. Ви можете використати метод find_all, як показано у наведеному нижче прикладі коду. Метод повертає список усіх тегів‑посилань. Потім ми проходимо їх, щоб витягти URL та текст і отримати видиму назву посилання за допомогою Python API.

Як шукати та витягувати конкретний HTML‑елемент зі сторінки за допомогою Python API?

# Extract all anchor tags
links = soup.find_all('a')

for link in links:
    href = link.get('href')
    text = link.text.strip()
    print(f"Text: {text} | URL: {href}")

Автоматичне оброблення кодування

Однією з найзручніших функцій Beautiful Soup є автоматичне перетворення кодувань. Бібліотека автоматично конвертує вхідні документи у Unicode, а вихідні — у UTF-8, усуваючи одну з найпоширеніших проблем у веб-скрапінгу. Будь ласка, пам’ятайте, що про кодування потрібно думати лише тоді, коли документ не вказує кодування, оскільки Beautiful Soup не може автоматично його визначити. У таких рідкісних випадках ви просто вказуєте початкове кодування вручну.

 Українська