В цій статті ми розглянемо, як створити базовий парсер сайту на Python, використовуючи бібліотеки BeautifulSoup і requests. Наш парсер буде здатний збирати інформацію з веб-сторінок та зберігати її для подальшого аналізу.
Що таке веб-парсинг?
Парсинг – це процес екстракції даних з веб-сторінок. Ці дані можуть включати будь-яку інформацію, доступну на веб-сторінці: текст, посилання, зображення, метадані та інше. Веб-парсери використовуються для різноманітних задач, включаючи моніторинг цін, аналіз соціальних медіа, веб-майнінг, веб-аналітику тощо.
Необхідні інструменти
Перш за все, нам потрібно встановити дві бібліотеки Python: requests
і beautifulsoup4
. Це можна зробити за допомогою pip
:
pip install requests beautifulsoup4
Requests
– це бібліотека Python, що дозволяє нам виконувати HTTP-запити, а BeautifulSoup
– потужна бібліотека для парсингу HTML та XML документів.
Початок роботи
Для демонстрації ми напишемо простий веб-парсер, який збере заголовки статей з головної сторінки блогу на умовному домені example.com. Першим кроком буде отримання HTML-коду сторінки. Ми використаємо requests
для цього:
import requests
url = 'https://example.com/blog/'
response = requests.get(url)
Якщо все пройшло гладко, response.text
тепер містить HTML-код головної сторінки блогу.
Парсинг HTML
Тепер, коли у нас є HTML-код сторінки, ми можемо використати BeautifulSoup
для його парсингу:
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
BeautifulSoup
перетворює HTML-рядок у об’єкт, з яким легко працювати, надаючи різні методи для навігації і пошуку в HTML-структурі.
Пошук даних
З BeautifulSoup
ми можемо використовувати CSS селектори для пошуку елементів на сторінці. Для прикладу, давайте знайдемо всі заголовки статей на сторінці. Переглянувши код сторінки, ми бачимо, що заголовки знаходяться в тегах <h2>
, які мають клас blog-title
.
titles = soup.select('h2.blog-title')
select
повертає список всіх знайдених елементів. Якщо нам потрібен тільки перший знайдений елемент, ми можемо використати метод select_one
.
Екстракція даних
Тепер, коли ми знайшли наші заголовки, ми можемо витягнути з них текст:
for title in titles:
print(title.get_text())
Використовуючи метод get_text()
, ми можемо отримати весь текст, що знаходиться всередині елемента, включаючи всі його дочірні елементи.
Збереження даних
Останній крок – це збереження зібраних даних. Ми можемо зберегти їх в файл, базу даних або будь-яке інше місце, залежно від наших потреб. Для простоти давайте збережемо їх у текстовий файл:
with open('titles.txt', 'w') as f:
for title in titles:
f.write(title.get_text() + '\n')
Тепер у нас є простий веб-парсер, який збирає заголовки з блогу і зберігає їх в текстовий файл.
Підсумок
У цій статті ми розглянули основи написання веб-парсера на Python, використовуючи бібліотеки requests
і BeautifulSoup
. Це базовий приклад, але принципи, які ми тут використовували, можуть бути застосовані для написання набагато складніших веб-парсерів. Завдяки Python і його чудовим бібліотекам, парсинг стає простим і доступним інструментом для збору даних з Інтернету.
Якщо ви хочете розширити свої знання та вміння у написанні парсерів на Python, ось деякі рекомендації:
- Вивчити більше про CSS селектори та їх використання в
BeautifulSoup
для знаходження потрібних елементів. - Ознайомитися з різними методами для навігації по DOM-структурі, такими як
.parent
,.children
,.next_sibling
та інші. - Розглянути використання інших бібліотек Python для веб-парсингу, таких як
lxml
,html5lib
, абоPyQuery
. - Дослідити можливості використання веб-парсерів для автоматичного заповнення форм, роботи з авторизацією на сайтах та обходу захисту від парсингу (наприклад, CAPTCHA).
Крім того, під час написання веб-парсерів важливо враховувати етичні аспекти та дотримуватися правил користування веб-сайтів. Перевіряйте, чи дозволений парсинг та поважайте обмеження на частоту запитів.
З досвідом та дотриманням кращих практик, написання парсерів на Python стане невід’ємною частиною вашого набору навичок, яка допоможе вам збирати та аналізувати дані з Інтернету для різних цілей.
А опанувати професію python розробника ви можете на нашому курсі Python з працевлаштуванням.