如何从 html 元素中过滤掉同名的内容

How filter out content from html element with the same name

HTML代码:

<table>
 <tbody>
  <tr>
   <th>Position</th>
   <th>City &amp; Province</th>
   <th>Country</th>
   <th>Salary</th>
  </tr>

  <tr>...</tr>

  <tr>...</tr>

  <tr valign="top"><td>content1</td></tr>

  <tr>...</tr>

  <tr>...</tr>

  <tr valign="top"><td>content2</td></tr>

 </tbody>
</table>

我正在尝试过滤 'tr' 元素的数组,并且只访问属于具有 'valign' 属性的 'tr' 元素的内容,我想要所有其他元素被忽略。

人偶代码:

const options = await page.$$eval('table tbody tr', (trArray) =>
  trArray.map((tr) => tr.valign)
);

//current results = ,,,,,,,,,,,,,,
//expected results = content1,content2

如有任何帮助,我们将不胜感激。

您可以通过选择器 'table tbody tr[valign]' 获得只需要 tr。要获取内容,请尝试 tr.innerText:

const options = await page.$$eval('table tbody tr[valign]', (trArray) =>
  trArray.map((tr) => tr.innerText)
);