Как запустить код Puppeteer в любом веб-браузере? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь выполнить некоторую очистку веб-страниц с помощью Puppeteer, и мне нужно извлечь значение на создаваемый мной веб-сайт.

Я попытался загрузить файл Puppeteer в html-файл, как будто онбыл файл JavaScript, но я продолжаю получать ошибку.Однако, если я запускаю его в окне cmd, он работает хорошо.

Scraper.js:

getPrice();
function getPrice() {
    const puppeteer = require('puppeteer');
    void (async () => {
        try {
            const browser = await puppeteer.launch()
            const page = await browser.newPage()              
            await page.goto('http://example.com') 
            await page.setViewport({ width: 1920, height: 938 })        
            await page.waitForSelector('.m-hotel-info > .l-container > .l-header-section > .l-m-col-2 > .m-button')
            await page.click('.m-hotel-info > .l-container > .l-header-section > .l-m-col-2 > .m-button')
            await page.waitForSelector('.modal-content')
            await page.click('.tile-hsearch-hws > .m-search-tabs > #edit-search-panel > .l-em-reset > .m-field-wrap > .l-xs-col-4 > .analytics-click')
            await page.waitForNavigation();
            await page.waitForSelector('.tile-search-filter > .l-display-none')
            const innerText = await page.evaluate(() => document.querySelector('.tile-search-filter > .l-display-none').innerText);
            console.log(innerText)
        } catch (error) {
            console.log(error)
        }

    })()
}

index.html:

<html>
  <head></head>
  <body>
    <script src="../js/scraper.js" type="text/javascript"></script>
  </body>
</html>

Ожидаемый результат долженбудь это в консоли Chrome:

Но вместо этого я получаю эту ошибку:

Есть идеи?

Заранее спасибо!

1 Ответ

0 голосов
/ 12 февраля 2019

Работает с браузером.Пакет называется puppeteer-web, специально созданный для таких случаев.

Но главное, на каком-то сервере должен быть запущен какой-то экземпляр chrome.Только тогда вы можете подключиться к нему.

Чтобы связать Puppeteer с помощью Browserify:

Клон репозитория Puppeteer:

git clone https://github.com/GoogleChrome/puppeteer && cd puppeteer
npm install
npm run bundle

Это создаст ./utils/browser/puppeteer-web.js файл, содержащий пакет Puppeteer.

Позже вы сможете использовать его на своей веб-странице для управления другим экземпляром браузера через конечную точку WS:

<script src='./puppeteer-web.js'></script>
<script>
  const puppeteer = require('puppeteer');
  const browser = await puppeteer.connect({
    browserWSEndpoint: '<another-browser-ws-endpont>'
  });
  // ... drive automation ...
</script>

Я немного повеселился с кукловодом и веб-пакетом,

Смотрите эти ответы полностьюпонимание создания сервера и многое другое,

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