Вебскрапінг за допомогою Jupyter Notebook

Вебскрапінг за допомогою Jupyter Notebook

У цьому посібнику я покажу вам, як використовувати 🌠Jupyter Notebooks🌠 для вебскрапінгу. Ми крок за кроком розберемо все — від написання коду для скрапінгу до розуміння даних і створення цінних візуалізацій. Повірте, це зробить ваші завдання з вебскрапінгу значно простішими та ефективнішими! Почнімо.

Що таке Jupyter Notebooks?

Jupyter Notebooks — це інтерактивні документи, що поєднують живий код, візуалізації та наративний текст в одному документі, яким легко ділитися. Їх широко використовують у data science, machine learning і дослідженнях завдяки гнучкості в реальному часі та можливості документувати роботу. У Jupyter Notebooks можна писати код Python у невеликих комірках, запускати їх незалежно та одразу бачити результат.

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

No-Code Alternatives

Ви можете переглянути мою статтю, в якій наведено найкращі no-code вебскрапери. Or, you can go over this TL;DR:

  1. Bright Data — Інструмент корпоративного рівня для високонавантаженого вилучення даних.
  2. Octoparse — Гнучкий мультитул із безплатними та преміум-планами.
  3. ParseHub — Підходить для новачків, хороший безплатний план, є певні баги.
  4. Apify — Готові шаблони, чудово підходять для нішевих сценаріїв використання.
  5. Вебскрапер — Локалізований вебскрапінг через розширення браузера, зручний у використанні.

Я не пов’язаний із жодним із них. А тепер повернімося до Jupyter 🌟!

Навіщо використовувати Jupyter Notebook для вебскрапінгу?

Jupyter Notebooks особливо добре підходять для вебскрапінгу з кількох причин:

Interactive Development

Інтерактивна природа Jupyter дає змогу писати та виконувати код невеликими фрагментами, які називаються комірками. Це означає, що ви можете тестувати окремі частини вашого коду для вебскрапінгу, перевіряти результати та за потреби їх коригувати. Такий ітеративний підхід допомагає швидко виявляти й виправляти проблеми.

Документація та пояснення

За допомогою функції Markdown у Jupyter Notebooks ви можете документувати кожен крок процесу простим текстом, пояснювати логіку коду та додавати примітки. Коли ви повертаєтеся до нього пізніше, ваша робота стає зрозумілішою для інших (або для вас самих). Це чудовий спосіб створювати навчальні матеріали та ділитися знаннями.

Аналіз даних і візуалізація

Після того як ви зібрали дані, Jupyter Notebook дає змогу обробляти, аналізувати та візуалізувати їх у тому самому середовищі. Ви можете змінювати дані та створювати змістовні візуалізації за допомогою таких бібліотек, як pandas, matplotlib і seaborn.

Відтворюваність і поширення

Jupyter Notebooks можна легко поширювати як файли .ipynb, щоб інші могли переглядати й запускати код у своїх системах. Ви також можете експортувати нотатники в інші формати, наприклад HTML або PDF, щоб подавати результати в більш відшліфованому вигляді.

Як використовувати Jupyter Notebook для вебскрапінгу?

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

Крок 1: Встановіть Python і Jupyter

Переконайтеся, що у вас є Python 3.6 or higher встановлено на вашому комп’ютері. Якщо ні, ви можете завантажити його з офіційного сайту Python.

Після встановлення Python ви можете встановити Jupyter Notebooks за допомогою pip, менеджер пакетів Python.

pip install jupyter

Крок 2: Створіть віртуальне середовище

Гарна практика — створити для проєкту віртуальне середовище, щоб упорядкувати залежності. Ви можете створити нове віртуальне середовище за допомогою такої команди:

python -m venv scraper

Потім активуйте середовище:

  • Windows: scraper\Scripts\activate
  • macOS/Linux: source scraper/bin/activate

Крок 3: Встановіть потрібні бібліотеки

Далі встановіть необхідні бібліотеки для вебскрапінгу та аналізу даних. До цих бібліотек належать requestsBeautifulSouppandas, і seaborn для вебскрапінгу та візуалізації даних.

pip install requests beautifulsoup4 pandas seaborn

Після встановлення бібліотек ви можете запустити Jupyter Notebook за допомогою:

jupyter notebook

Ця команда відкриє панель Jupyter у вашому браузері, де ви зможете створити новий notebook і почати писати код для вебскрапінгу.

Покроковий вебскрапінг у Jupyter Notebook

Тепер, коли все налаштовано, перейдемо до процесу вебскрапінгу за допомогою Jupyter Notebooks.

Крок 1: Визначте цільовий вебсайт

У цьому туторіалі ми збиратимемо дані з вебсайту під назвою Worldometer. Цей вебсайт надає детальну статистику за різними глобальними темами, зокрема щодо викидів CO2.

