Собрать данные отеля с помощью Python
Опубликовано: 2018-08-21Бостонский туристический веб-сайт, основанный в 2000 году, является одним из самых популярных туристических порталов по всему миру. Но с таким количеством пользователей, отелей, бронирований и отзывов вы можете понять объем генерируемых данных о путешествиях. Итак, давайте посмотрим, что делать с этими данными и как собирать данные об отелях с помощью python .
Какую выгоду вы можете извлечь, соскребая данные об отелях ?
Мы узнали некоторые важные факты, связанные с мега-гигантом мировой туристической индустрии бронирования. Теперь важно то, как вы можете извлечь выгоду из сканирования и парсинга? Ну, в отличие от веб-сайта, вы можете обслуживать только людей в определенной стране или, может быть, даже в городе или населенном пункте. Может быть сложно составить карту каждого домика и отеля, особенно если вы только начинаете свой бизнес. Если вы просканируете данные с этого сайта, вы получите различную информацию о каждом отеле, например:
- ФИО
- Репрезентативное изображение
- Полный адрес
- Ценовой диапазон номеров
- Рейтинги
- Отзывы
Имея так много данных, вы можете легко отслеживать цены ваших конкурентов и понимать, что пользователи говорят о различных свойствах через отзывы. Ниже приведены важные области применения данных о ценах и отзывов клиентов:
- Конкурентное ценообразование и информация о ценах на основе данных о ценах
- Обеспечение того, чтобы OTA соответствовали ценообразованию и согласованности вашего бренда.
- Понимание движения запасов в зависимости от сезона и местоположения
- Мониторинг бренда для управления репутацией в Интернете
- Понимание потребительских предпочтений
Сегодня мы покажем вам, как сканировать все вышеупомянутые данные в формате JSON для конкретного отеля, если у вас есть URL-адрес.
Получив данные в формате JSON, вы можете хранить их в собственной базе данных NoSQL и использовать по мере необходимости. Если вам нужны цены, вы можете получить доступ только к цене, когда вам нужно показать кому-то репрезентативное изображение, вы тоже можете это сделать и так далее. Вы можете продолжать очищать и добавлять в свою базу данных, пока вы создаете систему для обновления исторических данных, сохраняя список ранее очищенных URL-адресов отелей. Такая крупномасштабная система может быть построена с помощью опытных поставщиков решений для парсинга веб-страниц, таких как PromptCloud.
Итак, начнем с основ.
1. Настройка редактора исходного кода
Чтобы скопировать и отредактировать приведенный ниже фрагмент кода, вам понадобится редактор кода или IDE. Основное различие между ними заключается в том, что редактор кода позволит вам редактировать код любого языка программирования, и вы можете запустить код из командной строки после редактирования и сохранения кода. Однако в IDE (интегрированной среде разработки), такой как PyCharm, у вас будут такие опции, как редактор исходного кода, инструменты автоматизации для сборки и отладчик. Существует несколько бесплатных опций как для IDE, так и для редакторов кода, таких как Pycharm, Sublime и Atom. Начать работу с Atom проще, поскольку он предоставляет дополнительные функции, которые можно найти в IDE, путем установки дополнительных пакетов для разных языков программирования. Это ссылка на атом- https://atom.io/

Посетив их веб-сайт, вы увидите, что они уже определили вашу операционную систему, а также ее совместимость (32-разрядную или 64-разрядную). В зависимости от этого они предоставят вам последнюю версию своего редактора. Просто нажмите на кнопку Скачать.
Многие люди используют Git, популярное программное обеспечение для управления версиями, чтобы отслеживать свой код. Если вы тоже его используете, атом обеспечивает потрясающую интеграцию с GitHub.
Установочный файл атома будет иметь размер около 150 МБ, и после его загрузки вы можете щелкнуть по нему, чтобы увидеть всплывающее окно, показанное ниже. Он останется во время установки, поэтому вам, возможно, придется подождать минуту или две.

2. Установщик атома
После установки Atom вы также можете установить некоторые пакеты, как мы обсуждали ранее, которые предоставят вам некоторые функции IDE. Это облегчит вам написание кода благодаря таким функциям, как автозаполнение и простая отладка. Нажмите CTRL + запятая-кнопка (одновременно нажмите кнопку управления и запятую). Или вы можете пойти долгим путем и выбрать « Файл » >> « Настройки » >> « Установить ». Здесь вы можете ввести Python в строке поиска и получить для себя различные пакеты, такие как autocomplete-python , которые помогут вам давать предложения по мере ввода, чтобы автоматически дополнять ваш код.

