NodeJS |使用“请求”模块等待页面重定向

问题描述 投票:1回答:1

当通过普通浏览器访问http://www.oneblockdown.it/en/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 node.js
1个回答
0
投票

不幸的是,你不能这样做。响应包括服务器在向该端点发送请求时返回的所有内容。如果在DOM加载时调用了javascript,即window.onloaddocument.ready,这是该网页的情况,您将无法获得这些更改。

即使对于网络爬虫来说,这也是一个问题(这就是为什么搜索引擎优化标准与服务所有重要信息相关而不使用任何脚本并在页面加载后留下与UI相关的任务,例如样式和交互。

© www.soinside.com 2019 - 2024. All rights reserved.