小编Tho*_*orf的帖子

可以使用 nodejs 和 puppeteer 获取 HTTP 响应标头吗?

在此处输入图片说明

你好呀,

是否有任何可能的方式,通过使用得到像上述的服务器信息的NodeJS操纵傀儡

非常感谢

node.js puppeteer

4
推荐指数
1
解决办法
7625
查看次数

如何使Puppeteer与客户端上的ReactJS应用程序一起使用

我对React还是很陌生,我正在开发一个应用程序,它将获取网页的实际屏幕截图,并且该应用程序可以在所截取的屏幕截图之上绘制并添加涂鸦。最初,我使用html2canvas和domToImage拍摄客户端屏幕快照,但它无法完全呈现网页中显示的图像。

Reddit用户/ pamblam0建议我调查Google的Puppeteer。它的工作方式是启动无头铬浏览器,该浏览器转到我在本地主机上的react应用,然后轻松获取整个页面的屏幕截图。但是我的问题是,木偶戏在React应用程序中不能很好地发挥作用。它给了我一个ws错误,正如在Google搜索中所述,可以通过简单地安装ws来解决(顺便说一句不起作用)。

现在,我的操纵p脚本可以完成我的react应用程序。据我了解,它不适用于客户端应用程序(我可能错了)。我想发生的是,每当我从react应用程序中单击按钮时,puppeteer应该执行并返回base64字符串,然后将其传递到我的react应用程序中的组件。

到目前为止,这是我所做的。

puppeteerApp.js

const puppeteer = require('puppeteer');

const takeScreenshot = async () => {
    puppeteer.launch().then(async browser => {
        const page = await browser.newPage();
        const options = {
            path: 'saved_images/webshot.png',
            encoding: 'base64'
        }
        await page.goto('http://localhost:3000/', { waitUntil: 'networkidle2' });
        const elem = await page.$('iframe').then(async (iframe) => {
            return await iframe.screenshot(options)
        });

        await browser.close()
    });
}

takeScreenshot();
Run Code Online (Sandbox Code Playgroud)

来自React应用的代码 App.js

import React, { Component } from 'react';
import ScreenshotsContainer from './containers/ScreenshotsContainer/ScreenshotsContainer'
import ImageContainer from './containers/ImageContainer/ImageContainer';
import html2canvas from 'html2canvas';
import …
Run Code Online (Sandbox Code Playgroud)

javascript node.js reactjs puppeteer

4
推荐指数
1
解决办法
1424
查看次数

Puppeteer:打开一个页面,获取数据,返回上一页,进入新页面获取数据

从一页获取数据很简单,但是如何在从第一页获取数据后返回,进入新页面,从该页面获取数据..等等。我正在尝试在网站http://books.toscrape上执行此操作.com/ .

因此,我选择打印库存中有多少本书,因为只有输入链接才能访问它。例如,如果运行代码,您将得到:{ stock: 'In stock (22 available)' }

现在,我希望返回到原始页面,输入第二个链接并获取与前一个链接相同的信息。等等..

如何使用普通 JavaScript 来完成此操作?

const puppeteer = require('puppeteer');

