javascript - puppeteer 系统要求

标签 javascript node.js ubuntu puppeteer digital-ocean

我今天将一个脚本投入生产并放弃了我的 API,我相信我将不得不使用单独的服务器。
那么,对于 1000 个请求/小时,我应该使用什么服务器配置?
重现步骤
在digitalOcean上架了一台便宜的机器,同时跑了5次。
我的服务器:

  • puppeteer 版:最后
  • 平台/操作系统版本:Ubuntu 16
  • Node.js 版本:10

  • 我运行的代码
    async function getContent(url) {
      console.log("getContent")
      const browser = await puppeteer.launch({ headless: true, args:[`--window-size=${1800},${1200}`, '--no-sandbox', '--disable-setuid-sandbox'] });
      const page = await browser.newPage();
      await page.goto(url,{waitUntil: 'load', timeout: 0});
    
      var times = 1;
      let timer = setInterval(() => {
        console.log(times++)
        if (times > 10) clearInterval(timer);
      }, 1000);
    
      await page.waitFor(10000)
      return await page.content();
    }
    
    async function searchdata(content, url) {
      console.log("searchdata")
      const $ = cheerio.load(content);
    
      let imoveis = [];
      let paginas;
      let quantidadeEncontrada = $(".js-title .js-total-records").text().trim()
    
      if(quantidadeEncontrada<7){
        return{
          result:false,
          message:"Não encontramos um número de amostras maiores do que 8",
          quantidadeEncontrada:quantidadeEncontrada,
          link:url
        };
      }
    
      //Não pode ser arrow function porque perdemos o this do elemento :D
      $(".results-list > div").each(function () {
        if(imoveis.length<quantidadeEncontrada){
          // let area = $(this).find(".property-card__container .property-card__details .property-card__detail-area .property-card__detail-value").text();
          let valorVenda = $(this).find(".property-card__values .property-card__price").text();
          let link = $(this).find(".property-card__header a").attr("href");
          valorVenda = valorVenda.replace("R$", "").trim().replace(/\./g, "");
          if(valorVenda.trim()*1){
            imoveis.push({
              valorVenda: parseInt(valorVenda.trim()),
              link: "https://www.vivareal.com.br" + link
            });
          }
          // paginas = $(".pagination__wrapper li[data-type]").length
        }
      });
    
      return {
        result: true,
        imoveis: imoveis,
        amostrasQuantidade:imoveis.length,
        paginas: paginas,
        quantidadeEncontrada:quantidadeEncontrada * 1,
        url:url
      }
    }
    
    我还在 puppeteer 的 repo 上创建了一个问题:https://github.com/puppeteer/puppeteer/issues/6199

    最佳答案

    所以,我在网上找不到任何信息。
    我决定在具有 2G 内存的 Google Cloud Functions 上使用它

    关于javascript - puppeteer 系统要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62836142/

    相关文章:

    node.js - 错误:深度链接配置中有多个条目,其名称为Page

    c++ - 如何在 Ubuntu 上安装 OpenSSL 库?

    javascript - 为什么条件路由中 this.props 未定义

    javascript - 将 Date 实例传递给 Date 构造函数以克隆 Dates

    javascript - Cloud Spanner 无法正确管理 session 吗?

    node.js - 在 typescript 上扩展 super 测试

    bash - 在 shell/bash 脚本中找不到命令

    java - 如何强制javac使用某个jar文件?

    javascript - 用于计算以下字符串的正则表达式

    javascript - 闭包中的变量作用域