【发布时间】:2020-11-22 02:50:25
【问题描述】:
我一直在编写一个简单的程序,它可以打开几个页面并执行一些简单的抓取和登录功能。运行浏览器后,我已经设法在新选项卡上打开新页面,但是当浏览器已经打开时,我无法在同一个浏览器中打开更多选项卡,必须在新的不同浏览器窗口中打开它们。
有什么解决方法吗?或者如果浏览器窗口已经打开,有什么方法可以让 puppeteer 在同一个浏览器窗口中打开新页面?提前致谢。
我的代码结构如下:
index.js(主应用程序文件)
async function runBrowser(pageID) {
const browser = await puppeteer.launch({
"headless": false,
"defaultViewport": null,
"args": ['--start-maximized'],
});
//CHANGE THE PAGE THAT OPENS
switch(pageID){
case 0:
login.openCursosPuntoD(browser);
break;
case 1:
facebook.openFacebookPuntoD(browser);
break;
case 2:
instagram.openInstagramPuntoD(browser);
break;
case 3:
twitter.openTwitterPuntoD(browser);
break;
case 4:
youTube.openYouTubePuntoD(browser);
break;
case 5:
webPage.openPaginaWebPuntoD(browser);
break;
default:
break;
}
};
runBrowser(0);
instagramPuntoD.js(打开函数文件的示例)
function openInstagramPuntoD(browser){
actions.runPage('https://www.instagram.com/xxxx/',false,browser);
};
module.exports = {
openInstagramPuntoD,
};
actions.js(包含爬虫可以执行的操作功能)
async function runPage(url,doLogin,browser){
const page = [];
const pageNumber = (await browser.pages()).length+1;
page[pageNumber] = await browser.newPage();
await page[pageNumber].goto(url);
if(doLogin == true){
var user = getUsername();
var pass = getPassword();
login(user,pass,page[pageNumber]);
}
else{}
}
*注意代码中不相关的部分被排除在外。
【问题讨论】:
标签: javascript node.js puppeteer chromium