Если у вас есть какие-либо существующие файлы кода на вашем компьютере (например, файлы java или файлы ruby), вы можете загрузить их в атом и посмотреть, как все это выглядит. В Atom есть много других функций, таких как изменение темы, но часть исследования остается за вами, что можно сделать с небольшой помощью Google.
3. Установка Python
Рекомендуется некоторый базовый опыт программирования на любом объектно-ориентированном языке программирования. Тем не менее, это учебное пособие поможет вам запустить парсер и получить ваши данные, чтобы вы могли извлечь данные, чтобы получить базовое понимание. Мы рассмотрим все, от установки до просмотра JSON .
Сначала вам нужно перейти по следующей ссылке — https://www.python.org/downloads.

Нажмите кнопку Download Python 3.7.0 . Отображаемая версия может быть выше, в зависимости от того, через сколько дней вы проверяете веб-сайт. Кроме того, в зависимости от вашей операционной системы, Linux, Mac или Windows версия Python может отличаться.
Как только установочный файл загружен, вы можете нажать на него и выбрать «Установить». Следуйте инструкциям и выберите, куда вы хотите установить Python. Вот скриншот установочного файла для 32-разрядной версии Python 3.7.0 Убедитесь, что вы отметили оба флажка, прежде чем нажимать « Install Now . Если вы хотите выполнить настройку, например изменить каталог, в который вы хотите установить Python, вы также можете нажать кнопку « Customize Installation ».
После завершения установки вы можете запустить программу на Python, чтобы проверить, все ли работает нормально. Вам не нужно иметь какие-либо знания Unix для выполнения программ Python из командной строки. Все, что вам нужно ввести, это python , за которым следует имя файла, который вы пытаетесь запустить, а затем нажмите клавишу ввода. Не забудьте сохранить все ваши файлы с расширением .py , так как расширение .py означает, что файл является файлом Python . Теперь давайте попробуем простую программу на Python, которая вычисляет сумму двух чисел. Мы создадим файл в текущем каталоге с именем addition.py и введем в него следующий код:
[язык кода = «питон»]
х = 5
у = 2
определить добавить (а, б):
print("Сумма "+str(a)+" и "+str(b)+" равна "+str(a+b))
добавить (х, у)
[/код]
Затем мы выполним его из командной строки, используя –
[язык кода = ”python”]дополнение python.py[/code]
Это запустит программу и покажет вам сумму двух чисел. Вы можете написать аналогичные функции для вычитания, деления и т. д. и получить представление о Python.

В python несколько человек создали функциональные возможности, которые можно использовать повторно. Они называются Python libraries . Вы можете использовать их, импортировав их в свою программу, но прежде чем вы это сделаете, вам нужно убедиться, что вы установили эти пакеты с помощью pip . Pip — это менеджер пакетов командной строки, который поставляется в комплекте с python.

