Из этого руководства вы узнаете следующее:
- Что такое блокноты Jupyter Notebook
- Почему вам следует использовать блокноты Jupyter Notebook для веб-парсинга
- Пошаговое руководство по использованию этого приложения
- Примеры использования блокнотов Jupyter Notebook для парсинга онлайн-данных
Давайте рассмотрим эти вопросы подробнее!
Что такое блокноты Jupyter Notebook?
В контексте Jupyter, блокнот — это «документ, которым можно делиться, в котором сочетаются компьютерный код, описания на простом языке, данные, диаграммы, графики и рисунки, а также интерактивные элементы управления».
Блокноты предоставляют интерактивную среду для прототипирования и объяснения кода, изучения и визуализации данных и обмена идеями. В частности, блокноты, созданные приложением Jupyter Notebook App , называются блокнотами Jupyter.
Приложение Jupyter Notebook — это серверно-клиентское приложение, которое позволяет редактировать и запускать документы блокнотов с помощью веб-браузера. Его можно запустить на локальном ПК или установить на удаленном сервере.
Блокноты Jupyter Notebook содержат так называемое «ядро», которое представляет собой «вычислительный движок», выполняющий код из документа-блокнота. В частности, ядро ipython
выполняет код Python (но существуют и ядра на других языках):
Приложение Jupyter Notebook имеет панель управления, которая поддерживает типичные операции, такие как отображение локальных файлов, открытие существующих документов-блокнотов, управление ядрами документов и многие другие:
Зачем нужны блокноты Jupyter Notebook в веб-парсинге?
Блокноты Jupyter Notebook предназначены для анализа данных и исследований и разработок и полезны для просмотра веб-страниц, поскольку они выполняют следующие функции:
- Интерактивная разработка: пишите и выполняйте код небольшими управляемыми фрагментами, называемыми ячейками. Каждая ячейка может работать независимо от других ячеек. Это гарантирует упрощение тестирования и отладки.
- Организация: используйте разметку в ячейках для документирования кода, объяснения логики и добавления примечаний или инструкций.
- Интеграция с инструментами анализа данных: после парсинга вы можете сразу же очищать, обрабатывать и анализировать данные в Python, поскольку блокноты Jupyter Notebook интегрируются с такими библиотеками, как
pandas
,matplotlib
,seaborn
и другими. - Воспроизводимость и совместное использование: блокноты Jupyter можно легко передавать другим в виде файлов
.ipynb
(стандартный формат) или конвертировать в другие форматы, такие как resT, Markdown и другие.
Плюсы и минусы
Вот плюсы и минусы использования блокнотов Jupyter Notebook для парсинга данных:
👍Плюсы:
- Пошаговая отладка: поскольку каждая ячейка может работать независимо, вы можете разделить код извлечения данных на разные ячейки и запустить их. Это позволяет отлаживать небольшие фрагменты кода, запуская ячейки и перехватывая ошибки на уровне ячеек.
- Документация: используйте Markdown в ячейках для создания файлов, в которых можно документировать работу кода парсинга, а также описывать логику принятых решений.
- Гибкость: в блокнотах Jupyter Notebook можно комбинировать веб-парсинг, очистку данных и анализ в одной среде. Это позволяет переключаться между различными средами, например записывать скрипт очистки в IDE и анализировать данные в другом месте.
👎Минусы:
- Неидеально подходит для крупномасштабных проектов: блокноты Jupyter обычно представляют собой объемные документы. Это не делает их идеальным выбором для крупномасштабных проектов по парсингу данных.
- Ограничения производительности: блокноты обычно работают медленно или не реагируют на запросы при работе с большими наборами данных или выполнении длинных скриптов. Узнайте больше о как ускорить веб-парсинг.
- Неидеально подходит для автоматизации: если вам нужно запустить парсер по расписанию или развернуть его как часть более крупной системы, блокноты Jupyter Notebook — не лучший выбор. Причина в том, что блокноты Jupyter Notebook в первую очередь предназначены для интерактивного ручного выполнения ячеек.
Как использовать блокноты Jupyter Notebook для веб-парсинга: пошаговое руководство
Теперь вы знаете, почему вам стоит использовать блокноты Jupyter Notebook для веб-парсинга. А теперь вы увидите, как их можно использовать в реальном сценарии парсинга!
Предварительные условия
Чтобы повторить действия из этого руководства, ваша система должна соответствовать следующим предварительным требованиям:
- Python 3.6 или более новая версия: подойдет любая версия Python 3.6 или более новая. В частности, мы установим зависимости через
pip
, который уже установлен в любой версии Python выше 3.4.
Шаг 1. Настройка среды и установка зависимостей
Предположим, вы называете главную папку своего проекта scraper/
. В конце этого шага папка будет иметь следующую структуру:
scraper/
├── analysis.ipynb
└── venv/
Где:
analysis.ipynb
— это блокнот Jupyter, содержащий весь код.venv/
содержит виртуальное окружение.
Вы можете создать каталог виртуальной среды venv/
следующим образом:
python -m venv venv
Чтобы активировать его, в Windows запустите:
venv\Scripts\activate
Аналогично, в macOS/Linux выполните:
source venv/bin/activate
В активированной виртуальной среде установите все необходимые библиотеки для этого руководства:
pip install requests beautifulsoup4 pandas jupyter seaborn
Эти библиотеки служат следующим целям:
requests
: для выполнения HTTP-запросов.beautifulsoup4
: для парсинга документов HTML и XML.pandas
: мощная библиотека обработки и анализа данных, идеально подходящая для работы со структурированными данными, такими как CSV-файлы или таблицы.jupyter
: интерактивная веб-среда разработки для запуска и совместного использования кода Python, отлично подходящая для анализа и визуализации.seaborn
: библиотека визуализации данных Python на основе Matplotlib.
Чтобы создать файл analysis.ipynb
, сначала нужно войти в папку scraper/
:
cd scraper
Затем инициализируйте новый блокнот Jupyter с помощью следующей команды:
jupyter notebook
Теперь вы можете получить доступ к приложению Jupyter Notebook через locahost8888
.
Создайте новый файл, нажав на опцию «Создать > Python 3»:
Новый файл будет автоматически называться untitled.ipynb
. Вы можете переименовать его на панели управления:
Прекрасно! Теперь у вас все готово к веб-парсингу с помощью блокнотов Jupyter Notebook.
Шаг 2. Определение целевой страницы
Выполняя инструкции этого руководства, вы выполните парсинг данных с веб-сайта worldometer. В частности, целевая страница посвящена выбросам углексилого газа в США в год и содержит следующие табличные данные:
Шаг 3. Извлечение данных
Вы можете получить данные с целевой страницы и сохранить их в CSV-файле следующим образом:
import requests
from bs4 import BeautifulSoup
import csv
# URL of the website
url = "https://www.worldometers.info/co2-emissions/us-co2-emissions/"
# Send a GET request to the website
response = requests.get(url)
response.raise_for_status()
# Parse the HTML content
soup = BeautifulSoup(response.text, "html.parser")
# Locate the table
table = soup.find("table")
# Extract table headers
headers = [header.text.strip() for header in table.find_all("th")]
# Extract table rows
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)
# Save the data to a CSV file
csv_file = "emissions.csv"
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"Data has been saved to {csv_file}")
Вот что делает этот код:
- Он использует библиотеку
requests
для отправки запроса GET на целевую страницу с помощью методаrequests.get ()
и проверяет ошибки запроса с помощью методаresponse.raise_for_status()
. - Он использует
BeautifulSoup
для парсинга HTML-контента путем создания экземпляра классаBeautifulSoup()
и поиска селектора таблицыс помощью метода
soup.find()
. В частности, этот метод полезен для поиска таблицы, содержащей данные. Если вы не знакомы с этим синтаксисом, прочитайте наше руководство по веб-парсингу BeautifulSoup. - Для извлечения заголовка таблицы используется средства анализа списков.
- В нем цикл
for
используется для извлечения всех данных из таблицы, пропуская строку заголовка. - Наконец, оно создает новый файл CVS и добавляет туда все полученные данные.
Этот код можно вставить в ячейку и запустить его, нажав SHIFT+ENTER
.
Другой способ запустить ячейку — выбрать ее и нажать кнопку «Выполнить» на панели управления:
Отлично, теперь сообщение «Данные сохранены в emissions.csv» (Data has been saved to emissions.csv) уведомляет вас об успешной операции извлечения данных.
Шаг 4. Убедитесь, что данные верны
Теперь вы сохранили данные в файле CVS. Откройте его и посмотрите, все ли прошло хорошо, — иногда могут возникнуть проблемы с преобразованиями. Для этого вы можете ввести следующий код в новую ячейку:
import pandas as pd
# Load the CSV file into a pandas DataFrame
csv_file = "emissions.csv"
df = pd.read_csv(csv_file)
# Print the DataFrame
df.head()
Этот код выполняет следующие действия:
- Открывает CSV-файл в виде фрейма данных благодаря
pandas
с помощью методаpd.read_csv()
. - Печатает первые пять строк фрейма данных с помощью метода
df.head()
.
Вот ожидаемый результат:
Превосходно! Осталось только представить извлеченные данные в нужной форме.
Шаг 5. Визуализация данных
Теперь вы можете проводить любой анализ данных по своему усмотрению. Например, вы можете использовать seaborn
для создания линейной диаграммы, отражающей динамику выбросов CO2 за последние годы. Сделайте это следующим образом:
import seaborn as sns
import matplotlib.pyplot as plt
# Load the CSV file into a pandas DataFrame
csv_file = "emissions.csv"
df = pd.read_csv(csv_file)
# Clean column names be removing extra spaces
df.columns = df.columns.str.strip().str.replace(' ', ' ')
# Convert 'Fossil CO2 Emissions (tons)' to numeric
df['Fossil CO2 Emissions (tons)'] = df['Fossil CO2 Emissions (tons)'].str.replace(',', '').astype(float)
# Ensure the 'Year' column is numeric
df['Year'] = pd.to_numeric(df['Year'], errors='coerce')
df = df.sort_values(by='Year')
# Create the line plot
plt.figure(figsize=(10, 6))
sns.lineplot(data=df, x='Year', y='Fossil CO2 Emissions (tons)', marker='o')
# Add labels and title
plt.title('Trend of Fossil CO2 Emissions Over the Years', fontsize=16)
plt.xlabel('Year', fontsize=12)
plt.ylabel('Fossil CO2 Emissions (tons)', fontsize=12)
plt.grid(True)
plt.show()
Вот что делает этот код:
- Он использует
pandas
для следующихз целей:- Открывание CSV-файла.
- Очищение имен столбцов посредством удаления лишних пробелов с помощью метода
df.columns.str.strip().str.replace(' ', ' ')
(если вы его не используете, в этом примере в коде появятся ошибки). - Получает доступ к столбцу «Выбросы углекислого газа из ископаемого топлива (в тоннах)» и преобразует данные в числа с помощью метода
df['Fossil CO2 Emissions (tons)'].str.replace(',', '').astype(float)
. - Открывает столбец «Годы», преобразует значения в числа с помощью метода
pd.to_numeric()
и сортирует значения в порядке возрастания с помощью методаdf.sort_values()
.
- Он использует библиотеки
matplotlib
иseaborn
(которые построены на основеmatplotlib
, поэтому они устанавливаются при установкеseaborn
) для создания фактического графика.
Вот ожидаемый результат:
Ура! Вот насколько эффективен парсинг с помощью блокнотов Jupyter Notebook.
Шаг 6. Соберите все воедино
Вот как выглядит финальный документ веб-парсинга с помощью Jupyter Notebook:
Обратите внимание на наличие разных блоков, у каждого из которых особые выдаваемые данные.
Примеры использования веб-парсинга с помощью Jupyter Notebook
Теперь давайте рассмотрим варианты использования блокнотов Jupyter Notebook при веб-парсинге!
Руководства
Не забывайте, что каждая ячейка в блокноте Jupyter Notebook может быть выполнена независимо. Благодаря добавленной поддержке Markdown библиотека становится отличным инструментом для создания пошаговых руководств.
Например, можно чередовать ячейки, содержащие код, и ячейки, объясняющие логику и аргументы, лежащие в его основе. Блокноты Jupyter Notebook особенно полезны в веб-парсинге. Его файлы-блокноты можно использовать для создания учебных пособий для начинающих разработчиков, помогая им пройти каждый этап процесса.
Исследования и разработки (НИОКР)
Благодаря своей интерактивности и возможности простого экспорта для совместной работы блокноты Jupyter Notebook идеально подходят для исследований и исследований и разработок. Это особенно актуально для веб-парсинга. Например, при парсинге веб-сайтов, требующих нескольких раундов проб и ошибок, вы можете хранить все тесты в одном блокноте и использовать Markdown для выделения успешных тестов.
Исследование данных
Библиотека Jupyter была специально разработана для исследования и анализа данных. Это также делает ее идеальным инструментом для веб-парсинга в целях машинного обучения.
Этот вариант использования напрямую относится к приведенному выше примеру. Вы получили данные с веб-сайта и немедленно проанализировали их в одной и той же среде программирования.
Заключение
Из этого поста вы узнали, как блокноты Jupyter Notebook могут стать мощным инструментом для веб-парсинга, поскольку предоставляют интерактивную и гибкую среду для извлечения и анализа данных. Однако когда дело доходит до масштабирования операций веб-парсинга или автоматизации задач, блокноты Jupyter Notebook могут оказаться не самым эффективным решением.
Вот тут-то и пригодятся наши веб-парсеры. Независимо от того, являетесь ли вы разработчиком, ищущим решения на основе API, или тем, кому нужен вариант без программирования, наши веб-парсеры предназначены для упрощения и улучшения ваших усилий по сбору данных. Благодаря таким функциям, как выделенные конечные точки для более 100 доменов, обработка массовых запросов, автоматическая ротация IP-адресови решение капч, вы можете легко и масштабно извлекать структурированные данные. Создайте бесплатную учетную запись Bright Data сегодня, чтобы опробовать наши решения для парсинга и протестировать наши прокси!
Кредитная карта не требуется