Google лист Импорт XML возвращает Импортированный контент пуст - PullRequest
0 голосов
/ 12 апреля 2020

Я хотел бы проанализировать данные с этого веб-сайта до IMPORTXML из электронной таблицы Google.

=IMPORTXML("https://track.aftership.com/cnexps/LL443994747LU?referrer=https%3A%2F%2Fwww.aftership.com%2Ffr%2Fcouriers%2Fcnexps","//*[@id='__next']/div[1]/div/div[2]/div/div/div/div/div/div/section[2]/p")

Цель состоит в том, чтобы получить значение "В пути"

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

Спасибо за помощь,

1 Ответ

1 голос
/ 12 апреля 2020

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

Поскольку «track.aftership.com» имеет несколько уровней защиты для непосредственного извлечения данных, мы могли бы использовать другой сервис. "packages24.com" кажется хорошим кандидатом. Контент также не может быть проанализирован напрямую, но мы можем решить проблему на этот раз.

Transit

В B2 у вас есть ссылка на запрос (добавить Ваш номер для отслеживания после "=")

https://www.packages24.com/track?number=LL443994747LU

В B3 функция IMPORTXML + подстроки извлекает URL-адрес, содержащий полномочия для обращения к API.

=IMPORTXML(B2;"substring-after(substring-before(//script[contains(.,'api.packages24')],""',""),'url: ')")

В B5, Импорт JSON функция (для импорта JSON в соответствии с URL-адресом, найденным в B3) + QUERY для выбора только столбца «Статус» и последней записи.

=QUERY(ImportJSON(B3);"SELECT Col3 limit 1";1)

Скрипт для импорта данных JSON в GoogleSheets доступно ниже (кредиты Полу Гамбиллу): https://gist.github.com/paulgambill/cacd19da95a1421d3164

В B6 у вас есть результат.

...