使用javascript提取HTML

Extract HTML with javascript

本文关键字:HTML 提取 javascript 使用      更新时间:2023-09-26

对于所有了解javascript的人来说,这里有一个简单的问题。我制作了一个应用程序,它获取以下代码并将其放入一个变量中:

<div class="article-author">Af <span class="remove_from_bt_touch">:</span>Af Tho
mas S&oslash;gaard Rohde, Berlingske Nyhedsbureau<span class="section-time">&nbs
p;15. jan. 2012
               |
            </span>
<span class="section-category">Danmark</span>
</div>

现在,我想要的是另一个变量,包含上面变量的DATE。所以应该是15。2012年1月。

我该怎么做?

除了说标记是分配给变量的字符串之外,你真的不明白"把它放在变量中"是什么意思:

var m = '<div class="article-author">Af ' +
        '<span class="remove_from_bt_touch">:<'/span>' +
        'Af Thomas S&oslash;gaard Rohde, Berlingske' +
        ' Nyhedsbureau<span class="section-time">&nbsp;' +
        '15. jan. 2012 | <'/span>' +
        '<span class="section-category">Danmark<'/span><'/div>';

如果是这种情况,您可以使用match和正则表达式来获取日期(前提是它正是所示的格式)

var re = /'d'd?'. [a-z]{3}'. [0-9]{4}/;
alert(m.match(re)); // 15. jan. 2012       

然而,如果你的意思是它是页面中的标记,并且你试图在类部分时间的跨度中获取文本,那么你可以使用类似的东西:

// Get all elements with class section-time, use DOM method, 
// querySelectorAll or some other means
var el, els = document.getElementsByClassName('section-time');
// Get the date out of each. Use a regular expression as there
// seems to be other stuff in there
var dates = [];
var re = /'d'd?'. [a-z]{3}'. [0-9]{4}/;
for (var i=0, iLen=els.length; i<iLen; i++) {
  el = els[i];
  dates.push((el.innerText || el.textContent).match[0]);
}

或者,您可以使用match在公共父元素的innerHTML上使用上述正则表达式来获取数组中的所有此类日期。

var date = $('.section-time').text();

当然使用jQuery。