木偶系统要求

Puppeteer System requirements

我今天将一个脚本投入生产并放弃了我的 API,我相信我将不得不使用一个单独的服务器。 那么,对于 1000 个请求/小时,我应该使用什么服务器配置?

重现步骤 在 digitalOcean 上设置更便宜的机器,同时 运行 5 次。

我的服务器:

我的代码是运行

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 的回购上创建了一个问题:https://github.com/puppeteer/puppeteer/issues/6199

所以,我在网上找不到任何信息。

我决定在 Google Cloud Functions 上使用它,有 2G RAM