【问题标题】:How do I extract only the bold text from an HTML document?如何从 HTML 文档中仅提取粗体文本?
【发布时间】:2013-05-07 07:32:15
【问题描述】:

我需要提取 HTML 文档正文中的所有粗体 sn-ps。我需要在服务器端使用 Java(而不是在浏览器上)

页面上的文本可以是粗体,因为标签例如<b><h1> 等,或者因为内联 CSS 样式 style="font-weight:bold;",或者因为使用 CSS 类的外部 CSS 样式。

我正在使用 Jsoup,但我也可以使用任何其他库来完成这项工作。

感谢您的宝贵时间!

【问题讨论】:

  • 页面是否有定义的结构,或者它可以变化吗?如果可能,请发布一个示例 HTML 页面。
  • 为什么要添加javascript的标签? Java会更合适吗?
  • 如果您想在“服务器端”执行此操作,您应该将问题标记为“java”。 Jukka K. Korpela 花了一些时间为您提供了一个很棒的高质量解决方案,而您接受了一个有缺陷且便宜的解决方案,编辑您的问题和标签,使其“适合”解决方案。
  • 我为那个 Slytael 感到抱歉。我的错!感谢您添加标签。

标签: java html parsing jsoup


【解决方案1】:

您可以使用 getElementsByTagName()

http://www.w3schools.com/jsref/met_doc_getelementsbytagname.asp

另外,可能很有用querySelectorAll

https://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll

祝你好运,丹尼尔

【讨论】:

  • 不是一个很好的答案。请参阅FAQ,您必须解释要做什么,而不仅仅是链接到可能的答案
【解决方案2】:

对于标签和内联样式(例如直接添加到 html 的样式,不包含在外部 css 样式表中),您可以使用 css 选择器link。 (对于内联样式,它将是[style*="font-weight:bold;"])。

【讨论】:

  • 那么通过外部样式表加粗的文本呢?
  • IMO 不可能使用 jsoup。然后他必须找到另一个库或写下一个 css 解析器。 Op 没有说明他是否必须处理外部 css 样式表,因此我给了他一个解决方案,说明它可以做什么。
【解决方案3】:

简单的 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 替换为您自己的处理粗体文本的函数。

似乎font-weight 的计算值是bold,即使声明为700

请注意,这只会选取字体粗细专门设置为粗体 (700) 的文本。计算出的字体粗细为 600、800 或 900 的元素很可能会以粗体显示(当然取决于字体的可用性)。可以通过对测试进行明显的修改来覆盖它们。

【讨论】:

  • 太棒了。你也有Java服务器端的解决方案吗?
【解决方案4】:

只需通过标签名称抓取元素,然后循环:

elem = document.getElementsByTagName("b");

for(i=0;i<elem.length;i++) {
    console.log(elem[i].innerText)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 2011-08-16
    • 2021-12-26
    • 2019-04-23
    • 2013-11-15
    • 2010-11-12
    相关资源
    最近更新 更多