Сторінка, яку ми хочемо зібрати, містить таблицю про викиди CO2 у Сполучених Штатах.

Крок 2: Надсилання HTTP-запитів для отримання даних

Щоб зібрати дані, спочатку потрібно надіслати HTTP-запит до сервера вебсайту. Ми використаємо requests бібліотеку для цього. Ось як можна отримати вміст сторінки:

import requests
# URL of the target website
url = 'https://www.worldometers.info/co2-emissions/us-co2-emissions/'
# Send a GET request to the website
response = requests.get(url)
# Check if the request was successful
if response.status_code == 200:
print('Вебсторінку успішно отримано!')
else:
print('Не вдалося отримати сторінку')

Крок 3: Розберіть HTML-вміст

Після отримання вмісту сторінки нам потрібно витягти дані, які нас цікавлять. Ми використаємо BeautifulSoup щоб розібрати HTML і знайти таблицю даних.

from bs4 import BeautifulSoup
# Parse the HTML content
soup = BeautifulSoup(response.text, 'html.parser')
# Find the table containing the CO2 emissions data
table = soup.find('table')

Крок 4: Витягніть табличні дані

Далі нам потрібно витягти заголовки та рядки з таблиці. Ми можемо пройтися циклом по кожному рядку таблиці й зібрати дані в список.

# Extract the table headers
headers = [header.text.strip() for header in table.find_all('th')]
# Extract the rows of data
rows = []
for row in table.find_all('tr')[1:]: # Skip the header row
cells = row.find_all('td')
row_data = [cell.text.strip() for cell in cells]
rows.append(row_data)
# Print the headers and first row to check the data
print(заголовки)
print(rows[0])

Крок 5: Збереження даних у CSV-файл

Щойно ви отримаєте дані у структурованому форматі, ви можете зберегти їх у CSV файл для подальшого аналізу. Ми використаємо вбудований у Python csv модуль для цього.

import csv
# Define the output CSV file
csv_file = 'co2_emissions.csv'
# Write the data to the CSV file
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(headers) # Write headers
writer.writerows(rows) # Write rows
print(f"Дані збережено в {csv_file}")

Крок 6: Аналізуйте дані

Тепер, коли дані збережено у CSV-файл, ми можемо use pandas щоб завантажити їх у DataFrame для зручного аналізу.

import pandas as pd
# Load the data into a pandas DataFrame
df = pd.read_csv(csv_file)
# Display the first few rows of the data
df.head()

Крок 7: Візуалізація даних

Наостанок візуалізуємо дані за допомогою seaborn and matplotlib. Наприклад, ми можемо створити лінійний графік, щоб показати, як змінювалися викиди CO2 з роками.

import seaborn as sns
import matplotlib.pyplot as plt
# Convert 'Fossil CO2 Emissions' column to numeric
df['Викиди Fossil CO2 (тонн)'] = df['Викиди Fossil CO2 (тонн)'].str.replace(',', '').astype(float)
# Ensure the 'Year' column is numeric
df['Рік'] = pd.to_numeric(df['Рік'], errors='coerce')
# Sort the data by year
df = df.sort_values(by='Рік')
# Create a line plot of CO2 emissions over the years
plt.figure(figsize=(10, 6))
sns.lineplot(data=df, x='Рік', y='Викиди Fossil CO2 (тонн)', marker='o')
plt.title('CO2 Emissions in the U.S. Over the Years', fontsize=16)
plt.xlabel('Рік', fontsize=12)
plt.ylabel('Викиди Fossil CO2 (тонн)', fontsize=12)
plt.grid(True)
plt.show()

Випадки використання Jupyter Notebooks у вебскрапінгу

Jupyter Notebooks ідеально підходять для багатьох сценаріїв вебскрапінгу, особливо коли в одному місці поєднуються вебскрапінг, аналіз і візуалізація. Ось кілька варіантів використання:

Educational Purposes

Jupyter Notebooks чудово підходять для створення інтерактивних навчальних посібників. Ви можете проводити початківців через вебскрапінг, пояснюючи код і показуючи результати в реальному часі.

Дослідження та аналіз даних

Jupyter пропонує чудове середовище для data scientists або дослідників, щоб досліджувати зібрані дані. Ви можете швидко ітеративно опрацьовувати код, очищати дані та візуалізувати тренди або закономірності.

Прототипування та тестування

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

Conclusion

Вебскрапінг у Jupyter Notebooks — це потужний підхід, який поєднує збір даних, аналіз і візуалізацію в одному середовищі. Інтерактивність Jupyter Notebooks дає змогу легко тестувати, налагоджувати та документувати код, що робить його чудовим інструментом для завдань вебскрапінгу.

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

Є запитання? Пишіть у коментарях!

Схожі записи