首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Webscraping TimeoutError:超过30000 ms的导航超时

Webscraping TimeoutError:超过30000 ms的导航超时
EN

Stack Overflow用户
提问于 2021-12-26 14:35:52
回答 2查看 17.3K关注 0票数 6

我试着用木偶师从公司网站上提取一些桌子。

但我不明白为什么浏览器会打开Chrome而不是默认的Chrome,这会导致"TimeoutError:超过30000 ms的导航超时“,而不让我有足够的时间使用CSS选择器。我没看到任何关于这件事的文件。

代码语言:javascript
运行
复制
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();
})();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-26 19:18:37

木偶师,默认情况下是铬制的。如果您希望使用chrome,则必须通过发射参数指定可执行路径。但老实说,大多数情况下,这样做是没有意义的。

代码语言:javascript
运行
复制
let browser = await puppeteer.launch({
    executablePath: `/path/to/Chrome`,
    //...
});

TimeoutError: Navigation timeout of 30000 ms exceeded与使用铬之间没有关联,更有可能的是您的目标url (还没有)可用。

如果以下情况,page.goto将引发错误:

  • 存在SSL错误(例如在自签名证书的情况下)。
  • 目标URL无效。
  • 在导航过程中会超过超时。
  • 远程服务器没有响应或无法到达。
  • 主资源加载失败。

默认情况下,最大导航超时时间为30秒。如果由于某种原因,您的目标url需要更多的时间来加载(这似乎是不可能的),您可以指定一个timeout: 0选项。

代码语言:javascript
运行
复制
await page.goto(`https://github.com/`, {timeout: 0});

当返回HTTP状态代码时,Puppeteer不会抛出错误.

当远程服务器返回任何有效的HTTP状态代码(包括404“未找到”和500“内部服务器错误”)时,page.goto不会抛出错误。

我通常检查HTTP响应状态码以确保没有遇到任何404客户端错误响应不良请求

代码语言:javascript
运行
复制
let status = await page.goto(`https://github.com/`);
status = status.status();
if (status != 404) {
    console.log(`Probably HTTP response status code 200 OK.`);
    //...
};

我在这里瞎了眼,因为我没有你的目标网址,也没有更多关于你想要完成的事情的信息。

您还应该给木偶机api文档读一读。

票数 14
EN

Stack Overflow用户

发布于 2022-10-25 21:38:58

下面的方法适用于我。尝试在您的代码中添加下面的"1一行“。

setDefaultNavigationTimeout方法允许您定义选项卡的超时,并将其作为第一个参数,即value in milliseconds。这里是0 meansunlimited amount of time的一个值。因为我知道我的页面总有一天会被载入。

代码语言:javascript
运行
复制
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
})();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70487251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档