Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 木偶演员-如何获得忽略儿童的innerText_Javascript_Dom_Puppeteer - Fatal编程技术网

Javascript 木偶演员-如何获得忽略儿童的innerText

Javascript 木偶演员-如何获得忽略儿童的innerText,javascript,dom,puppeteer,Javascript,Dom,Puppeteer,我希望得到h3的内部文本,但我想忽略嵌套的跨度 例如: <h3> <span>NEW</span> Blog Article #69 </h3> 它回来了 NEWBlog Article #69 还尝试了innerText,但没有成功,我无法从DOM中删除span。只要H3不包含任何其他标记,这将起作用 'use strict'; const puppeteer = require('puppeteer'); const h

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

例如:

<h3>
    <span>NEW</span>
    Blog Article #69
</h3>
它回来了

NEWBlog Article #69

还尝试了innerText,但没有成功,我无法从DOM中删除span。

只要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();
})();
这将返回->博客文章

这将执行以下操作

获取H3的内部HTML 获取范围的文本,并假定这可以是新的以外的其他单词 删除新的,然后删除所有空白
只要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();
})();
这将返回->博客文章

这将执行以下操作

获取H3的内部HTML 获取范围的文本,并假定这可以是新的以外的其他单词 删除新的,然后删除所有空白
我对此不是很确定,但你能试试const elm=wait page.$.h3;const text=await page.evaluateelm=>elm.textContent,elm[0];console.logtext;。这不是严格意义上的木偶问题,因为您可以而且应该完全在$eval内的浏览器代码中解决它,如中所述。正确的方法是迭代子项并使用child.nodeType===Node.TEXT\u Node查找文本。我对此不是很确定,但您可以尝试使用const elm=wait page.$.h3;const text=await page.evaluateelm=>elm.textContent,elm[0];console.logtext;。这不是严格意义上的木偶问题,因为您可以而且应该完全在$eval内的浏览器代码中解决它,如中所述。正确的方法是迭代子级并使用child.nodeType===Node.TEXT\u节点查找文本。