我有:
var text = '<p class="bla">blablabla<a href="/blabla">blabla</a></p><p class="class2">blablabla<a href="/blabla">blabla</a></p>';
如何获取课程bla
之后的第一个网址?
抱歉忘了提到我在服务器端使用node.js。所以我基本上将HTML作为在nodejs中使用的字符串。也许正则表达式?
答案 0 :(得分:0)
如果这是bla
类的第一个元素,请尝试
var text = '<p class="bla">blablabla<a href="/blabla">blabla</a></p><p>class="class2">blablabla<a href="/blabla">blabla</a></p>'
var parser = new DOMParser();
var doc = parser.parseFromString(text, "text/html");
console.log(doc.getElementsByClassName('bla')[0].getElementsById('a')[0].href);
PS:我用引号将变量中的代码包装起来。
答案 1 :(得分:0)
请不要使用正则表达式。 :)
HTML不是常规语言,因此您必须使用HTML解析器。建议htmlparser2,因为它是最快的。这应该这样做:
var htmlparser = require("htmlparser2")
var seen_bla = false
var result
var parser = new htmlparser.Parser({
onopentag: function(name, attribs){
if (attribs.class === 'bla') {
seen_bla = true
}
if (name === 'a' && seen_bla && result == null) {
result = attribs.href
}
},
onend: function() {
console.log(result)
}
})
parser.write('<p class="bla">blablabla<a href="/blabla">blabla</a></p><p class="class2">blablabla<a href="/blabla">blabla</a></p>')
parser.end()