我在用 puppet 戏从一家公司的网站上提取一些表格。
但我不明白为什么浏览器打开的是Chromium而不是我默认的Chrome,这就导致“TimeoutError:超过30000毫秒的导航超时”,没有足够的时间使用CSS选择器。我没有看到任何有关此问题的文档。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage()
await page.goto('https://www....com');
//search tearm
await page.type("#search_term","Brazil");
//await page.screenshot({path: 'sc2.png'});
//await browser.close();
})();
2条答案
按热度按时间zbdgwd5y1#
Puppeteer,默认是基于chrome的。如果你想使用chrome,你必须通过
executablePath
启动参数指定可执行路径。但是老实说,大多数时候,这样做是没有意义的。TimeoutError: Navigation timeout of 30000 ms exceeded
和使用chromium之间没有相关性,更有可能的是你的目标url还没有可用。后藤在以下情况下将抛出错误:
默认情况下,最大导航超时时间为30秒。如果由于某种原因,您的目标url需要更多的时间来加载(这似乎不太可能),您可以指定
timeout: 0
选项。因为当返回HTTP状态码时,“ Puppeteer ”不会抛出错误...
后藤不会在远程服务器返回任何有效的HTTP状态代码时抛出错误,包括404“Not Found”和500“Internal Server Error”。
我通常会检查HTTP response status codes,以确保没有遇到任何404 Client error responses Bad Request。
我在这里盲目飞行,因为我没有你的目标网址,也没有更多的信息,你正在努力完成。
您还应该给予puppeteer api documentation。
pkbketx92#
下面的方法对我很有效。试着在你的代码中添加下面的“1 Liner”。
setDefaultNavigationTimeout
方法允许你定义标签页的超时时间,并期望作为第一个参数,value in milliseconds
。这里的值是0 means
和unlimited amount of time
。因为我知道我的页面总有一天会加载。