Выскабливание кукольника не работает на сервере ubuntu 18.04

#javascript #node.js #express #web-scraping #puppeteer

Вопрос:

если я запускаю этот код на своей локальной машине, он работает, но после развертывания на сервере он больше не работает

 var express = require('express'); var app = express();  const puppeteer = require('puppeteer');  app.get('/scrape', function (req, res) {  const url = req.query.url;   const preparePageForTests = async (page) =gt; {  // Pass the User-Agent Test.  const userAgent =  'Mozilla/5.0 (X11; Linux x86_64)'    'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36';  await page.setUserAgent(userAgent);  };   (async () =gt; {  const browser = await puppeteer.launch({  args: ['--no-sandbox'],  });  const page = await browser.newPage();  // await page.setViewport({ width: 1280, height: 720 });  await preparePageForTests(page);   await page.setRequestInterception(true);  page.on('request', (req) =gt; {  if (req.resourceType() == 'stylesheet' || req.resourceType() == 'font') {  req.abort();  } else {  req.continue();  }  });   await page.goto(url, { waitUntil: 'load' });   if (url.includes('tokopedia')) {  data = await page.evaluate(() =gt; {  const product = document.querySelector('h1.css-1wtrxts').textContent;  const price = document.querySelector('.price');  const img = document.querySelector('.css-1b60o1a img');  const dataObj = {  product,  price,  img,  };  return dataObj;  });  } else if (url.includes('shopee')) {  data = await page.evaluate(() =gt; {  const product = document.querySelector('div.attM6y gt; span').textContent;  const price = document.querySelector('div.Ybrg9j').textContent;  const img = null;  const dataObj = {  product,  price,  img,  };  return dataObj;  });  } else if (url.includes('blibli')) {  await page.waitForSelector('div.product-info__main gt; div.product-name');  data = await page.evaluate(() =gt; {  const product = document.querySelector(  'div.product-info__main gt; div.product-name'  ).textContent;  const price = document.querySelector(  'div.final-price gt; span'  ).textContent;  const img = null;  const dataObj = {  product,  price,  img,  };  return dataObj;  });  } else {  // await page.waitForSelector('div.pdp-mod-product-badge-title');  data = await page.evaluate(() =gt; {  const product = 'null';  const price = 'asd';  const img = null;  const dataObj = {  product,  price,  img,  };  return dataObj;  });  }  console.log(data);  res.json(data);  await browser.close();  })(); });  const port = 3000; app.listen(port, () =gt; {  console.log(`Server running at http://localhost:${port}`); });  exports = module.exports = app;  

если я буду работать на местном:

 http://127.0.0.1:3000/scrape?url=https://www.tokopedia.com/collinsofficial/acer-aspire-3-slim-a314-22-amd-ryzen-3-3250u-4gb-256gb-14-fhd-w10-ohs-hd-1366x768?utm_source=Androidamp;utm_source=Androidamp;utm_medium=Shareamp;utm_medium=Shareamp;utm_campaign=Product Shareamp;utm_campaign=Product Shareamp;_branch_match_id=978964305966617172  

это даст жатву:

 {  "product": "Acer Aspire 3 Slim A314-22 AMD RYZEN 3-3250U 4GB 256GB 14" FHD W10 OHS   - HD (1366x768)",  "price": "Rp6.999.000",  "img": "https://images.tokopedia.net/img/cache/500-   square/VqbcmM/2021/11/10/8feb4ee0-1fb1-49fc-876e-71a0bbda732f.jpg.webp?ect=4g" }  

но я развертываю в ubuntu server 18.04, это не работает, учитывая ошибку:

/var/www/html/scrapejs/node_modules/кукловод/lib/cjs/кукловод/общий/ExecutionContext.js:221 выдать новую ошибку(«Ошибка оценки:» helper_js_1.helper.getExceptionMessage(исключение)); ^

Ошибка: не удалось оценка: ошибку TypeError: не удается прочитать свойства значение null (значение ‘текстового содержимого’) на puppeteer_evaluation_script:4:57 в параллельном режиме._evaluateInternal (файле/var/www в/HTML-код/scrapejs/папки node_modules/кукловод/Либ/КВН/кукловод/общие/параллельном режиме.в JS:221:19) в асинхронных параллельном режиме.оценить (в/var/www в/HTML-код/scrapejs/папки node_modules/кукловод/Либ/КВН/кукловод/общие/параллельном режиме.в JS:110:16) в асинхронных файле /var/www в/HTML-код/scrapejs/приложения.в JS:43:14

Надеюсь, я смогу найти решение, что я могу для этого сделать?