Як написати парсер сайту на Python

В цій статті ми розглянемо, як створити базовий парсер сайту на 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, ось деякі рекомендації:

  1. Вивчити більше про CSS селектори та їх використання в BeautifulSoup для знаходження потрібних елементів.
  2. Ознайомитися з різними методами для навігації по DOM-структурі, такими як .parent, .children, .next_sibling та інші.
  3. Розглянути використання інших бібліотек Python для веб-парсингу, таких як lxml, html5lib, або PyQuery.
  4. Дослідити можливості використання веб-парсерів для автоматичного заповнення форм, роботи з авторизацією на сайтах та обходу захисту від парсингу (наприклад, CAPTCHA).

Крім того, під час написання веб-парсерів важливо враховувати етичні аспекти та дотримуватися правил користування веб-сайтів. Перевіряйте, чи дозволений парсинг та поважайте обмеження на частоту запитів.

З досвідом та дотриманням кращих практик, написання парсерів на Python стане невід’ємною частиною вашого набору навичок, яка допоможе вам збирати та аналізувати дані з Інтернету для різних цілей.

А опанувати професію python розробника ви можете на нашому курсі Python з працевлаштуванням.

Site Footer