Scrapy 从TripAdvisor抓取动态加载图像

Scrapy 从TripAdvisor抓取动态加载图像,scrapy,web-crawler,scrapy-spider,jquery-lazyload,scrapy-splash,Scrapy,Web Crawler,Scrapy Spider,Jquery Lazyload,Scrapy Splash,我试图从TripAdvisor网站上获取评论。由于网站中的大多数图像都是动态加载的,所以我使用splashjavascript呈现服务来生成页面 问题是有些图像已加载,有些未加载 以下是我要爬网的评论的URL: 我已经尝试将飞溅等待时间设置为10秒(最大),结果仍然相同 以下是我在Splash中使用的代码: function main(splash) local url = splash.args.url assert(splash:go(url)) assert(splash:w

我试图从TripAdvisor网站上获取评论。由于网站中的大多数图像都是动态加载的,所以我使用splashjavascript呈现服务来生成页面

问题是有些图像已加载,有些未加载

以下是我要爬网的评论的URL:

我已经尝试将飞溅等待时间设置为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生成的结果图像(Croped out footer section):

如您所见,除了审阅中的图像(它们应该位于红色矩形中)之外,其他所有动态加载图像都已加载。我检查了html,发现img标记是存在的,但是它们的src属性是“../x.gif”,这是一个像素图像,而不是真实图像的URL


有没有人有这样的问题,或者知道为什么会有这样的问题?

当您滚动到图像时,图像似乎已加载。然而,当我尝试使用Splash滚动到它们时,尽管设置了延迟,我还是无法让它渲染图像

如果查看响应主体,您会注意到图像包含在名为
lazyImgs
的JavaScript数组中,并且每个图像都有一个ID。您可以在浏览评论时从占位符元素中读取每个ID,并使用它们从JavaScript数组中检索图像。这可能是最简单的解决方案