爬虫对象保存浏览器实例的状态
无论您在何处调用/传递该实例,它都引用相同的 chromium
在“背景”中。如果这太过分了,而你只是想
使用 puppeteer 连接到已经运行的 chromium,你可以做到
与 puppeteer.connect。看看这个:如何将 puppeteer“挂钩”到正在运行的 Chrome 实例/选项卡中 – mbit
是的,我想这对我来说有点过分了:)。但你发布的链接是我想要的,但有两个问题。
这是我所拥有的样本。
// 1.js
// open chromium, new tab, go to google.com, print browserWSEndpoint, disconnect
const puppeteer = require('puppeteer');
(async () => {
var browser = await puppeteer.launch({headless: false});
var page = await browser.newPage();
var response = await page.goto('https://google.com');
var browserWSEndpoint = browser.wsEndpoint();
console.log(browserWSEndpoint); // prints: ws://127.0.0.1:51945/devtools/browser/6462daeb-469b-4ae4-bfd1-c3bd2f26aa5e
browser.disconnect();
})();
And
// 2.js
// connect to the open browser with the browserWSEndpoint manualy put in, ... , disconect.
const puppeteer = require('puppeteer');
(async () => {
var browser = await puppeteer.connect({browserWSEndpoint: 'ws://127.0.0.1:51945/devtools/browser/6462daeb-469b-4ae4-bfd1-c3bd2f26aa5e'});
// somehow use the tab that is open from 1.js (google.com)
await browser.disconnect();
})();
我从 console.log 1.js 获取 browserWSEndpoint 字符串。
它工作得很好,但我有两个困难。
1 - 如何使用 1.js 中的变量 browserWSEndpoint,这样我就不必总是将其复制粘贴到 2.js。
2-如果我在 1.js 上打开一个新页面/选项卡,然后转到 google 并断开连接 (browser.disconnect()),如何在 2.js 上使用该页面/选项卡。