我有一些(坏)HTML,我正试图抓取,看起来像这样
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Georgia,"Times New Roman",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
}
})
答案 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
方法将返回一个数组,然后您可以自由地使用该信息执行任何操作。
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,"Times New Roman",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;