从HTML字符串中获取jQuery对象

时间:2011-08-10 20:48:15

标签: javascript jquery web-scraping

我有一个AJAX请求,它抓住维基百科页面的来源:

$.ajax({
    url: "TrollWikipedia.ashx",
    data: {
        url: "http://en.wikipedia.org/wiki/20s",
    },
    type: "GET",
    success: function (html) {
        var page = $(html);
        alert(page.find("#content").length); //Alerts 0
        alert(page.html()); //alerts null
    }
});

它成功返回页面的来源(我有一个它返回的字符串的副本here on jsFiddle)。

问题:我似乎无法从HTML中创建一个jQuery对象(就像他们here一样)。出于某种原因,它似乎没有正确创建对象。我做错了什么?

2 个答案:

答案 0 :(得分:1)

html数据似乎被严重解析(可能在html代码中缺少结束div标记),使用:

$.ajax({
    url: "TrollWikipedia.ashx",
    data: {
        url: "http://en.wikipedia.org/wiki/20s",
    },
    type: "GET",
    datatype: "html",
    success: function (html) {

        html=html.replace(/(<body [^>]*>)/i, '$1<div>').replace(/(<\/body>)/i, '</div>$1');
        var page = $(html);
        alert($("#content",page).length); //Alerts 1
        alert(page.html()); //alerts html
    }
});

答案 1 :(得分:0)

html字符串包含指向en.wikipedia.org网站的链接,因此当我们执行$(html) jQuery时,由于html标记内的跨域脚本调用可能会出现异常在$(html)

之后你没有得到任何东西