1. Завантаження та парсинг HTML-документів
Короткий огляд функціоналу
Бібліотека requests — це наш "посланець", який вирушає за HTML-кодом веб-сторінок. Вона робить HTTP-запити та доставляє сторінки, наче служба доставки піци, але без "Маргарити" та коробок.
BeautifulSoup, в свою чергу, — це наш "шеф-кухар", який легко розбере отриманий HTML на інгредієнти (теги, атрибути і текст), щоб ми могли їх використати. Він допоможе нам знайти потрібні елементи та зберегти всю важливу інформацію.
Використання бібліотеки requests
Тепер ми готові зробити наш перший HTTP-запит та отримати HTML-код сторінки. Давайте для практики завантажимо сторінку example.com. Цей сайт — справжній динозавр інтернету і ідеально підходить для початку.
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. Це наче відкрити книгу і прочитати її зміст:
from bs4 import BeautifulSoup
# Передаємо вміст HTML-коду у BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# Подивимось, що всередині
print(soup.prettify())
Метод prettify() красиво форматує HTML-код, щоб ви могли його вивчати. У наступному занятті ми почнемо копатися в цьому HTML, як діти в пісочниці. І повернемося додому втомлені, брудні, але щасливі :)
3. Практика: завантаження та аналіз HTML
Щоб закріпити розуміння, давайте виконаємо практичне завдання. Ми спробуємо витягти заголовок і опис зі сторінки example.com. Для цього ми будемо використовувати наші знання HTML та нові знання про BeautifulSoup.
Витягування даних
# Витягування заголовка сторінки
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 перед тим, як починати парсити.
Веб-скрейпінг має багато практичних застосувань: від збору даних для аналізу до автоматичного моніторингу цін на товари. Ці знання можуть бути корисні на співбесідах, де вас можуть запитати про приклади проєктного коду. У реальній практиці, наприклад, маркетологи використовують скрейпінг для моніторингу цін конкурентів, а розробники — для інтеграції з зовнішніми сайтами.
Вам стануть у пригоді знання про веб-скрейпінг і при обробці інформації для новинних агрегаторів і аналітичних систем. Ви зможете автоматизувати рутинні завдання, створюючи скрипти, які самі збирають дані з різних джерел. Давайте далі розвивати наше віртуальне застосування та відчувати себе справжніми майстрами вебу!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