簡體   English   中英

NodeJS | 使用請求模塊等待頁面重定向

[英]NodeJS | Waiting for redirection of a page using Request module

訪問http://www.oneblockdown.it/zh-CN/pharrell-williams-x-adidas-originals/footwear-lifestyle/men-unisex/pharrell-williams-x-adidas-originals-human-race-nmd-bb3070/通過普通的瀏覽器4267 ,它通常會在白頁上停留2.5秒,運行一些javascript,然后自動刷新該頁面,然后將加載實際的產品頁面。

當我使用Node JS Request模塊(使用普通的NodeJS http / https模塊)請求頁面時,它返回空白白頁的html,而不是等待並顯示產品頁面。 空白的html如下所示: https : //pastebin.com/ZSeXuZRc

我將如何允許它等待,像執行瀏覽器一樣執行代碼,並允許它刷新並顯示產品頁面?

這是我當前的代碼:

    request(
    {
        url: 'https://www.oneblockdown.it/en/pharrell-williams-x-adidas-originals/footwear-lifestyle/men-unisex/pharrell-williams-x-adidas-originals-human-race-nmd-bb3070/4267',
        method: 'GET',
        headers: {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
            'Host': 'www.oneblockdown.it',
            'Cache-Control': 'max-age=0',
            'Upgrade-Insecure-Requests': '1',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Referer': 'http://www.oneblockdown.it/en/footwear',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'en-US,en;q=0.9,la;q=0.8'

        }
    },
    function(err, res, body) {
        if(err || res.statusCode !== 200){
            console.log(`FAILED | ${err}`)
        } else {
          //parse the body here. It should return product page, but is returning the white html with javascript
        }
    });

不幸的是,您不能這樣做。 響應包括您向該端點發送請求時服務器返回的所有內容。 如果有javascript在DOM加載時被調用,例如window.onloaddocument.ready (此網頁就是這種情況),那么您將不會獲得這些更改。

即使對於Web爬蟲,這也將是一個問題(這就是為什么存在搜索引擎優化標准,該標准涉及在不使用任何腳本的情況下提供所有重要信息,並在頁面加載后保留與樣式和交互之類的UI相關任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM