小编use*_*421的帖子

木偶-按类名称计数元素

我试图将有关具有特定类名的所有元素的信息放入数组中。

问题是这是一个动态生成的HTML页面,只要向下滚动,该类名称的新元素就会出现。

幸运的是,我事先知道其中有多少个元素。

因此,我的假设解决方案是检查具有该特定类名的元素的数量,并且只要该数量小于我所知道的数量,就可以继续使用。

问题是我不知道如何准确地计算puppeteer中特定类名称的元素,而且API也不是很有用。

javascript node.js puppeteer

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

Puppeteer - page.$$('').length 返回未定义

我的代码有错误,所以我尝试在错误代码中记录该值。所以我做了:

const read = await page.$$('.Ns6lhs9 _gfh3').length;
Run Code Online (Sandbox Code Playgroud)

然后我 console.log(read);

出于某种原因,undefined尽管'Ns6lhs9 _gfh3'HTML 中有带有类名的元素,但我得到了

javascript node.js async-await puppeteer

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

Node.js 数组到带换行符的文本

我想将一个数组转换为一个文本文件,并用换行符分隔每个条目。

我发现了一个名为 array-to-txt-file 的 npm 包。这是网页: array-to-txt-file

这个包声称将用换行符连接数组的每个元素,以便数组的每个元素都出现在文本文件的自己的行上。

所以我试了一下,虽然效果很好,但它并没有用换行符连接元素。一个元素在哪里结束,另一个元素就在哪里开始。

所以我查看了包的源代码,这是创建这种效果的代码。

