CoderCastrov logo
CoderCastrov
Парсинг

Парсинг с помощью Python? Почему бы и нет?

Парсинг с помощью Python? Почему бы и нет?
просмотров
6 мин чтение
#Парсинг

В последнее время я работаю над этим потрясающим портфолио, оно посвящено Обзору Emirates ✈. Речь идет об одном из самых больших самолетов в мире - Airbus A380. Угадайте, что? В прошлой неделе (1/6) этот великолепный самолет приземлился в Индонезии. Вы можете в это поверить? Такая редкая возможность, как одна из миллиона, увидеть такое невероятное событие! И знаете что? Это меня так взволновало, что я решил погрузиться в обзор и посмотреть, что люди говорят об этом.

Но, прежде чем мы погрузимся в это, позвольте мне показать вам, как распарсить некоторые данные с удивительного https://www.airlinequality.com/airline-reviews/emirates/ с помощью Python. Поверьте мне, это супер круто! Так что возьмите свою записную книжку, пристегните ремни и следуйте за мной. Давайте сделаем это! 😎

Примечание: Этот проект является демонстрацией моих навыков анализа данных и не имеет официальной связи с Emirates или AirlineQuality.com ✍️



Возьми свою экипировку!

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

  • Selenium 🕸️Твой надежный сопилот в автоматизации веба. С помощью Selenium ты с легкостью будешь перемещаться по веб-страницам, собирать ценные данные и парить над динамическими веб-сайтами, как опытный пилот.
  • BeautifulSoup4 🍲В отличие от обычного супа, этот особенный суп - твой секретный рецепт для извлечения самых сочных кусочков с веб-страниц. Его простой в использовании синтаксис позволяет тебе погрузиться в составляющие веб-страницы и подать структурированные данные на серебряном блюде.
  • DateTime⏰Готовься синхронизировать свои часы кодирования с точностью. DateTime дает тебе полный контроль над датами, временем и часовыми поясами в Python. Как точный хронометр, DateTime обеспечивает плавное и точное управление временем на протяжении всего твоего программного приключения.
  • Pandas 🐼Твоя надежная стюардесса для работы с огромными объемами данных. Pandas эффективно управляет и организует наборы данных, давая тебе возможность легко манипулировать, анализировать и покорять свои задачи с данными.
  • Numpy 🔢Математический навигатор в твоем кодовом кокпите. Numpy поднимает математические операции на новый уровень, позволяя выполнять сложные математические операции, работать с большими массивами и использовать мощные числовые алгоритмы.
  • Pickle 🥒Готовься к плавному полету с Pickle на борту. Этот замечательный пакет действует как надежный спутник в кабине пилота, сохраняя и восстанавливая твои объекты Python с высокой точностью. Независимо от того, сохраняешь ли ты сложные структуры данных или архивируешь важные данные полета, Pickle гарантирует, что твои объекты хранятся в безопасности и готовы взлететь в кодовое небо.

С помощью всего этого одной строкой кода ты можешь установить все необходимые пакеты сразу.

!pip install selenium beautifulsoup4 datetime pandas numpy pickle

конечно, сначала нужно импортировать их.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium import webdriver
from bs4 import BeautifulSoup
from datetime import datetime

import pandas as pd
import numpy as np
import pickle

После этого давай взглянем на веб-сайт.

Отзывы клиентов - SKYTRAX

Читайте проверенные отзывы клиентов [название], просматривайте фотографии [название], проверяйте рейтинги и мнения клиентов о стандартах [название].

www.airlinequality.com

Как видно, настройки по умолчанию для этого веб-сайта отображают только 10 отзывов за раз. Чтобы упростить процесс парсинга, давайте попробуем расширить настройки, нажав кнопку "100". Таким образом, мы сможем собрать больше данных за один раз и оптимизировать наше парсинговое приключение. Не волнуйтесь, это всего лишь одно простое нажатие! 👆

Очевидно, что ссылка на веб-сайт изменилась на

https://www.airlinequality.com/airline-reviews/emirates/?sortby=post_date%3ADesc&pagesize=100.

Исходя из этой картинки, мы можем подтвердить, что на этом веб-сайте содержится 2269 отзывов. И я подумал, почему бы нам не рискнуть и вручную настроить параметр "pagesize"? Кто знает, может быть возможно отобразить ВСЕ отзывы сразу. В конце концов, мы не узнаем, пока не попробуем, верно? 🤪

Давайте изменить параметр "pagesize" на 2269!

