我试着用木偶师从公司网站上提取一些桌子。
但我不明白为什么浏览器会打开Chrome而不是默认的Chrome,这会导致"TimeoutError:超过30000 ms的导航超时“,而不让我有足够的时间使用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();
})();
发布于 2021-12-26 19:18:37
木偶师,默认情况下是铬制的。如果您希望使用chrome,则必须通过发射参数指定可执行路径。但老实说,大多数情况下,这样做是没有意义的。
let browser = await puppeteer.launch({
executablePath: `/path/to/Chrome`,
//...
});
TimeoutError: Navigation timeout of 30000 ms exceeded
与使用铬之间没有关联,更有可能的是您的目标url (还没有)可用。
如果以下情况,page.goto将引发错误:
默认情况下,最大导航超时时间为30秒。如果由于某种原因,您的目标url需要更多的时间来加载(这似乎是不可能的),您可以指定一个timeout: 0
选项。
await page.goto(`https://github.com/`, {timeout: 0});
当返回HTTP状态代码时,Puppeteer不会抛出错误.
当远程服务器返回任何有效的HTTP状态代码(包括404“未找到”和500“内部服务器错误”)时,page.goto不会抛出错误。
我通常检查HTTP响应状态码以确保没有遇到任何404客户端错误响应不良请求。
let status = await page.goto(`https://github.com/`);
status = status.status();
if (status != 404) {
console.log(`Probably HTTP response status code 200 OK.`);
//...
};
我在这里瞎了眼,因为我没有你的目标网址,也没有更多关于你想要完成的事情的信息。
您还应该给木偶机api文档读一读。
发布于 2022-10-25 21:38:58
下面的方法适用于我。尝试在您的代码中添加下面的"1一行“。
setDefaultNavigationTimeout
方法允许您定义选项卡的超时,并将其作为第一个参数,即value in milliseconds
。这里是0 means
和unlimited amount of time
的一个值。因为我知道我的页面总有一天会被载入。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage()
// Add the below 1 line of code
await page.setDefaultNavigationTimeout(0);
// follows the rest of your code block
})();
https://stackoverflow.com/questions/70487251
复制相似问题