Expedia — популярный сайт, на котором люди бронируют авиабилеты, отели и многое другое. Среди гигантов в сфере онлайн-бронирования путешествий Expedia выделяется как ведущая платформа, предлагающая миллионам людей множество вариантов путешествий. Но задумывались ли вы когда-нибудь, как можно использовать эти данные в своих целях, будь то для исследования, анализа или просто для получения лучших предложений? Добро пожаловать в мир веб-скрапинга!
В этом блоге мы погрузимся в увлекательное путешествие по скрапингу Expedia с помощью JavaScript, открывая целый мир возможностей и возможностей. Мы будем использовать Crawlbase Crawling API чтобы помочь нам беспрепятственно очистить Expedia.
Зачем использовать Expedia для сбора данных о путешествиях
В наши дни планирование поездки стало более доступным и персонализированным благодаря таким онлайн-платформам, как Expedia. Однако с таким количеством вариантов и переменных принятие обоснованных решений может быть непосильным. Именно здесь сбор данных о поездках с Expedia становится бесценным.
Скрапинг позволяет нам собирать огромные объемы данных с сайта Expedia, такие как цены на авиабилеты, отзывы об отелях и наличие мест. Анализируя эти данные, путешественники могут делать более осознанный выбор, находить лучшие предложения и даже открывать скрытые жемчужины, которые могут быть не очевидны сразу.
Для компаний в сфере туризма скрапинг Expedia обеспечивает конкурентное преимущество. Он дает представление о тенденциях рынка, ценовых стратегиях конкурентов и предпочтениях клиентов, позволяя компаниям эффективно адаптировать свои предложения и стратегии.
По сути, сбор данных о поездках с Expedia позволяет как отдельным путешественникам, так и компаниям эффективнее справляться со сложностями планирования поездок, обеспечивая лучший опыт и результаты.
Понимание веб-сайта Expedia
Прокладывая путь в сложной сети онлайн-платформ для путешествий, Expedia выступает в качестве заметного игрока, предлагая своим пользователям широкий спектр вариантов путешествий. Чтобы использовать весь потенциал предложений Expedia и получить ценную информацию, важно понимать базовую структуру и технологии, на которых работает ее веб-сайт.
Погружение в пути поиска Expedia
Expedia предлагает различные варианты поиска для удовлетворения различных потребностей в путешествиях. Каждый путь поиска разработан, чтобы помочь пользователям найти определенные типы размещения или мероприятий. Вот разбивка некоторых основных доступных путей поиска:
Доступные поисковые запросы на Expedia

- Поиск круиза: Этот путь предназначен для пользователей, желающих забронировать круизы. Пример формата:
https://www.expedia.com/Cruise-Search?querparams... - Поиск автомобилей: Для тех, кому нужны автомобили в аренду, этот путь упрощает процесс поиска. Пример формата:
https://www.expedia.com/carsearch?querparams... - Поиск рейса: Этот путь фокусируется на поиске лучших вариантов перелета для путешественников. Пример:
https://www.expedia.com/Flight-Search?querparams... - Поиск отелей: Специально разработанный для бронирования отелей, этот путь является нашим фокусом для этого примера. Пример формата:
https://www.expedia.com/Hotel-Search?querparams... - Дела, которые необходимо сделать: Для путешественников, ищущих активности и впечатлений, этот маршрут предлагает тщательно подобранный список вариантов. Пример формата:
https://www.expedia.com/things-to-do/search?querparams...
Пример: Поиск отеля на Expedia
Для целей этого блога мы углубимся в функцию поиска отелей Expedia. Давайте подробнее рассмотрим пример URL для поиска отелей:
1 | HTTPS://www.expedia.com/Hotel-Search?adults=2&rooms=1&destination=Dubai%2C%20Dubai%2C%20United%20Arab%20Emirates&startDate=2023-12-26&endDate=2023-12-30 |
В этом URL-адресе вы можете увидеть различные параметры, которые помогут настроить поиск:
adults=2: Указывает количество взрослых.rooms=1: Указывает необходимое количество комнат.destination=Dubai%2C%20Dubai%2C%20United%20Arab%20Emirates: Определяет пункт назначения, в данном случае Дубай, Объединенные Арабские Эмираты.startDate=2023-12-26: Устанавливает дату начала пребывания.endDate=2023-12-30: Устанавливает дату окончания пребывания.
Понимание этих путей поиска и параметров имеет важное значение для эффективного парсинга, поскольку позволяет нам нацеливаться на конкретные данные и соответствующим образом адаптировать наш подход к парсингу.
Настройка среды разработки
Прежде чем вы сможете погрузиться в веб-сканирование с помощью JavaScript и Crawlbase Crawling API, необходимо подготовить среду разработки. В этом разделе представлено краткое, но подробное руководство, которое поможет вам настроить необходимые инструменты и библиотеки для бесперебойного сканирования веб-сайтов электронной коммерции.
Установка NodeJS и NPM
NodeJS и NPM (Node Package Manager) являются основой современной разработки JavaScript. Они позволяют выполнять код JavaScript за пределами веб-браузера и легко управлять зависимостями. Вот простое руководство по установке:
- NodeJS: Посетите официальный Сайт NodeJS и загрузите последнюю версию LTS (Long-Term Support), адаптированную для вашей операционной системы. Выполните установку, следуя предоставленным инструкциям для конкретной платформы.
- NPM: NPM идет в комплекте с NodeJS. После установки NodeJS вы автоматически получаете NPM в свое распоряжение.
Чтобы подтвердить успешную установку, откройте терминал или командную строку и выполните следующие команды:
1 | node --version |
Эти команды отобразят установленные версии NodeJS и NPM, обеспечивая бесперебойную настройку.
Установка каталога проекта
Для начала создайте каталог с помощью mkdir Команда. Это называется ecommerce crawling для целей данного руководства, но вы можете заменить имя на другое по вашему выбору:
1 | MkDir expedia\ скрап |
Далее перейдите в недавно созданный каталог с помощью cd команда:
1 | cd expedia\ очистка/ |
Инициализируйте каталог проекта как пакет npm с помощью npm команда:
1 | npm инициализация --y |
Команда создает package.json файл, который содержит важные метаданные для вашего проекта. --y опция указывает npm принять все значения по умолчанию.
После выполнения команды на экране отобразится следующий вывод:
1 | Написал в /home/хассан/Рабочий стол/сканирование электронной коммерции/пакет.JSON: |
Внутри каталога вашего проекта создайте новый файл с именем expedia-scraping.js. Здесь вы разместите код скрапинга.
1 | трогать expedia-scraping.js |
Установка необходимых библиотек
Для эффективного сканирования веб-страниц и взаимодействия с API оснастите свой проект следующими библиотеками JavaScript с использованием NPM:
1 | # Установка необходимых библиотек |
Вот краткий обзор этих важных библиотек:
- Ваше здоровье: Как гибкая и высокопроизводительная библиотека, Cheerio разработана для эффективного анализа документов HTML и XML. Она играет ключевую роль в простом извлечении ценных данных из веб-страниц.
- Crawlbase: Crawlbase упрощает взаимодействие с Crawlbase Crawling API, оптимизируя процесс сканирования веб-сайтов и извлечения данных.
- SQLite3: SQLite3 выступает в качестве автономного, бессерверного и не требующего настройки движка базы данных SQL. Он будет служить вашим репозиторием для хранения сокровищ данных, собранных во время сканирования.
- csv-писатель: Он упрощает процесс записи данных в файлы CSV, что позволяет легко создавать структурированные файлы данных для хранения или дальнейшего анализа в ваших приложениях. Он предоставляет интуитивно понятный API для определения заголовков и записи записей в файлы CSV с минимальным кодом.
Выбор правильной среды разработки IDE
Выбор правильной интегрированной среды разработки (IDE) может значительно повысить производительность. Хотя вы можете писать код JavaScript в простом текстовом редакторе, использование специальной IDE может предложить такие функции, как автодополнение кода, инструменты отладки и интеграция с контролем версий. Некоторые популярные IDE для разработки JavaScript включают Visual Studio Code (VS Code), WebStorm и Sublime Text.
Получение токена для Crawlbase Crawling API
Чтобы получить доступ к Crawlbase Crawling API, вам нужен токен доступа. Чтобы получить токен, вам сначала нужно создать учетную запись на Crawlbase. Теперь давайте настроим вас с помощью Crawlbase учетная запись. Следуй этим шагам:
- Посетить Crawlbase Вебсайт: Откройте веб-браузер и перейдите к Crawlbase страница регистрации чтобы начать процесс регистрации.
- Предоставьте свои данные: Вам будет предложено указать свой адрес электронной почты и создать пароль для вашего Crawlbase аккаунт. Заполните необходимую информацию.
- Проверить: После отправки ваших данных вам может потребоваться подтвердить ваш адрес электронной почты. Проверьте свой почтовый ящик на наличие письма с подтверждением от Crawlbase и следуйте предоставленным инструкциям.
- Логин: После проверки вашей учетной записи вернитесь на страницу Crawlbase веб-сайт и войдите в систему, используя только что созданные учетные данные.
- Получите доступ к вашему API-токену: Для использования вам понадобится API-токен. Crawling API. Вы можете найти свои жетоны здесь ссылка..
Crawlbase предоставляет два типа токенов: обычный токен (TCP) для статических страниц веб-сайта и токен JavaScript (JS) для динамических или отображаемых JavaScript страниц веб-сайта. Для веб-сайта типа Expedia вам нужен токен JS. Вы можете прочитать больше здесь.
Имея NodeJS, NPM, необходимые библиотеки и ваш токен API, вы теперь готовы погрузиться в процесс сбора данных Expedia с помощью JavaScript и Crawlbase Crawling API. В следующих разделах мы шаг за шагом проведем вас через весь процесс.
Как извлечь результаты поиска Expedia
Огромное хранилище информации о путешествиях и доступных на Expedia вариантов — это сокровищница как для путешественников, так и для аналитиков. Скрапинг результатов поиска Expedia позволяет получить ценные аналитические данные, которые можно использовать в различных целях. В этом сегменте мы шаг за шагом проведем вас через скрупулезный процесс скрапинга результатов поиска Expedia.
Создание URL-адреса для поиска Expedia
Каждая онлайн-платформа работает на основе структурированной структуры, и Expedia не является исключением. Чтобы инициировать поиск или сбор данных, необходимо создать соответствующий URL, который инкапсулирует желаемые параметры поиска.
Например, если вы заинтересованы в изучении вариантов отелей в Париже для отдыха на выходных, ваш URL-адрес может выглядеть примерно так:
1 | HTTPS://www.expedia.com/Hotel-Search?adults=2&rooms=1&destination=Paris&startDate=2023-12-26&endDate=2023-12-30 |
Разбивка на компоненты:
- Базовый URL: https://www.expedia.com/Hotel-Search
- Параметры:
adults=2: Указывает количество взрослых.rooms=1: Указывает необходимое количество комнат.destination=Paris: Указывает место назначения в формате, закодированном в URL.startDate=2023-12-26: Устанавливает дату начала пребывания.endDate=2023-12-30: Устанавливает дату окончания пребывания.
Создание таких URL-адресов с правильными параметрами является основой сбора точных и релевантных данных из Expedia.
Доступ к HTML-контенту с помощью Crawlbase Crawling API
После того, как вы тщательно создали требуемый URL, следующим шагом станет извлечение HTML-контента веб-страницы. Crawlbase Crawling API выступает в качестве инструментального актива в этом начинании. Ниже описывается структурированный подход для облегчения этой операции:
- Конфигурация API: Инициализировать Crawlbase Crawling API, интегрируя ваш конкретный API-токен.
- Выполнение запроса: Используйте API для извлечения HTML-контента из указанного URL. Для дальнейшей оптимизации процесса скрапинга важно понимать параметры вы можете работать с Crawlbase Crawling API:
- ajax_wait: Логический параметр, указывающий, должен ли API ждать загрузки содержимого AJAX. Установка его в значение true гарантирует, что асинхронное содержимое будет полностью отрисовано перед захватом HTML.
- страница_ожидание: Указывает длительность (в миллисекундах), которую API должен ждать после загрузки страницы перед захватом HTML. Настройка этого значения может помочь в случаях, когда контенту требуется больше времени, чтобы стать полностью интерактивным, или при работе с сайтами со сложными последовательностями загрузки.
Вот уточненный пример, иллюстрирующий интеграцию этих параметров:
1 | Const { CrawlingAPI знак равно требовать('crawlbase'); |
Инструкции по выполнению:
- Скопируйте и вставьте указанный выше код в файл expedia-scraping.js.
- Чтобы выполнить скрипт, перейдите в каталог вашего проекта в терминале и выполните:
1 | узел expedia-scraping.js |
Это отобразит полученный HTML-код в вашем терминале.

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

- Перейти на сайт Expedia: Откройте URL-адрес страницы результатов поиска Expedia в любом браузере.
- Используйте правую кнопку мыши и «Проверить»: Щелкните правой кнопкой мыши элемент страницы, из которого вы хотите получить информацию. Выберите «Проверить» или «Проверить элемент» в появившемся меню. Это откроет инструменты разработчика в вашем браузере.
- Найдите HTML-код: Найдите исходный код HTML в инструментах разработчика. Наведите указатель мыши на различные части кода, и соответствующая область на веб-странице загорится.
- Получить селектор CSS: Чтобы получить селекторы CSS для определенного элемента, щелкните его правой кнопкой мыши в инструментах разработчика и выберите «Копировать» > «Копировать селектор». Это скопирует селектор CSS в буфер обмена, который можно использовать для веб-скрапинга.
Получив эти селекторы, вы можете приступить к структурированию своего инструмента для извлечения данных, чтобы эффективно извлекать необходимую информацию.
Извлечение данных из результатов поиска Expedia
После успешного извлечения HTML-контента следующим шагом является тщательное извлечение необходимых элементов данных. Для этой задачи мы используем возможности инструментов парсинга, причем библиотека cheerio в JavaScript выделяется как наш основной выбор.
Вот усовершенствованный подход к этому процессу:
- HTML-парсинг: Интеграция полученного HTML-контента в фреймворк синтаксического анализа, например Cheerio, что обеспечивает бесперебойную навигацию по объектной модели документа (DOM).
- Точное извлечение данных: Стратегически используйте селекторы CSS для изоляции и извлечения важных фрагментов данных из структуры HTML. Сюда входят такие ключевые показатели, как названия отелей, ночные тарифы, совокупные цены, рейтинги и количество отзывов пользователей.
- Структурирование данных: По мере извлечения методично организуйте собранные данные в структурированные форматы, будь то JSON или CSV. Это обеспечивает ясность, доступность и облегчает последующий анализ данных или архивацию.
Для соответствия нашим предыдущим попыткам написания сценариев измененный раздел кода остается следующим:
1 | Const { CrawlingAPI знак равно требовать('crawlbase'); |
Посмотрите на график CrawlingAPI из библиотеки 'crawlbase' скрипт извлекает HTML-контент предопределенного URL Expedia. Затем этот контент анализируется с помощью cheerio библиотека, серверная реализация, похожая на jQuery, для извлечения важных данных об отеле, таких как названия, цены, рейтинги и отзывы. После обработки скрипт выводит извлеченные данные на консоль. В частности, включена обработка ошибок для управления любыми потенциальными проблемами во время операции по извлечению.
Выполнение приведенного выше кода даст следующий вывод:
1 | [ |
Эффективная обработка пагинации в Expedia
Для эффективной обработки пагинации Crawlbase Crawling API обеспечивает css_click_selector параметр. Этот параметр позволяет нам программно щелкнуть элемент на странице, вызывая загрузку дополнительного контента.
При использовании токена JavaScript css_click_selector параметр ожидает допустимый селектор CSS, будь то идентификатор (например, #some-button), класс (например, .some-other-button) или атрибут (например, [data-tab-item="tab1"]). Крайне важно убедиться, что селектор CSS правильно закодирован, чтобы избежать каких-либо несоответствий.
Давайте включим это в наш существующий скрипт:
1 | Const { CrawlingAPI знак равно требовать('crawlbase'); |
В выводе вы заметите больше результатов, чем в предыдущем запуске.
Хранение очищенных данных
После успешного извлечения данных с таких платформ, как Expedia, крайне важно иметь надежную систему хранения данных. Это гарантирует, что данные останутся доступными, организованными и могут эффективно использоваться для различных целей в будущем. Давайте рассмотрим два систематических подхода к хранению ваших извлеченных данных: использование CSV-файлов и использование баз данных SQLite.
Хранение извлеченных данных в формате CSV
CSV (Comma Separated Values) выступает в качестве стандарта для обмена данными благодаря своей простоте и совместимости с различным программным обеспечением. Сохраняя извлеченные данные в формате CSV, вы обеспечиваете их широкое использование.
Для интеграции этого обновления вы можете изменить существующий скрипт следующим образом.
1 | Const { CrawlingAPI знак равно требовать('crawlbase'); |
saveToCSV Функция использует модуль createCsvWriter для определения конфигурации CSV-писатель. Эта конфигурация указывает, что данные должны быть записаны в файл с именем hotels.csv, и он предоставляет структуру CSV с заголовками, такими как «Имя», «Цена за ночь», «Общая цена», «Рейтинг» и «Отзывы». Извлеченные данные об отеле, ранее организованные в массив объектов, затем записываются в этот CSV-файл.
hotels.csv Предварительный просмотр:

Хранение извлеченных данных в базе данных SQLite
SQLite предлагает надежное решение для хранения данных без сервера. Используя базу данных SQLite, вы можете воспользоваться возможностями структурированных запросов, гарантируя целостность данных и эффективное извлечение.
Для интеграции этого обновления вы можете изменить скрипт следующим образом.
1 | Const { CrawlingAPI знак равно требовать('crawlbase'); |
saveToSQLite Функция предназначена для сохранения данных об отелях в базу данных SQLite с именем hotels.db. При вызове она устанавливает соединение с базой данных SQLite с помощью sqlite3 модуль. Перед вставкой любых данных функция гарантирует, что таблица с именем hotels существует в базе данных; если нет, она создает эту таблицу со столбцами для идентификатора (как первичного ключа), названия отеля, цены за ночь, общей цены, рейтинга и количества отзывов. Затем функция выполняет итерацию по каждому переданному ей объекту отеля, выполняя запрос на вставку для добавления данных отеля в hotels table. После того, как все данные вставлены, функция закрывает соединение с базой данных, гарантируя, что данные безопасно сохраняются в базе данных SQLite.
hotels Предварительный просмотр таблицы:

Выводы
Поздравляем! Вы взяли сырые данные прямо с веб-страницы и превратили их в структурированные данные в файле JSON. Теперь вы знаете каждый шаг создания скрапера Expedia в JS!
Это руководство дало вам основные знания и инструменты для простого извлечения результатов поиска Expedia с помощью JS и Crawlbase Crawling API. Продолжайте читать наши блоги, чтобы узнать больше подобных руководств. Некоторые ссылки приведены ниже:
А если вы хотите просмотреть другие проекты JavaScript, мы рекомендуем вам перейти по ссылкам ниже:
Освоение веб-сайтов электронной коммерции Crawling с JavaScript
Как скопировать G2 с помощью JavaScript
Как сканировать eBay с помощью JavaScript
До тех пор, если у вас возникнут какие-либо проблемы, не стесняйтесь обращаться к нам. Crawlbase Команда поддержки. Ваш успех в веб-скрейпинге — наш приоритет, и мы с нетерпением ждем возможности оказать вам поддержку в вашем путешествии по скрапингу.
Часто задаваемые вопросы (FAQ)
Законно ли извлекать данные из Expedia?
Веб-скрейпинг, особенно с крупных коммерческих платформ, таких как Expedia, находится в правовой серой зоне. В то время как некоторые юрисдикции и условия обслуживания прямо запрещают скрейпинг, в других может не быть четких инструкций. Крайне важно тщательно изучить условия обслуживания Expedia или проконсультироваться с юристами, знакомыми с интернет-законами в вашем регионе. Помните, даже если скрейпинг явно не запрещен, важно практиковать этичный скрейпинг, гарантируя, что вы не нарушаете никаких условий и не создаете чрезмерную нагрузку на серверы Expedia. Кроме того, всегда уважайте robots.txt файлы, которые веб-сайты часто используют для указания того, какие части сайта можно или нельзя сканировать.
Зачем использовать библиотеки JavaScript, такие как cheerio, для скрапинга?
Библиотеки JavaScript, такие как cheerio, являются бесценными инструментами для задач веб-скрейпинга. В отличие от традиционных браузеров, которые выполняют JavaScript для рендеринга страниц, cheerio работает на стороне сервера, предоставляя имитированную среду DOM. Этот подход на стороне сервера устраняет необходимость рендеринга всей веб-страницы, что приводит к более быстрым процессам извлечения данных. Разработчики могут использовать знакомый синтаксис jQuery-подобный для навигации и извлечения определенных элементов HTML, упрощая сложные задачи по скрапингу и оптимизируя производительность.
Как справиться с ограничением скорости или запретами по IP-адресам при парсинге Expedia?
Веб-сайты, включая Expedia, используют различные механизмы, такие как ограничение скорости или запреты IP-адресов, чтобы сдерживать и управлять агрессивными или несанкционированными действиями по парсингу. Если вы заметили задержки или вас заблокировали, это признак того, что ваши действия по парсингу могут быть слишком агрессивными. Чтобы справиться с этими проблемами:
- Реализуйте задержки: Вводите случайные или систематические задержки между запросами на сбор данных, чтобы имитировать поведение человека и снизить нагрузку на сервер.
- Используйте прокси: чередуйте пул прокси-серверов, чтобы скрыть свой IP-адрес и распределить запросы, что усложнит отслеживание и блокировку вашей активности по парсингу данных веб-сайтами.
- Инструменты ограничения скорости: Рассмотрите возможность интеграции промежуточного программного обеспечения или инструментов, предназначенных для управления и соблюдения ограничений скорости, динамически регулируя скорость сбора данных на основе ответов сервера.
Кроме того, для упрощения и беспроблемного использования такие платформы, как Crawlbase предложение посвященное Crawling APIs. Использование таких сервисов может еще больше автоматизировать и оптимизировать ваши усилия по парсингу, обеспечивая дополнительный уровень сложности в управлении потенциальными ограничениями.
Что мне делать с данными, извлеченными из Expedia?
Этическое и законное использование скопированных данных имеет первостепенное значение. Перед использованием скопированных данных:
- Цель использования: Четко определите свои намерения. Если вы анализируете данные для личных идей или академических исследований, убедитесь, что ваши действия соответствуют условиям обслуживания веб-сайта.
- Коммерческое использование: Если вы планируете использовать данные в коммерческих целях, всегда получайте явное разрешение от Expedia или соответствующего веб-сайта. Продажа или повторное использование полученных данных без согласия может привести к юридическим последствиям и запятнать вашу репутацию в отрасли.
- Конфиденциальность данных: Всегда отдавайте приоритет конфиденциальности данных. Убедитесь, что любая личная или конфиденциальная информация, извлеченная из Expedia или других источников, обрабатывается безопасно, с соблюдением индивидуальных прав и правил конфиденциальности.