Для этого урока мы будем использовать BS4 , более известную как Beautiful Soup . Это Python library для захвата данных из файлов HTML и XML. Он работает с любым парсером (или парсером lxml по умолчанию), предоставляя идиоматические способы навигации, поиска и изменения дерева синтаксического анализа. Это помогает очищать данные из очищенного html с помощью одной строки кода. Вручную это заняло бы часы, если не дни.
Страницы документации для получения дополнительной информации о Beautiful Soup доступны здесь — Beautiful Soup (bs4).
Если он уже установлен в вашей системе (если кто-то ранее использовал python в системе), вы увидите это сообщение в своей командной строке —
Сообщение «Требование уже выполнено» .
Как это просканировать
Теперь, когда среда и текстовый редактор настроены, мы можем приступить к делу. Вы поймете, как можно извлечь данные с веб-страницы конкретного отеля.
Когда вы выполните код, вам будет предложено указать URL-адрес. Вы можете указать URL любой страницы отеля. Мы возьмем следующее –
https://www..in/Hotel_Review-g1162480-d478012-Reviews-Radisson_BLU_Resort_Temple_Bay_Mamallapuram-Mahabalipuram_Kanchipuram_District_Tamil_N.html
Код для сканирования веб-страницы приведен ниже. Введите указанный выше URL-адрес при появлении запроса после запуска этой программы. Ссылка для кода в случае каких-либо проблем -
(https://drive.google.com/open?id=19xBkg4rKTxk7Vk6-TfxnNLa9GTcVvq3a)
[язык кода = «питон»]
импортировать urllib.request, urllib.parse, urllib.error
из bs4 импортировать BeautifulSoup
импорт SSL
импортировать json
импортировать повторно
импорт системы
импортировать предупреждения, если не sys.warnoptions:
warnings.simplefilter("ignore")#Для игнорирования ошибок сертификата SSL
ctx = ssl.create_default_context()
ctx.check_hostname = Ложь
ctx.verify_mode = ssl.CERT_NONE# url = input('Введите URL - ' )
url=input("Введите URL отеля - ")
html = urllib.request.urlopen(url, context=ctx).read()
суп = BeautifulSoup(html, 'html.parser')
html = суп.prettify("utf-8")
hotel_json = {}
для строки в soap.find_all('script',attrs={"type" : "application/ld+json"}):
детали = строка.текст.полоса()
детали = json.loads (детали)
hotel_json["имя"] = детали["имя"]
hotel_json["url"] = "https://www.<domainname>.in"+details["url"]
hotel_json["изображение"] = детали["изображение"]
детали["ценовой диапазон"] = детали["ценовой диапазон"].replace("₹ ","Rs ")
детали["ценовой диапазон"] = детали["ценовой диапазон"].replace("₹","рупий")
hotel_json["priceRange"] = детали["priceRange"]
hotel_json["aggregateRating"]={}
hotel_json["aggregateRating"]["ratingValue"]=details["aggregateRating"]["ratingValue"]
hotel_json["aggregateRating"]["reviewCount"]=details["aggregateRating"]["reviewCount"]
hotel_json["адрес"]={}
hotel_json["адрес"]["улица"]=детали["адрес"]["улицаАдрес"]
hotel_json["адрес"]["Местность"]=детали["адрес"]["адресМестность"]
hotel_json["адрес"]["регион"]=детали["адрес"]["адресрегион"]
hotel_json["адрес"]["Zip"]=детали["адрес"]["почтовый индекс"]
hotel_json["адрес"]["Страна"]=детали["адрес"]["адресСтрана"]["имя"]
ломать
hotel_json["отзывы"]=[]
для строки в soap.find_all('p',attrs={"class" : "partial_entry"}):
обзор = строка.текст.полоса()
если обзор != "":
обзор = строка.текст.полоса()
если review.endswith("Дополнительно"):
обзор = обзор[:-4]
если review.startswith("Уважаемый"):
Продолжать
обзор = обзор.replace('r', ' ').replace('n', ' ')
обзор = ' '.join(review.split())
hotel_json["отзывы"].append(обзор)
с open(hotel_json["name"] + ".html", "wb") в качестве файла:
файл.записать(html)
с open(hotel_json["name"] + ".json", 'w') в качестве выходного файла:
json.dump(hotel_json, outfile, отступ=4)
[/код]
После того, как вы запустите программу и предоставите предоставленный HTML-код, вы получите файл json с таким же именем, как и название отеля (Radisson BLU Resort Temple Bay Mamallapuram.json), и он будет выглядеть, как показано ниже. Ссылка на json для удобства использования –
(https://drive.google.com/open?id=1DQxkTLVUm8UAu7ByKh7NrqK3iBjME6MQ)
[язык кода = «питон»]
{
«название»: «Radisson BLU Resort Temple Bay Mamallapuram»,
«url»: «https://www.<имя домена>.in/Hotel_Review-g1162480-d478012-Reviews-Radisson_BLU_Resort_Temple_Bay_Mamallapuram-Mahabalipuram_Kanchipuram_District_Tamil_N.html»,
«изображение»: «https://media-cdn.<имя домена>.com/media/photo-s/03/e5/92/9b/radisson-blu-resort-temple.jpg»,
«priceRange»: «8 356 рупий — 36 027 рупий (на основе средних цен на стандартный номер)»,
«агрегатный рейтинг»: {
«ratingValue»: «4.0»,
«количество отзывов»: «2407»
},
"адрес": {
«Улица»: «Ковелонг-роуд, 57»,
«Местность»: «Махабалипурам»,
«Регион»: «Тамилнад»,
«Почтовый индекс»: «603104»,
«Страна»: «Индия»
},
«отзывы»: [
“Ухоженный курорт на пляже. Имеет один из самых больших бассейнов, акры лужайки, множество мероприятий для детей, хорошо оформленные номера, игру в крикет, волейбол, приветливый персонал и вид на прибрежный храм на пляже. Еда средняя….»,
“Это потрясающее место. У нас есть номер с видом на бассейн. Багги возил нас по пышным зеленым лужайкам, цветам и кокосовым пальмам. Очень ухоженное место. Бассейн, наверное, лучшая часть курорта.Пляж, терраса прекрасны.Обслуживание хорошее.Нам сказали, что курорт…”,
«У меня хороший опыт работы с Radisson BLU Resort Temple Bay Mamallapuram. Был там целый день с моей командой. Мне очень понравилось это место и пляж рядом с курортом. Вкусная еда &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; Приветственный напиток.",
“Я останавливался там на 1 день вместе с полной семьей. Мы забронировали 6 номеров, и качество номеров было настолько хорошим, что все члены семьи были довольны. Хорошее обслуживание, хорошая еда, хороший бассейн, хороший персонал. В целом очень хороший отдых”
]
}
[/код]
Извлеченные данные
Вы можете увидеть несколько разных полей в JSON. Давайте объясним их вам для более легкого потребления. Поле имени не требует пояснений, за ним следуют URL, изображение и диапазон цен. URL-адрес на самом деле тот же URL-адрес, который вы дали программе, когда она запросила его.

Он включен в JSON на случай, если он понадобится вам позже. URL-адрес изображения даст вам репрезентативное изображение отеля, а диапазон цен даст вам представление о минимальной цене, по которой вы можете получить стандартный номер, и о максимальной стоимости лучших люксов. Поле адреса разбито на несколько подполей только для упрощения фильтрации, в зависимости от варианта использования. Улица, населенный пункт, регион, почтовый индекс и страна — все это предоставляется вам. Вы можете объединить и использовать их как единое целое или использовать их для фильтрации по почтовому индексу, стране, региону и т. д.
Поле «Совокупный рейтинг» содержит оценки по пятибалльной шкале и количество людей, которые действительно оставили отзыв об отеле. Почему оба важны? Предположим, что отель имеет рейтинг 4,9/5 звезд, но его оставили только 10 человек, тогда как другой отель имеет рейтинг 4,5/5 звезд, но его оставили 2500 отзывов. Какой из них клиент забронирует?
Далее вы увидите поле отзывов, состоящее из лучших отзывов на главной странице отеля. Вы можете заметить, что некоторые отзывы слишком длинные и обрезаны в виде «…». Программно это можно расширить, чтобы показать полный обзор. Вы можете использовать это для данных и запуска методов анализа текста, чтобы понять голос клиента, относящийся к отелю, его плюсы и минусы.
Все эти данные можно разбить, их форматы можно изменить, и их можно использовать по своему усмотрению, поскольку JSON читается со всех языков программирования и следует стандартному формату, принятому во всем мире.
После запуска программы вы можете увидеть, что html файл с названием отеля тоже создан. Это полная копия html-страницы, которая только что была очищена. Вы можете использовать его для дальнейшего анализа и попробовать свои силы в извлечении данных из него.
Когда вам следует обратиться к поставщику услуг веб -скрейпинга?
Большинство людей, не обладающих знаниями в области кодирования, все еще могут быть не уверены во всем процессе. Хотя это можно использовать в качестве учебного процесса, предприятиям, которым регулярно требуются крупномасштабные данные, следует выбрать специализированного поставщика решений для сканирования. Вот основные преимущества работы с такими профессионалами, как PromptCloud — полностью управляемым поставщиком услуг парсинга веб-страниц:
- Полностью управляемый сервис
- Полностью настраиваемый
- Выделенная поддержка с строгим SLA
- Низкая задержка
- Высокая масштабируемость
- Содержание
Отказ от ответственности: код, представленный в этом руководстве, предназначен только для учебных целей. Мы не несем ответственности за то, как он используется, и не берем на себя никакой ответственности за любое вредоносное использование исходного кода.
