我需要提取HTML文档正文中的所有粗体代码片段。我需要使用Java(不在浏览器上)在服务器端执行此操作。如何仅从HTML文档中提取粗体文本?
页面上的文本可以因标签等而变为粗体。 <b>
,<h1>
等,或者因为内联CSS样式style="font-weight:bold;"
,或者因为使用CSS类别的外部CSS样式。
我正在使用Jsoup,但我也可以使用任何其他库来完成此操作。
谢谢你的时间!
我需要提取HTML文档正文中的所有粗体代码片段。我需要使用Java(不在浏览器上)在服务器端执行此操作。如何仅从HTML文档中提取粗体文本?
页面上的文本可以因标签等而变为粗体。 <b>
,<h1>
等,或者因为内联CSS样式style="font-weight:bold;"
,或者因为使用CSS类别的外部CSS样式。
我正在使用Jsoup,但我也可以使用任何其他库来完成此操作。
谢谢你的时间!
可以使用的getElementsByTagName ()
http://www.w3schools.com/jsref/met_doc_getelementsbytagname.asp
也可能是有用的querySelectorAll
https://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll
祝你好运,丹尼尔
不是一个很好的答案。请参阅[常见问题解答],你必须解释怎么做,不只是链接到一个可能的答案 – tgkprog 2013-05-13 11:46:34
一个普通的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的元素很可能会以粗体显示(当然取决于字体的可用性)。可以通过对测试进行明显修改来覆盖它们。
太好了。你是否也有Java中服务器端的解决方案? – 2013-05-13 10:43:19
该页面是否具有已定义的结构,还是可以变化?如果可能,请发布示例HTML页面。 – Greg 2013-05-13 09:54:53
为什么添加javascript标签? Java会更合适不行? – MisterJ 2013-05-13 09:56:02
如果你想在“服务器端”做到这一点,你应该把问题标记为“java”。 Jukka K. Korpela花了一段时间为您提供了一个极好的高质量解决方案,同时您接受了一个有缺陷且价格便宜的解决方案,编辑您的问题和标签以便“适合”解决方案。 – 2013-05-13 10:42:27