Сканирование изображений с динамической загрузкой из TripAdvisor

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

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

Вот URL отзыва, который я хочу просканировать: https://www.tripadvisor.com.sg/ShowUserReviews-g294265-d1770798-r446535418-Marina_Bay_Sands-Singapore.html

Я попытался установить время ожидания Splash на 10 секунд (максимум), и результат все тот же.

Вот мой код, который использовался в Splash:

function main(splash)
  local url = splash.args.url
  assert(splash:go(url))
  assert(splash:wait(10))
  splash:set_viewport_full()
  return {
    html = splash:html(),
    png = splash:png(),
    har = splash:har(),
  }
end

А вот изображение результата, созданное Splash (обрезанный нижний колонтитул): Нажмите, чтобы просмотреть изображение

Как видите, все остальные изображения с динамической загрузкой загрузились, кроме изображений в обзоре (они должны быть в красном прямоугольнике). Я проверил html и обнаружил, что теги img существуют, но их атрибут src был ".../x.gif", который представляет собой однопиксельное изображение вместо URL-адреса реальных изображений.

У кого-нибудь есть такая проблема или есть идеи, почему это было?


person Mansion    schedule 27.12.2016    source источник


Ответы (1)


Изображения, кажется, загружаются, когда вы прокручиваете их. Однако, когда я попытался использовать Splash для прокрутки к ним, мне не удалось заставить его отображать изображения, несмотря на установленную задержку.

Если вы посмотрите на тело ответа, вы заметите, что изображения содержатся в массиве JavaScript с именем lazyImgs, и каждое изображение имеет идентификатор. Вы можете прочитать каждый идентификатор из элементов-заполнителей при просмотре обзоров и использовать их для извлечения изображений из массива JavaScript. Это, пожалуй, самое простое решение.

person Richard Dowinton    schedule 07.01.2017