如何使用jQuery从<b>标签中提取粗体文本</b>

时间:2014-10-12 18:16:29

标签: javascript jquery cheerio

我有一些(坏)HTML,我正试图抓取,看起来像这样

<div class="MsoNormal" style="text-align: justify;">
 <span style="font-family: Georgia,&quot;Times New Roman&quot;,serif;">
 <span style="color: #c00000;">"<i style="mso-bidi-font-style: normal;">Book Name</i>" by 
 <b style="mso-bidi-font-weight: normal;">AUTHOR</b>. Release Date: 
 <b style="mso-bidi-font-weight: normal;">DATE</b>. Published by 
 <b style="mso-bidi-font-weight: normal;">PUBLISHER</b>
</div>

我需要用粗体提取三件事,即AUTHOR,DATE&amp;出版者

我尝过像$('strong,b').each(...)这样的内容,但却提供了整个文字。

编辑: 这是我正在使用的部分代码,基本上我想要做的是从一组这样的div中获取所有细节。

$(".MsoNormal").each(function(index) {

   var book = {}
   var elem = $(this).text()

   elem = sanitizeString(elem) // Removes whitespaces and line breaks

   book["title"] = getTitle(elem) // Gets the book name, which is between double quotes

   //Get author,date & publisher here $('b') traverses everything again

 }
 })

2 个答案:

答案 0 :(得分:1)

只需使用$('b')选择器:

$('b').each(function(index, element) {
    console.log(element.textContent);
});

或者,如果您想将它们存储在数组中,可以使用.map方法:

var bold_words = $('b').map(function() { return this.textContent });

console.log(bold_words);
// ["AUTHOR", "DATE", "PUBLISHER"]

答案 1 :(得分:1)

使用map功能,如下例所示。 get方法将返回一个数组,然后您可以自由地使用该信息执行任何操作。

&#13;
&#13;
var text = $("b").map(function() {
  return $(this).text();
}).get();

alert(text);
alert("Bold text: " + text.join(" "));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="MsoNormal" style="text-align: justify;">
  <span style="font-family: Georgia,&quot;Times New Roman&quot;,serif;">
 <span style="color: #c00000;">"<i style="mso-bidi-font-style: normal;">Book Name</i>" by 
 <b style="mso-bidi-font-weight: normal;">AUTHOR</b>. Release Date: 
 <b style="mso-bidi-font-weight: normal;">DATE</b>. Published by 
 <b style="mso-bidi-font-weight: normal;">PUBLISHER</b>
</div>
&#13;
&#13;
&#13;