为了账号安全,请及时绑定邮箱和手机立即绑定

Puppeteer 按他的类名选择一个段落

Puppeteer 按他的类名选择一个段落

森林海 2021-11-18 20:04:21
我想选择 ap ,它是唯一一个有类名的。但是为什么 javascript 代码不起作用?注意:我不能做 elements[i].className =="test",因为每次我重新打开网站时类名都会改变。当我在控制台中运行它时,我得到:undefinedundefinedundefinedconst puppeteer = require('puppeteer');async function test() {const browser = await puppeteer.launch({ headless: false, timeout: 0};const page2 = await browser.newPage();await page2.goto("localhost");await page2.waitFor(2530);const elements = await page2.evaluate(() => [...document.querySelectorAll('p')]);for (var i = 0; i < elements.length; i++) {  if(elements[i].className){    console.log(elements[i].innerText);  }}}test();我想选择 ap ,它是唯一一个有类名的。但是为什么 javascript 代码不起作用?注意:我不能做 elements[i].className =="test",因为每次我重新打开网站时类名都会改变。当我在控制台中运行它时,我得到:undefinedundefinedundefinedconst puppeteer = require('puppeteer');async function test() {const browser = await puppeteer.launch({ headless: false, timeout: 0};const page2 = await browser.newPage();await page2.goto("localhost");await page2.waitFor(2530);const elements = await page2.evaluate(() => [...document.querySelectorAll('p')]);for (var i = 0; i < elements.length; i++) {  if(elements[i].className){    console.log(elements[i].innerText);  }}}test();
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

const puppeteer = require('puppeteer');


async function test() {

const browser = await puppeteer.launch({ headless: false, timeout: 0};

const page2 = await browser.newPage();

await page2.goto("localhost");

await page2.waitFor(2530);

const elements = await page2.evaluate(() => [...document.querySelectorAll('p')]);

for (var i = 0; i < elements.length; i++) {

  if(elements[i].className){

    console.log(elements[i].innerText[]);

  }

}


}

test();

改变这一行


console.log(elements[i].innerText[]);


console.log(elements[i].innerText);

并使用它从评估中返回一个段落数组


 const textsArray = await page2.evaluate(

        () => [...document.querySelectorAll('p')].map(elem => elem.innerText)

    );

这将返回段落标签中所有文本的数组,否则您可以操作 map 以返回数组内的对象及其类名,如果您同时需要


像这样


const textsArray = await page2.evaluate(() => 

     [...document.querySelectorAll('p')].map(elem => 

      { return {class: elem.className,  text:elem.innerText}

     )

    );


查看完整回答
反对 回复 2021-11-18
?
UYOU

TA贡献1878条经验 获得超4个赞

async function test() {


        const browser = await puppeteer.launch({ headless: false, timeout: 0};

        const page2 = await browser.newPage();

        await page2.goto("localhost");

        await page2.waitFor(2530);



        let elements = await page.$$('p');

        for (let i = 0; i < elements.length; i++) {

            let el_class = await page.evaluate(el => el.getAttribute('class'), elements[i]);

            console.log(el_class);

        }



}


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信