try {
    array.forEach(v => {
      if(_.isPlainObject(v)) {
        ws.write(`${JSON.stringify(v)}\n`)
        return
      }
      ws.write(`${v}\n`)
    })
Run Code Online (Sandbox Code Playgroud)

特别是ws.write(${v}\n)部分。

然后我将我的输出文本文件导入到十六进制编辑器中。在十六进制编辑器中,每个元素之间都有一个点。现在,这个点与普通点不同。

常规点的十六进制值为2E,而出现在元素之间的点的十六进制值为0A。另请注意,我使用的是 Windows 7,当用记事本查看时,元素之间没有任何显示 - 一个结束,另一个直接开始。

那么有没有办法修改我上面发布的代码中的那一行,所以它真的在那个部分创建了一个换行符?

javascript arrays hex file node.js

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

在c/c ++中分配指针

我正在看一下博客,详细介绍了Heartbeat实现OpenSSL的易受攻击的代码.

我找到了这一行:

unsigned char *P = &s->s3->rrec.data[0], *p1;
Run Code Online (Sandbox Code Playgroud)

我不明白的是这个指针*p如何分配两个不同的值?一个是:

&s->s3->rrec.data[0]  (also, why is he referencing s?)
Run Code Online (Sandbox Code Playgroud)

另一个是

*p1
Run Code Online (Sandbox Code Playgroud)

为什么这个指针被分配了两个不同的值?

c c++ pointers reference

2
推荐指数
1
解决办法
87
查看次数

将签名的 cookie 传递给 puppeteer

我正在使用 node.js 并且显然可以访问我的签名 cookie。

它们是这种形式:

{ 'connect.sid': 's:qX4ZrttrjydtrjkgsdghsdghrewynZj4Ew2OUh.tTSILkcvgsegsegsegsr99gmW5
0XLcJefM' }
Run Code Online (Sandbox Code Playgroud)

Puppeteer 支持 cookie 并且为了传递 cookie 的参数而有这个功能:

page.setCookie(...cookies)
...cookies <...Object>
name <string> required
value <string> required
url <string>
domain <string>
path <string>
expires <number> Unix time in seconds.
httpOnly <boolean>
secure <boolean>
sameSite <string> "Strict" or "Lax".
returns: <Promise>
Run Code Online (Sandbox Code Playgroud)

如您所见,您直接提供了每个字段的参数。有没有办法将我签名的 cookie 直接传递给 puppeteer?

cookies session node.js puppeteer

2
推荐指数
1
解决办法
4845
查看次数

Puppeteer - 按类删除元素

我尝试按类名删除元素,但它不起作用.

这是我使用的代码:

await page.screenshot({path: 'pic.png'});   //for testing purposes
    let div_selector_to_remove= ".xj7.Kwh5n";
    var thingToRemove = document.querySelectorAll(div_selector_to_remove);
    var number_of_elements = thingToRemove.length;
    for (var i = 0; i < number_of_elements.length; i++) {
        thingToRemove[i].parentNode.removeChild(thingToRemove);
    }
Run Code Online (Sandbox Code Playgroud)

浏览器加载,我得到加载元素的屏幕截图.什么都没发生.元素仍然存在

javascript node.js puppeteer

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

Array.push()无法按预期工作

我有一个阵列.出于测试目的,我输出如下内容:

for (var i=0; i<array1.length; i++){
        console.log(i + ':' + array1[i]);
    }


0:String1
1:String2
Run Code Online (Sandbox Code Playgroud)

现在我有第二个阵列.我想要做的是将array1的内容推送到array2.

我用这一行做到这一点:

array2.push(array1);
Run Code Online (Sandbox Code Playgroud)

不幸的是,第一个数组的内容只存在于第二个数组的一个索引中.被逗号隔开.

例如,如果我们在操作后使用查看第二个数组的内容,它将是这样的:

for (var i=0; i<array1.length; i++){
        console.log(i + ':' + array1[i]);
    }


0:Old_string1
1:Old_string2
2:Old_string3
3:Old_string4
4:String1,String2
Run Code Online (Sandbox Code Playgroud)

虽然我想要这样的结果:

4:String1
5:String2
Run Code Online (Sandbox Code Playgroud)

javascript arrays node.js

2
推荐指数
1
解决办法
716
查看次数

在许多不同的平台上使用 c/c++ 中的线程

在我的理解中,如果你使用C,那么你一定会使用POSIX线程。

这些取决于操作系统,如果您使用 Linux,则必须使用<pthread.h>,而如果您使用 Windows,则必须使用<windows.h>

这些东西也可以转移到 C++ 中。

但是,如果您使用 C++,特别是 C++11 之后的版本,那么您可以跳过 POSIX 线程方法,#include <thread>直接使用即可。

这是正确的理解吗?有什么我想念的吗?

c c++ multithreading posix pthreads

2
推荐指数
1
解决办法
514
查看次数

Node.js:全局变量是否在实例之间共享?

我有这个代码:

app.post('/pst', function(req, res) {
        var url = req.body.convo;


                myAsyncFucntion(url).then(result => { 
                    console.log('TAKE A LOOK AT THIS!');


                    //transforming array to string to pass to Buffer.from()
                    //then we remove ',' with newlines, so each index of array is a new line
                    var str = result.toString();
                    result = str.split(',').join('\r\n');


                    //clever way to send text file to client from the memory of the server
                    var fileContents = Buffer.from(result, 'ascii');
                    var readStream = new stream.PassThrough();
                    readStream.end(fileContents);
                    res.set('Content-disposition', 'attachment; filename=' + fileName);
                    res.set('Content-Type', 'text/plain');
                    readStream.pipe(res); …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous global-variables node.js async-await

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

jQuery ajax 调用中的“类型”和“方法”是否等效?

我正在阅读 jquery 文档,它建议使用关键字method在给定路径中使用 http 动词。像这样:

$.ajax({
            url: "path",
            method: "POST",
Run Code Online (Sandbox Code Playgroud)

但是,我发现了使用关键字type而不是方法后跟 http 动词的代码。

typemethod一样的东西吗?还是我阅读的代码做了不同的事情?

我打开了文档,但没有关键字的规范type

ajax jquery

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