Javascript 木偶演员-如何获得忽略儿童的innerText
我希望得到h3的内部文本,但我想忽略嵌套的跨度 例如: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>
<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节点查找文本。