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數組檢索圖像。這可能是最簡單的解決方案。