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

我想选择 ap ,它是唯一一个有类名的。但是为什么 javascript 代码不起作用?


注意:我不能做 elements[i].className =="test",因为每次我重新打开网站时类名都会改变。


当我在控制台中运行它时,我得到:


undefined

undefined

undefined

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();

我想选择 ap ,它是唯一一个有类名的。但是为什么 javascript 代码不起作用?


注意:我不能做 elements[i].className =="test",因为每次我重新打开网站时类名都会改变。


当我在控制台中运行它时,我得到:


undefined

undefined

undefined

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();


森林海
浏览 129回答 2
2回答

月关宝盒

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++) {&nbsp; if(elements[i].className){&nbsp; &nbsp; console.log(elements[i].innerText[]);&nbsp; }}}test();改变这一行console.log(elements[i].innerText[]);到console.log(elements[i].innerText);并使用它从评估中返回一个段落数组&nbsp;const textsArray = await page2.evaluate(&nbsp; &nbsp; &nbsp; &nbsp; () => [...document.querySelectorAll('p')].map(elem => elem.innerText)&nbsp; &nbsp; );这将返回段落标签中所有文本的数组,否则您可以操作 map 以返回数组内的对象及其类名,如果您同时需要像这样const textsArray = await page2.evaluate(() =>&nbsp;&nbsp; &nbsp; &nbsp;[...document.querySelectorAll('p')].map(elem =>&nbsp;&nbsp; &nbsp; &nbsp; { return {class: elem.className,&nbsp; text:elem.innerText}&nbsp; &nbsp; &nbsp;)&nbsp; &nbsp; );

UYOU

async function test() {&nbsp; &nbsp; &nbsp; &nbsp; const browser = await puppeteer.launch({ headless: false, timeout: 0};&nbsp; &nbsp; &nbsp; &nbsp; const page2 = await browser.newPage();&nbsp; &nbsp; &nbsp; &nbsp; await page2.goto("localhost");&nbsp; &nbsp; &nbsp; &nbsp; await page2.waitFor(2530);&nbsp; &nbsp; &nbsp; &nbsp; let elements = await page.$$('p');&nbsp; &nbsp; &nbsp; &nbsp; for (let i = 0; i < elements.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let el_class = await page.evaluate(el => el.getAttribute('class'), elements[i]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(el_class);&nbsp; &nbsp; &nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript