剧作家重复提取的最佳实践是什么?

问题描述

我必须从不同的页面中提取相同的表格,例如:

class ExtractPage {
    doExtraction() {
      ...
      await page.click('#selector > li[data-period="60"]')
      const extract1 = await page.$$eval('#element',tableElement => {
        const data1 = tableElement.querySelectorAll('.selector1')[0].innerText.trim()
        const data2 = tableElement.querySelectorAll('#id1')[0].innerText.trim()
        const data3 = tableElement.querySelectorAll('#id2')[0].innerText.trim()
        return { data1,data2,data3 }
      })
  
      await page.click('#selector > li[data-period="3600"]')
      const extract2 = await page.$$eval('#element',data3 }
      })
    }
}

但是当我在 page.$$eval 中使用外部函数时,它是未定义的,例如:

class ExtractPage {
  function extract(element) {    
    const data1 = element.innerText.trim()
    const data2 = element.innerText.trim()
    const data3 = element.innerText.trim()
    return { data1,data3 }
  }
  
  doExtraction() {
    ...
    const extract1 = await page.$$eval('#element',tableElement => {
      return this.extract(tableElement[0]) // This throws an error saying this.extract is not a function
    })
    return extract1
  }

我认为这是因为页面内的上下文。$$eval 是浏览器上下文,所以我的方法不存在那里,有任何方法可以将它传递到页面。$$eval,也许有更好的解决方案注册我的抽象方法来提取关于剧作家概念的数据?

提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)