如何正确地将字符串传递给page.evaluate()?

时间:2019-09-11 01:40:02

标签: puppeteer

您好,我正在研究Web抓取脚本,并且我有一个当前向我返回字符串的函数。我想将该函数的结果传递给page.evaluate。它返回的是undefined-根据我认为是有充分理由的文档(不可序列化)。

我将如何使用此功能?

    let imgTag = await comparer(img1, productImageURLarr); ///returns String

    let divSel = imgTag

    let parentdivs = await page.evaluate(
        (divSel) => {[...document.querySelectorAll(`img[alt=${divSel}]`)].map(elem => elem.closest('href'))
        }, divSel);

    console.log(parentdivs) ///returns undefined

还应注意-当我输入字符串的值(不用引号引起来)而不是表达式时,它将返回我想要的对象。

1 个答案:

答案 0 :(得分:1)

您错过了return函数中的parentdivs关键字。

    let parentdivs = await page.evaluate(divSel => {
      return [...document.querySelectorAll(`img[alt=${divSel}]`)].map(elem => elem.closest('href'))
    }, divSel);