0

我想抓取来自TripAdvisor网站的评论。由于网站中的大部分图像都是动态加载的,我使用Splash JavaScript渲染服务来生成页面。从TripAdvisor抓取动态加载图像

问题是一些图像被加载,有些则不是。

这里是检讨,我要爬网的网址: https://www.tripadvisor.com.sg/ShowUserReviews-g294265-d1770798-r446535418-Marina_Bay_Sands-Singapore.html

我已经尝试设置启动等待时间为10秒(最大),结果还是一样。

这里是我的代码,在飞溅使用:

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 

这里是由飞溅产生的结果图像(Croped出页脚部分):Click to view the image

正如你所看到的,所有其他加载动态加载的图像除了评论中的图像(它们应该在红色的矩形中)。我检查过html,发现img标签已经存在,但是它们的src属性是“.../x.gif”,它是一个像素图像,而不是实际图像的URL。

有没有人有这样的问题,或有一个想法,为什么它是?

回答

0

当您滚动至图像时,图像似乎已加载。但是,当我尝试使用Splash滚动到它们时,尽管设置了延迟,但仍无法使其呈现图像。

如果你看一下响应体,你会发现图像包含名为lazyImgs JavaScript数组中,每个图像都有一个ID。你可以阅读从占位符元素的每个ID,当你穿过的评论,并用它们来从JavaScript数组检索图像。这可能是最简单的解决方案。