我注意到您不能只在脚本中启动puppeteer,它要求您连接到现有的浏览器WSEndpoint。当用户单击网页上的“提交”按钮时,我正在尝试从网站上抓取数据。
我查看了发现的here帖子,但不能完全将其与任何解决方案一起使用。我知道您可以打开调试器浏览器并为此连接到端点,但是链接每次都会更改,这并不是很方便,特别是如果其他人使用它的话。
到目前为止,我的node.js服务器类中已经包含以下内容:
var express = require('express');
var app = express();
app.use('/public', express.static('public'));
app.use('/node_modules', express.static('node_modules'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html')
});
app.listen(3000);
我尝试按照链接中的建议创建代理服务器,但是没有运气。我尝试运行puppeteer的脚本如下:
const puppeteer = require('puppeteer');
async function getTitle() {
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222/devtools/browser/9f0a2240-2cb7-4efa-ac3c-8ef883d36d12',
});
const page = await browser.newPage();
await page.goto('http://example.com');
const title = await page.title();
await page.close();
await browser.disconnect();
return title;
}
getTitle().then(console.log);
据我所知,每次您重新打开浏览器时,浏览器WSEndpoint都会更改,这是不理想的,因为除非您每次都更改源代码,否则Web应用程序将无法工作。另外,我什至不知道如何找到/ devtools / browser链接。我从搜索中发现的所有内容都是键入chrome.exe,然后一些标志导航到localhost:5200或类似的名称。但是,我只能在该页面上看到/ devtools / pages /..。虽然这不是我一直在寻找的解决方案。
是否可以在动态创建的某个Web套接字上启动人偶实例,然后在需要时将脚本连接到该人偶实例?我是Web套接字的新手,所以上面链接中的解决方案之一可能就是我想要的,但我不太了解我所缺少的内容。