通过Cheerio和Node.js传递重新认证页面

时间:2018-10-22 02:11:34

标签: javascript node.js web-scraping cheerio

我正在执行一项使用cheerio捕获某些页面内容并在另一个应用程序上显示的任务。

我要抓取的站点已通过身份验证(实际上是一个控制台),并且我具有用户名和密码,为此,我使用request-promise npm软件包来帮助我实现此逻辑。它在大多数情况下都可以正常工作,但是失败了,因为某些路由不会通过HTTP Get方法返回页面内容,而是重定向/返回到要求我再次输入用户名和密码的页面,然后它将重定向到我想要的页面。 所以我想知道如何直接通过重新认证页面并获取我想要的内容。

这是我的代码示例:

    function req(url) {
        return rp({ // request-promise
            uri: `${url}`,
            auth: {
                username,
                password,
                sendImmediately: true
            },
            method: "GET"
        });
    }

     const [pageA, pageB] = await Promise.all([
            req('pageAUrl').then(JSON.parse).then(...),
            req('pageBUrl').then(JSON.parse).then(...)
        ]);

        let $ = cheerio.load(pageA); // when I load Page A, I find the http returns the reauthentication Page require input password and username again!

        $ = cheerio.load(pageB);  // page B works correctly!

感谢您的帮助!

0 个答案:

没有答案