Кукольник - Показать HTML версию сайта javascript на моем сервере для очистки - PullRequest
0 голосов
/ 08 февраля 2020
  • Мне нужно отобразить html версию веб-сайта (ftmarket, morningstar ..) на моем сервере, чтобы собрать информацию на нем с помощью листа Google (= ИМПОРТ HTML (B3; "таблица") ; 28)).

1 / i go на мой сервер с этим URL http://myserver.com?url=https: // www.morningstar.com/stocks/xpar/nk/valuation 2 / Nodejs получить переменную URL 3 / Puppeteer go на веб-сайт и напишите html версию веб-сайта на моем сервере (индекс. html) 4 / i показать эту версию на моем сервере через 15 секунд

  • я не могу выполнить шаг 4. Я не знаю, как заставить nodejs отображать индекс. html после записи кукловода html версия
  • Можно ли отобразить html версия без записи на моем сервере?
  • Знаете ли вы более быстрый способ удаления информации из URL, например "https://www.morningstar.com/stocks/xpar/nk/valuation" на листе Google?

// server.js
const express = require('express');
const puppeteer = require('puppeteer');
const fs = require("fs");
const app = express();
const path = require('path');
const router = express.Router();




// CAPTURE URL  /?url=https://google.com
app.get('/', async (req, res) => {
    const{url} = req.query;
    if (!url || url.length === 0) {
        return res.json({error: 'url query parameter is required'});
    }
console.log(url);

run(url);

}
);


async function run(url) {
    const browser = await puppeteer.launch({args: ['--no-sandbox']});
    const page = await browser.newPage();
	
		
await page.goto(url, {waitUntil: 'networkidle0', timeout: 0})
  //  await page.goto('https://www.ebay.com/');
    await page.waitFor(15000);


const html = await page.content();
fs.writeFileSync("index.html", html);
	
//	await page.goto('about:blank')

return html;

page.close();
browser.close();
 //browser.disconnect();
   // await process.exit(0);
	//app.close();
server();	
};



function server() {

const html = await run(url);

router.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/index.html'));
  //__dirname : It will resolve to your project folder.
});

router.get('/about',function(req,res){
  res.sendFile(path.join(__dirname+'/about.html'));
});

router.get('/sitemap',function(req,res){
  res.sendFile(path.join(__dirname+'/sitemap.html'));
});

//add the router
app.use('/', router);
//app.listen(process.env.PORT || 3000);

res.send(html);

}

app.listen(process.env.PORT || 3000);

спасибо

1 Ответ

0 голосов
/ 10 февраля 2020

Спасибо большое !!!! это работает с безголовым, потому что это на сервере. Я очень благодарен.

У меня есть только эта ошибка. Это нормально?

(узел: 26744) UnhandledPromiseRejectionWarning: Ошибка: ошибка протокола (Target.closeTarget): цель закрыта. в /root/node_modules/puppeteer/lib/Connection.js:74:56 в новом Promise () в Connection.send (/root/node_modules/puppeteer/lib/Connection.js:73:12) на странице .close (/root/node_modules/puppeteer/lib/Page.js:1043:38) на странице. (/root/node_modules/puppeteer/lib/helper.js:112:23) в get HTML (/root/morn.js:38:10) в processTicksAndRejection (внутренняя / process / task_queues. js: 97: 5) at asyn c /root/morn.js:15:18 (узел: 26744) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри asyn c -функции не было блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI --unhandled-rejections=strict (см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (идентификатор отклонения: 1) (узел: 26744) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом завершения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...