const puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
const page = await browser.newPage();
这个作品
await page.goto('https://example.com');
这不起作用(没有协议,即http / https)
await page.goto("www.example.com');
它引发错误
协议错误(Page.navigate):无法导航到无效URL
为什么不像在Google Chrome中打开协议那样附加协议?
答案 0 :(得分:2)
Google Chrome Omnibox(地址栏)具有处理多种复杂情况的内置功能,例如:附加协议,自动完成等。
Puppeteer提供了一个API,可以控制DevTools Protocol上的Chrome或Chromium,因此许多功能目前不在Puppeteer的范围内。
函数page.goto()
的Puppeteer文档明确指出:
网址应包含方案,例如
https://
。
这是因为page.goto()
利用了Chrome DevTools协议中的Page.navigate
。
Chromium source code显示已明确检查通过Page.navigate
进行的导航是否有效,如果URL无效,它将返回错误“无法导航到无效URL”。
您可以在Node.js中轻松创建一个将协议附加到URL的函数,这可能是解决问题的方法。