如何在任何Web浏览器中运行Puppeteer代码?

Adr*_*895 2 javascript node.js web-scraping puppeteer

我正在尝试使用Puppeteer进行一些Web抓取,并且需要将其值检索到我正在构建的网站中。

我试图将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)
        }

    })()
}
Run Code Online (Sandbox Code Playgroud)

index.html:

<html>
  <head></head>
  <body>
    <script src="../js/scraper.js" type="text/javascript"></script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在Chrome的控制台中,预期结果应为以下结果:

但是我却得到了这个错误:

有任何想法吗?

先感谢您!

Md.*_*her 6

它确实适用于浏览器。该包称为puppeteer-web,专门针对此类情况制作。

但要点是,必须在某些服务器上运行chrome实例。只有这样,您才能连接到它。

使用Browserify捆绑Puppeteer:

克隆Puppeteer存储库:

git clone https://github.com/GoogleChrome/puppeteer && cd puppeteer
npm install
npm run bundle
Run Code Online (Sandbox Code Playgroud)

这将创建./utils/browser/puppeteer-web.js包含Puppeteer软件包的文件。

您稍后可以在网页中使用它来通过其WS Endpoint驱动另一个浏览器实例:

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

我玩过木偶戏和webpack,

请参阅以下答案,以全面了解如何创建服务器,以及更多内容,

  • 这是过去提交的旧[链接](https://github.com/puppeteer/puppeteer/tree/6522e4f524bdbc1f1b9d040772acf862517ed507/utils/browser)。看来他们在此[拉取请求](https://github.com/puppeteer/puppeteer/pull/5750)中删除了它 (2认同)