let scrape = async () => {
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();

    await page.goto('http://books.toscrape.com/');
    await page.click('#default > div > div > div > div > section > div:nth-child(2) > ol > li:nth-child(1) > article > div.image_container > a > img');
    await page.waitFor(1000);

    const result = await page.evaluate(() => {
        let stock = document.querySelector('#content_inner …
Run Code Online (Sandbox Code Playgroud)

javascript node.js puppeteer

4
推荐指数
1
解决办法
5335
查看次数

Puppeteer Execution context was destroyed, most likely because of a navigation

I am facing this problem in puppeteer in a for loop when i go on another page to get data, then when i go back it comes me this error line:

Error "We have an error Error: the execution context was destroyed, probably because of a navigation."
Run Code Online (Sandbox Code Playgroud)

It's a directory page that contains 15 companies per page and then I want to visit each company to get information.

try {
    const browser = await pupputer.launch({
        headless: false,
        devtools: true,
        defaultViewport: …
Run Code Online (Sandbox Code Playgroud)

javascript node.js web-scraping puppeteer

4
推荐指数
1
解决办法
2749
查看次数

page.vs. Puppeteer $方法

我对这两个代码块的差异感兴趣。

const $anchor = await page.$('a.buy-now');
const link = await $anchor.getProperty('href');
await $anchor.click();
Run Code Online (Sandbox Code Playgroud)
await page.evaluate(() => {
    const $anchor = document.querySelector('a.buy-now');
    const text = $anchor.href;
    $anchor.click();
});
Run Code Online (Sandbox Code Playgroud)

通常,我发现原始DOM元素page.evaluate()更易于使用,而$方法返回的ElementHandles是到目前为止的抽象。

但是我也许觉得异步Puppeteer方法可能更高效或更可靠?我在文档中找不到关于此的任何指导,并且有兴趣了解有关每种方法的专业人士/专业人士以及添加诸如之类的方法背后的动机的更多信息page.$$()

javascript node.js puppeteer

3
推荐指数
1
解决办法
434
查看次数

使用 Puppeteer:如何从其父元素选择器获取 iframe?

我想获取一个 iframe 作为框架并单击框架中的一个元素,但是 iframe 没有名称并且网站有很多框架(page.frames()返回 14)。

而且我无权编辑 html。我只能编辑 JavaScript。

我认为在这种情况下识别 iframe 的最佳方法是从其父元素。

我怎样才能用 puppeteer 做到这一点?

<div id="foo">
  <iframe>
    #document
  </iframe>
</div>
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome chromium node.js puppeteer

3
推荐指数
2
解决办法
8101
查看次数

如何使用 puppeteer 单击 display:none 元素?

我想单击display属性为的元素none。我怎样才能做到这一点?

代码:

page.click(".foo");
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome chromium node.js puppeteer

3
推荐指数
1
解决办法
3395
查看次数

puppeteer-cluster:排队而不是执行

我正在试验 Puppeteer Cluster,但我不明白如何正确使用排队。它只能用于不等待响应的呼叫吗?我正在使用 Artillery 同时发出一堆请求,但是当我直接执行命令时,它们都失败了,而只有一些失败。

我直接从示例中获取代码并替换executequeue我期望工作的代码,除了代码不等待结果。有没有办法实现这一目标?

所以这有效:

const screen = await cluster.execute(req.query.url);
Run Code Online (Sandbox Code Playgroud)

但这打破了:

const screen = await cluster.queue(req.query.url);
Run Code Online (Sandbox Code Playgroud)

这是完整的示例queue

const express = require('express');
const app = express();
const { Cluster } = require('puppeteer-cluster');

(async () => {
    const cluster = await Cluster.launch({
        concurrency: Cluster.CONCURRENCY_CONTEXT,
        maxConcurrency: 2,
    });
    await cluster.task(async ({ page, data: url }) => {
        // make a screenshot
        await page.goto('http://' + url);
        const screen = await page.screenshot();
        return screen;
    }); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js puppeteer puppeteer-cluster

3
推荐指数
1
解决办法
3590
查看次数

请求的纹理大小 [0x0] 无效。我在浏览器中加载图像时出错

调用预测函数时浏览器中的 Tensorflow.js 错误

我正在使用 Node.js 来运行 webapp。这是我包含的脚本,我在 Chrome 中运行 Node.js 并且无法解决错误。

该项目有 7 个类作为输出,在形状为 1x7 的输出中是密集层。

https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js
https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js
https://code.jquery.com/jquery-3.3.1.slim.min.js
Run Code Online (Sandbox Code Playgroud)

这是我的 JavaScript 文件。

 $(document).on('change', '#file', function() {

    let reader = new FileReader();
    reader.onload= function(){
        let dataUrl = reader.result;
        $('#selected-image').attr('src',dataUrl);
        $('#type1-predict').empty();
        $('#type2-predict').empty();
        $('#type3-predict').empty();
        $('#type4-predict').empty();
        $('#type5-predict').empty();
        $('#type6-predict').empty();
        $('#type7-predict').empty();
    }

    let file = $('#file').prop('files')[0];
    reader.readAsDataURL(file)
    });
    const CANCER_CLASSES = {
    0:"Actinic Keratoses",
    1:"Basal cell carcinoma",
    2:"Benign keratosis",
    3:"Dermatofibroma",
    4:"Melanoma",
    5:"Melanocytic nevi",
    6:"Vascular skin",    
    }
    let model;
    (async function(){
    model= await tf.loadLayersModel('http://localhost:81/model/model.json');
    $('#pro').hide()

    })();
    $(document).on('click', …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome tensorflow.js

3
推荐指数
1
解决办法
2518
查看次数

如何在 Tensorflow.JS 上激活 webgpu 后端

Github 上当前版本的 Tensorflow.js 包含 WEBGPU 后端,但运行时tf.getBackend()webgl什至可以使用启用了 WEBGPU 的 Chrome Canary。另外运行tf.backend()似乎并不表明WEBGPU在那里。

tensorflow.js

3
推荐指数
1
解决办法
3395
查看次数