我正在执行一项使用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!
感谢您的帮助!