JavaRush /Курси /Python SELF UA /Парсинг HTML за допомогою BeautifulSoup

Парсинг HTML за допомогою BeautifulSoup

Python SELF UA
Рівень 31 , Лекція 2
Відкрита

1. Завантаження та парсинг HTML-документів

Короткий огляд функціоналу

Бібліотека requests — це наш "посланець", який вирушає за HTML-кодом веб-сторінок. Вона робить HTTP-запити та доставляє сторінки, наче служба доставки піци, але без "Маргарити" та коробок.

BeautifulSoup, в свою чергу, — це наш "шеф-кухар", який легко розбере отриманий HTML на інгредієнти (теги, атрибути і текст), щоб ми могли їх використати. Він допоможе нам знайти потрібні елементи та зберегти всю важливу інформацію.

Використання бібліотеки requests

Тепер ми готові зробити наш перший HTTP-запит та отримати HTML-код сторінки. Давайте для практики завантажимо сторінку example.com. Цей сайт — справжній динозавр інтернету і ідеально підходить для початку.

Python

import requests

url = 'http://example.com'
response = requests.get(url)

# Перевіримо, чи все гаразд
if response.status_code == 200:
    print("Сторінка успішно завантажена!")
else:
    print("Щось пішло не так. Код помилки:", response.status_code)

Ця програма надішле запит на URL і виведе успіх або помилку залежно від відповіді. Якщо все добре, у нас в руках буде HTML-код сторінки у вигляді тексту.

Відстеження кодів помилок

Якщо ви будете автоматизувати парсинг, то часто будете стикатися з тим, що сторінка, яка повинна завантажуватися, не завантажується. Так що аналіз кодів помилок - це обов'язкова частина проєкту, який парсить більше ніж кілька сторінок.

Уся справа в тому, що власники сайтів не дуже люблять коли парсять їхні дані. По-перше, це навантаження на сайт (коли парсяться тисячі сторінок одночасно). По-друге, це їхні дані, і вони на цьому заробляють. Існує дуже багато способів протидії парсингу: CAPTCHA, CloudFlare тощо.

Для бізнесу ідеально, коли ти можеш парсити всіх своїх конкурентів, а тебе ніхто не може. Така собі холодна війна.

Використання BeautifulSoup для парсингу HTML

Отримавши HTML-код, ми можемо розпочати його дослідження за допомогою BeautifulSoup. Це наче відкрити книгу і прочитати її зміст:

Python

from bs4 import BeautifulSoup

# Передаємо вміст HTML-коду у BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Подивимось, що всередині
print(soup.prettify())

Метод prettify() красиво форматує HTML-код, щоб ви могли його вивчати. У наступному занятті ми почнемо копатися в цьому HTML, як діти в пісочниці. І повернемося додому втомлені, брудні, але щасливі :)

3. Практика: завантаження та аналіз HTML

Щоб закріпити розуміння, давайте виконаємо практичне завдання. Ми спробуємо витягти заголовок і опис зі сторінки example.com. Для цього ми будемо використовувати наші знання HTML та нові знання про BeautifulSoup.

Витягування даних

Python

# Витягування заголовка сторінки
title = soup.title.string
print("Заголовок сторінки:", title)

# Витягування головного заголовка (h1)
main_heading = soup.h1.string
print("Головний заголовок:", main_heading)

# Витягування текстового вмісту параграфа
paragraph = soup.find('p').text
print("Перший параграф:", paragraph)

У цьому прикладі ми використовуємо атрибути title, h1, і метод find(), щоб витягнути зі сторінки необхідні шматочки інформації. Ми стаємо кібердетективами, що досліджують докази на місці злочину!

4. Типові помилки

Напевно, у процесі роботи з веб-скрейпінгом ви зіткнетеся з типовими помилками, які можуть включати неправильну обробку HTTP-запитів, некоректне витягування даних або помилки парсингу HTML. Розробка стійких і надійних скриптів вимагає терпіння і практики. Наприклад, завжди перевіряйте код стану (response.status_code), щоб бути впевненими, що ваш запит виконаний успішно. Некоректне використання методів find() і find_all() може призвести до помилок, якщо ви не врахуєте структуру HTML-сторінок. Завжди аналізуйте HTML перед тим, як починати парсити.

Веб-скрейпінг має багато практичних застосувань: від збору даних для аналізу до автоматичного моніторингу цін на товари. Ці знання можуть бути корисні на співбесідах, де вас можуть запитати про приклади проєктного коду. У реальній практиці, наприклад, маркетологи використовують скрейпінг для моніторингу цін конкурентів, а розробники — для інтеграції з зовнішніми сайтами.

Вам стануть у пригоді знання про веб-скрейпінг і при обробці інформації для новинних агрегаторів і аналітичних систем. Ви зможете автоматизувати рутинні завдання, створюючи скрипти, які самі збирають дані з різних джерел. Давайте далі розвивати наше віртуальне застосування та відчувати себе справжніми майстрами вебу!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