ps. Я выполнил парсинг веб-сайта 11 июня 2023 года. Обратите внимание, что информация могла измениться со времени

БА-БАХ💥! Работает! Поздравляю с выполнением нашего первого шага. Сохраним эту ссылку в переменную с названием "url".

# Укажите URL для парсинга
url = 'https://www.airlinequality.com/airline-reviews/emirates/page/1/?sortby=post_date%3ADesc&pagesize=2269'

Пришло время "скачать" веб-сайт! 🤓



Парсинг веб-сайта

Прежде чем мы погрузимся в увлекательную часть, убедитесь, что у вас загружен и установлен ChromeDriver ⏬

Вы можете скачать правильную версию для вашего Google Chrome по этой ссылке: Скачать ChromeDriver.

Выбор правильной версии обеспечивает гладкую совместимость между ChromeDriver и вашим браузером. После успешной установки ChromeDriver мы будем готовы продолжить с кодом 👩‍💻👨‍💻

Для удобства доступа я рекомендую извлечь ChromeDriver.exe в ту же директорию, где у вас сохранен файл с кодом. Таким образом, вы можете легко ссылаться на него, не указывая полный путь каждый раз. Вот пример:

# Установите путь к исполняемому файлу chromedriver
path_chromedriver = ("./chromedriver_win32/chromedriver.exe")

После этого давайте запустим драйвер и получим доступ к URL-адресу. Вот пример, чтобы помочь вам начать:

# Инициализируем Chrome WebDriver
driver = webdriver.Chrome(path_chromedriver)

# Открываем URL-адрес в драйвере
driver.get(url)

После запуска кода появится новое "песочнице" окно Chrome, которым будет управлять наш код. Интересно, верно? 🤯

Затем нам нужно подождать некоторое время, пока веб-сайт полностью загрузится. После завершения процесса загрузки мы можем приступить к разбору HTML с помощью следующего кода:

# Создаем объект BeautifulSoup для разбора исходного кода страницы
result = BeautifulSoup(driver.page_source, 'html.parser')

# Закрываем драйвер
driver.close()

И чтобы получить доступ к файлу и загрузить данные обратно, вы можете использовать этот код:

# Сохраняем результат в файл .pkl
with open('result.pkl', 'wb') as file:
    pickle.dump(result, file)

Вы можете получить доступ к файлу снова, используя этот код:

# Открываем файл .pkl в двоичном режиме
with open('result.pkl', "rb") as file:
    result = pickle.load(file)

Поздравляю, пилот! Вы успешно разобрали HTML 👨‍✈️👩‍✈️

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



Конец нашего путешествия 😞

По мере того, как мы подходим к концу этого поста, пришло время сказать прощай. Но не волнуйтесь, наше путешествие не заканчивается здесь! Мы собрали множество отзывов о компании Emirates, и теперь пришло время углубиться и обнаружить некоторые увлекательные идеи. 🚀✨

Знаете, мы можем сделать некоторые интересные вещи с этими данными отзывов. Одна из них называется анализом настроений. Это похоже на определение чувств и мнений, выраженных пассажирами в их отзывах. Понимая, как люди чувствовали себя во время своего опыта, мы можем узнать, что их сделало счастливыми или что можно улучшить. 😄😡😢🤔

И это еще не все! Мы также можем использовать нечто под названием "Латентное размещение Дирихле" (LDA). Это помогает нам найти общие темы и темы, которые возникают в отзывах. Мы увидим, о чем больше всего говорят люди и что действительно важно для них. 📊

Итак, в наших следующих постах мы погрузимся в увлекательный мир анализа этих данных. Мы будем использовать эти методы, чтобы обнаружить интересные идеи и раскрыть секреты опыта с Emirates. Приготовьтесь к удивительному приключению, где мы исследуем увлекательный мир анализа данных в авиации. Это похоже на решение головоломки и открытие новых вещей по ходу дела. 🧩

До новых встреч, пусть ваше небо будет полно бесконечных возможностей, а ваши приключения поднимутся на новые высоты! Безопасных путешествий, коллеги авиационные энтузиасты! 😎

Если вы считаете этот пост ценным, пожалуйста, не стесняйтесь нажать кнопку "Поделиться"! 👀


На самом деле, у кода, который я создал, все еще есть одна проблема.
Он не мог обнаружить рейтинг N/A, указанный респондентами
(рейтинг внутри круга). В конце концов,
мне пришлось исправить это вручную с помощью Excel, потому что только один человек
поставил рейтинг N/A.

😞