木偶-最佳标准做法

时间:2018-06-25 11:49:57

标签: node.js puppeteer

对木偶戏进行普通操作的最佳(或标准)方法是什么?

考虑一下:

<div class="C1">
    <img alt="Bla Bla" class="C2" scrset="lots of stuff here" scr="THIS_IS_WHAT_I_WANT">

我要访问src文本。最好的方法是什么?

或者在网页上有此情况的另一种情况:

<a class="D1 D2 D3" role="button" </a>

我想检查上述按钮之类的元素的存在(和不存在)。

2 个答案:

答案 0 :(得分:2)

您的第一个示例(获取src文本):

const puppeteer = require('puppeteer')

async function run() {
    const browser = await puppeteer.launch()
    const page = await browser.newPage()

    await page.goto(`insertYourURLhere.com`, {
        timeout: 0,
        waitUntil: ['domcontentloaded']
    })
    
    // getting a handle on the div first
    const outerDiv = await page.$('div.C1')
    // proceeding from the selected div
    const scrAttribut = await outerDiv.$eval('img.C2', el => el.getAttribute('scr'))

    console.log(scrAttribut)
    
    browser.close()
}

run()

您的第二个示例(检查元素的存在):

对外部div使用与上面所示相同的方法来找到按钮:

page.$(selector)

然后检查返回值。

  

如果没有元素与选择器匹配,则返回值解析为 null。

发件人:Puppeteer documentation

答案 1 :(得分:0)

我的举动的第二部分由Carsten解决,我非常感谢他!

但是,他的第一部分解决方案无效。

这就是我的工作方式:

const values = await page.evaluate(
        () => [...document.querySelectorAll('.C2')]
        .map(element => element.getAttribute('src'))
    );