找到一个单词并从以下href获取网址

时间:2014-03-05 23:59:47

标签: javascript node.js

我有:

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中使用的字符串。也许正则表达式?

2 个答案:

答案 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()