使用jquery从HTML源代码中检索描述和关键字

时间:2011-12-31 21:37:21

标签: javascript jquery html

我有一个由Ajax调用返回的html代码块。现在我想从中提取描述和关键字元标记。

success: function (data) {
    //extracting page title by this way and it works as it should be ofc
    var urlTitle = resultback.match(/<title>(.*?)<\/title>/);
    urlTitle = urlTitle[1];

    //extract description
    //Currently using this method to retrieve description
    var startpos, endpos;
    startpos = endpos = 0;
    var urlDescription = "";
    startpos = data.indexOf('<meta name="description" content="') + 31
    endpos = data.indexOf('" />', startpos)
    urlDescription = $.trim(data.substring(startpos, endpos))
    //What if meta tag is like this :
    //<meta content="something" name="Description">
    //thats my point of its "always not gonna work"
}

EDITED

我应该为此创建自己的ReGex,还是已经有了ReGex。

2 个答案:

答案 0 :(得分:0)

您可以使用jQuery的强大功能从返回的数据中提取您需要的任何内容 - 因此您需要的代码实际上非常小。

success: function (data) {
    // turn the result into a jQuery result set
    var $result = $(data),
        urlTitle = $result.find('title').text(), // gets the text of the title tag
        urlDescription = $result.find('meta[name="description"]').attr('content'), // gets the contents of the description metatag.
        urlKeywords = $result.find('meta[name="keywords"]').attr('content'); // gets the contents of the keywords metatag.

所以我基本上将从ajax请求返回的数据转换为jQuery元素,然后我们就可以通过jQuery搜索它来获得我们需要的东西。

答案 1 :(得分:0)

请包含data的值。您的HTML可能无效,当您能够重新创建问题时,找到解决方案总是更容易。

但是,$(data)可能成为元素数组而不是$.find()可以管理的DOM / jQuery对象。我created this example展示了差异,请查看控制台的输出。

$()函数返回一个数组而不是以下的完整jQuery / DOM对象;

$('<html><head><meta name="keywords" content="key, word" /></head><body><div class="customClass">Lorem ipsum</div></body></html>')

请参阅http://api.jquery.com/jQuery/上的“ jQuery(html [,ownerDocument])”部分。

例如,$(data)[0]可能会很好地返回您的title元素。

您还应该check the content type回复。