2014-03-05 61 views
0

的URL我:找到一個詞,並從以下HREF

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

它看起來像你想要的鏈接是類'bla'元素的孩子? –

+0

對。我只是補充說我在node.js中使用它。 –

+1

您可以使用https://github.com/tmpvar/jsdom。 –

回答

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() 
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:我包的代碼在引號變量。

相關問題