当前位置: 首页 > 知识库问答 >
问题:

木偶师-如何获得innerText忽略孩子

方弘
2023-03-14

我希望得到h3的内部文本,但我想忽略嵌套的跨度。

示例:

<h3>
    <span>NEW</span>
    Blog Article #69
</h3>

以下是我当前的代码:

const title = await blogArticle.$eval(
    "h3",
    (el) => el.textContent
  );

返回

NEWBlog Article #69

也尝试了innerText没有成功,我不能设法从DOM删除跨度。

共有1个答案

傅安宁
2023-03-14

只要H3不包含任何更多的标签,这将起作用

'use strict';

const puppeteer = require('puppeteer');

const html = `
<html>
    <body>
    <h3>
    <span>NEW</span>
    Blog Article #69
    </h3>    
  </body>
</html>`;

(async () => {
  const browser = await puppeteer.launch({ headless : false});
  const page = await browser.newPage();
  await page.goto(`data:text/html,${html}`);
  const title = await page.$eval(
    "h3",
    (el) => el.innerHTML
  );

  const span = await page.$eval(
    "h3 span",
    (el) => el.innerText
  );

  var h3WithoutSpan = title.replace(`<span>${span}</span>`, "" ).trim();
  console.log("-->" + h3WithoutSpan);

  await browser.close();
})();

这将返回--

这将执行以下操作

  1. 获取H3的内部超文本标记语言
  2. 获取span的文本(假设这可以是其他单词,而不仅仅是new)
  3. 删除

 类似资料:
  • 问题内容: 有人知道如何获取元素的或文本吗?甚至更好;如何单击具有特定元素的元素?这就是普通JavaScript的工作方式: 在此先感谢您的帮助! 问题答案: 这就是我获取innerHTML的方式:

  • 目前我正在学习i18n,发现 影响资源的查找过程。该示例摘自Java™教程-快速示例稍作修改: 组织。i18n。I18N示例 已定义的默认资源消息绑定。性质 和3个附加资源文件 MessagesBundle_de_de.properties MessagesBundle_en_US属性 MessagesBundle_fr_FR属性 到目前为止,一切都很好。给出: 给出: 现在,我添加以下资源文件M

  • 问题内容: 在python中,如何指示它忽略提供给method的未定义选项? 例如 我只为我的实例定义了选项,但是我用list调用 编辑: 我不在乎是否将其从原始列表中筛选出来。我只想忽略未定义的选项。 我这样做的原因是因为我正在使用SCons的AddOption接口添加自定义生成选项。但是,其中一些选项指导目标的声明。因此,我需要在脚本的不同位置将它们从sys.argv中解析出来,而无需访问所有

  • 问题内容: 我什至不理解标题中服务之间的基本区别。这些服务仅仅是提供软件来帮助您配置/组织/管理VM,还是为VM运行提供物理基础设施?换句话说,它们只是开发人员与AWS,Rackspace和Azure之间的便捷接口吗? 问题答案: 不完全是。 Chef / Puppet是“相同的”,它们是配置管理。尽管您可以使用它们来管理虚拟机或公共/私有云,但是大多数人并不倾向于那样使用它们。它们是配置管理。它

  • 我想用AWS amplify身份验证(使用cognito)测试react应用程序。 第一步是登录应用程序,填写输入文件(电子邮件和密码)并提交登录表单 等待页面。waitForSelector(“电子邮件”);等待页面。键入“#email”email@example.com“,{延迟:500}); 等待page.wait选择器("#通过");等待page.type("#通过","秘密",{延迟:

  • 问题内容: 如果我知道文本标签包含什么,如何在html页面中获取标签。例如: 问题答案: 您将不得不手动遍历。