Можно ли скопировать данные из Airbnb прямо в Google Sheet? - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь создать очень простую панель управления Google Sheet, сравнивающую цены на D + 7 и D + 30 в режиме реального времени для конкретных списков / номеров, которые есть как на Airbnb, так и на Booking.com.

Со стороны Booking.com это было очень просто: я только что создал формулу, объединяющую URL с датами регистрации заезда / отъезда, количеством гостей и продолжительностью поездки в качестве параметров, используя функцию = IMPORTXML и правильный класс, я смог автоматически получить цену.

На Airbnb сложнее, так как цена динамическая (см. Здесь: https://www.airbnb.com/rooms/25961741). Когда я использую то, что считаю правильным классом, я получаю сообщение «Ошибка н / д, Импортированный контент пуст») в Google Sheet.

Я также пытался использовать API Airbnb с функциями REGEX для извлечения цены, но цена, указанная в информации о листинге, является ценой по умолчанию и не отражает реальность:

"Цена": 1160, "PRICE_FORMATTED": "$ 1160"

https://api.airbnb.com/v2/listings/25961741?client_id=d306zoyjsyarp7ifhu67rjxn52tv0t20&_format=v1_legacy_for_p3&number_of_guests=1

Теперь вы знаете, есть ли другой возможный способ получить доступ к этой динамической цене и автоматически проанализировать ее в электронной таблице? Кажется, что данные, которые я ищу в метатегах HTML-кода, и я не знаю, можно ли их скопировать в лист Google с помощью функций = IMPORT.

Может, со скриптом?

Большое спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Мне любопытно, если бы вы не смогли напрямую дернуть с помощью API ABNB; Что делать, если вы пытались напрямую запустить сервис сайта? Посмотрите на этот URL:

https://www.airbnb.com/api/v2/explore_tabs?version=1.3.9&satori_version=1.0.7&_format=for_explore_search_web&experiences_per_grid=20&items_per_grid=18&guidebooks_per_grid=20&auto_ib=false&fetch_filters=true&has_zero_guest_treatment=false&is_guided_search=true&is_new_cards_experiment=true&luxury_pre_launch=false&query_understanding_enabled=true&show_groupings=true&supports_for_you_v3=true&timezone_offset=-240&client_session_id=8e7179a2-44ab-4cf3-8fb8-5cfcece2145d&metadata_only=false&is_standard_search=true&refinement_paths%5B%5D=%2Fhomes&selected_tab_id=home_tab&checkin=2018-09-15&checkout=2018-09-27&adults=1&children=0&infants=0&click_referer=t%3ASEE_ALL%7Csid%3A61218f59-cb20-41c0-80a1-55c51dc4f521%7Cst%3ALANDING_PAGE_MARQUEE&allow_override%5B%5D=&price_min=16&federated_search_session_id=5a07b98f-78b2-4cf9-a671-cd229548aab3&screen_size=medium&query=Paris%2C%20France&_intents=p1&key=d306zoyjsyarp7ifhu67rjxn52tv0t20&currency=USD&locale=en

Это GET-запрос к поиску живой страницы ABNB; сейчас я не очень разбираюсь в ABNB, но по части списков в фиде JSON видно, что у него есть несколько ценовых факторов, которые отличаются от предоставленных вами результатов API; Я не уверен, что именно нужно тянуть, но это может привести вас в правильном направлении; проверьте массив «Списки» и посмотрите, можете ли вы что-нибудь использовать.

Имейте в виду, что если вы хотите автоматизировать очистку этих данных, вы захотите создать новые сеансы поиска; но сначала вы хотите посмотреть, является ли это тип данных, который вы ищете.

Другой вариант, API Google CSE; Я вытащил данные в заголовки страниц сайтов, которые отображаются в Google на основе тегов Schema.org; но это может быть задержка данных, и кажется, что вам нужно в режиме реального времени; наилучшим маршрутом будет повторение приведенного выше примера или попытка убедиться в естественном API ABNB (они предоставляют его функциональность по правильной причине; должен быть способ получить то, что вам нужно).

Надеюсь, мой ответ помог вам в правильном направлении!

...