【问题标题】:reading td-child from a td-child Playwright从 td-child 剧作家那里读 td-child
【发布时间】:2022-06-16 23:28:29
【问题描述】:

我正在尝试从包含大量 Td-Child 的表中读取 td-child,但我无法取回信息,我的数组返回 null。

代码如下:

 const detalleDatos = await page2.$$eval('#gvContents > tbody', (users) => {
          return users.map(user => {
            // obtener la informacion de la tabla para generar el array
            const orden = user.querySelector('td:nth-child(1)')
            const pedido = user.querySelector('td:nth-child(2)')
            const factura = user.querySelector('td:nth-child(3)')
            const artículo = user.querySelector('td:nth-child(4)')
            const sku = user.querySelector('td:nth-child(5)')
            const unidadesContenedores = user.querySelector('td:nth-child(6)')
            const unidadesContenedoresCargados = user.querySelector('td:nth-child(7)')
            const PesoLb = user.querySelector('td:nth-child(8)')
            const PesoKg = user.querySelector('td:nth-child(9)')
            const CubosFt = user.querySelector('td:nth-child(10)')
            const CubosM = user.querySelector('td:nth-child(11)')
            const PrecioUd = user.querySelector('td:nth-child(12)')
            const PrecioExt = user.querySelector('td:nth-child(13)')
            return {
              orden: orden.textContent.trim(),
              pedido: pedido.textContent.trim(),
              factura: factura.textContent.trim(),
              artículo: artículo.textContent.trim(),
              sku: sku.textContent.trim(),
              unidadesContenedores: unidadesContenedores.textContent.trim(),
              unidadesContenedoresCargados: unidadesContenedoresCargados.textContent.trim(),
              PesoLb: PesoLb.textContent.trim(),
              PesoKg: PesoKg.textContent.trim(),
              CubosFt: CubosFt.textContent.trim(),
              CubosM: CubosM.textContent.trim(),
              PrecioUd: PrecioUd.textContent.trim(),
              PrecioExt: PrecioExt.textContent.trim(),
            }
          })
        })

根据我所知道的,它应该阅读表格并为我提供信息,但由于某种原因它没有这样做。

HTML 的结构如下:

我想获取桌子上所有tr的td信息。

【问题讨论】:

    标签: javascript node.js web-scraping playwright


    【解决方案1】:

    你可以使用playwright 中的:scope 方法将所有的内文一并获取,然后使用forEach 循环将它们一一获取。像这样的:

    const tdElements = page.locator('td')
    const tdTexts = await tdElements.locator(':scope').allInnerTexts()
    await tdTexts.forEach((text) => {
      console.log(text.trim()) //prints each texts one by one
    })
    

    您可以在Playwright Docs 中阅读更多内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2022-01-21
      • 2016-03-13
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多