代码之家  ›  专栏  ›  技术社区  ›  demouser123

使用puppeter抓取表以获取特定数据

  •  1
  • demouser123  · 技术社区  · 7 年前
    <tbody class="ant-table-tbody">
      <tr class="ant-table-row ant-table-row-level-0">
        <td class>
          <span class="ant-table-row-indent indent-level-0" style="padding-left: 0px;"</span>
          "Bombay"
          </td>
        <td class>
           <label class="ant-checkbox-wrapper">
             <span class="ant-checkbox ant-checkbox-checked">
               <input type="checkbox" class="ant-checkbox-input" value="on">
           </label>
         </td>
        <td class>
           <div>
             <i class ="anticon anticon-delete">
               ::before
             </i>
           </div>
         </td>
      </tr>
    <tr class="ant-table-row ant-table-row-level-0">...<tr>
    <tr class="ant-table-row ant-table-row-level-0">...<tr>
    <tr class="ant-table-row ant-table-row-level-0">...<tr>
    <tr class="ant-table-row ant-table-row-level-0">...<tr>
    <tr class="ant-table-row ant-table-row-level-0">...<tr>
    <tr class="ant-table-row ant-table-row-level-0">...<tr>
    

    我有这个桌子结构,有三个独立的 <td> 为每个人 <tr> 划船。我想用木偶师找到下面的

    • 第一个文本内的文本 <td>
    • 数秒 <td> <span> 类中的元素 "ant-checkbox-checked" .

    现在我可以使用 this

     const data = await page.evaluate(()=>{
                const tds = Array.from(document.querySelectorAll('tbody tr td'));
                return tds.map(td => td.innerText);
            });
            console.log(data);
    

    但这将返回所有文本数据,我不需要这些数据,只需要特定的数据。如何使用puppeter深入到特定的标记中?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Grant Miller    6 年前

    你可以用 page.evaluate() 要获取第一列的文本内容,然后可以使用 page.$$() 数数 span 包含类的第二列中的元素 ant-checkbox-checked :

    let first_column_text = await page.evaluate(() => Array.from(document.querySelectorAll('.ant-table-tbody > .ant-table-row > td:first-child'), element => element.textContent.trim()));
    let second_column_checked_count = (await page.$$('.ant-table-tbody > .ant-table-row > td:nth-child(2) > .ant-checkbox-wrapper > span.ant-checkbox-checked')).length;
    
    推荐文章