我需要提取HTML文档主体中所有加粗的片段。我需要在服务器端使用Java进行操作(而非在浏览器中)。
网页上的文本可以由标签,例如、等标签或内联CSS样式style="font-weight:bold;"或由外部CSS样式使用CSS类而加粗。
网页上的文本可以由标签,例如、
一种纯JavaScript解决方案:在足够新的浏览器上,您可以使用getPropertyValue
方法检索元素的计算样式。您可以遍历文档树并检查所有文本节点;文本节点没有样式,因此您需要检查它们的父元素:
function consume(string) {
console.log(string);
}
function traverse(tree) {
var i;
if(tree.nodeType === 3) {
if(getComputedStyle(tree.parentNode).getPropertyValue('font-weight') === 'bold') {
consume(tree.textContent);
}
}
for(i = 0; i < tree.childNodes.length; i++) {
traverse(tree.childNodes[i]);
}
}
traverse(document.body);
请用您自己的函数替换consume
,以处理加粗文本。
即使声明为700
,font-weight
的计算值似乎仍然是bold
。
请注意,这只会选择字体重量明确设置为粗体(700)的文本。具有计算字体重量为600、800或900的元素通常会以粗体出现(当然取决于可用字体)。通过对测试进行明显修改,可以覆盖它们。
你可以使用 getElementsByTagName()
http://www.w3schools.com/jsref/met_doc_getelementsbytagname.asp
此外,querySelectorAll 也非常有用。
https://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll
祝你好运,Daniel
[style * =“font-weight:bold;”] )。
只需通过标签名称获取元素,并循环遍历:
elem = document.getElementsByTagName("b");
for(i=0;i<elem.length;i++) {
console.log(elem[i].innerText)
}