You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Puppeteer提取表格td中段落文本及图片title?

提取表格中段落文本与图片title的解决方案

table

我有一个如下结构的表格,想要从class为'description'的td中提取图片的title以及段落文本。我尝试了多种方法但都没有成功,目前我编写的代码如下:

let descs = await page.evaluate(() => {
        let desc = Array.from(document.querySelectorAll('tr.even td.description p'))
        return desc.filter((p) => p.innerText !== "").map(p => p.innerText.replace((/  |\r\n|\n|\r/gm),"")).join("");
   });

通过这段代码我可以获取到段落文本,但如何同时获取图片的title呢?


修改后的代码方案

你可以在遍历<p>元素时,同时查找内部的<img>标签并提取title属性,将文本和图片信息整合返回:

单图片场景

let descs = await page.evaluate(() => {
  return Array.from(document.querySelectorAll('tr.even td.description p'))
    .filter(p => p.innerText.trim() !== "")
    .map(p => {
      // 处理段落文本,去除多余换行和空格
      const paragraphText = p.innerText.replace(/  |\r\n|\n|\r/gm, "");
      // 获取当前p标签内的图片title,无图片则返回null
      const imgElement = p.querySelector('img');
      const imageTitle = imgElement ? imgElement.getAttribute('title') : null;
      
      return { paragraphText, imageTitle };
    });
});

多图片场景(同一个p内有多个图片)

如果需要提取同一个段落里所有图片的title,可以调整为返回数组:

let descs = await page.evaluate(() => {
  return Array.from(document.querySelectorAll('tr.even td.description p'))
    .filter(p => p.innerText.trim() !== "")
    .map(p => {
      const paragraphText = p.innerText.replace(/  |\r\n|\n|\r/gm, "");
      // 获取当前p内所有图片的title,过滤掉空值
      const imageTitles = Array.from(p.querySelectorAll('img'))
        .map(img => img.getAttribute('title'))
        .filter(title => title);
      
      return { paragraphText, imageTitles };
    });
});

内容的提问来源于stack exchange,提问作者Gacha SS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:42:40