AJAX解析+ Yahoo YQL返回没有结果?

时间:2012-01-10 21:47:34

标签: javascript jquery yql

我正在编写一个脚本,通过浏览Yahoo的YQL从外部网站获取所有<table>个元素。这最近运作良好,但它从今天开始停止工作。我不完全确定为什么,所有网站都使用这个代码:

<script type="text/javascript">
$(document).ready(function () {
    var container = $('#target');
    function doAjax(url) {
        if (url.match('^http')) {
            $.getJSON("http://query.yahooapis.com/v1/public/yql?" 
            + "q=select%20*%20from%20html%20where%20url%3D%22" 
            + encodeURIComponent(url) 
            + "%22&format=xml'&callback=?", 
            function (data) {
                if (data.results[0]) {
                    var fullResponse = $(filterData(data.results[0])),
                        justTable = fullResponse.find("body");
                    container.append(justTable);
                } else {
                    var errormsg = '<p>Error: could not load the page.</p>';
                    container.html(errormsg);
                }
            });
        } else {
            $('#target').load(url);
        }
    }
    function filterData(data) {
        data = data.replace(/<?\/body[^>]*>/g, '');
        data = data.replace(/[\r|\n]+/g, '');
        data = data.replace(/<--[\S\s]*?-->/g, '');
        data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g, '');
        data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g, '');
        data = data.replace(/<script.*\/>/, '');
        data = data.replace(/<img[^>]*>/g, '');
        return data;
    }
    doAjax('http://www.google.com');
});
</script>

我将网址更改为google并将其更改为找到<body>标记而不是<table>标记,以便更好地显示其无效。我查看了它要求的网址,但没有显示任何内容。不知道问题是什么。

2 个答案:

答案 0 :(得分:0)

您是否检查过您抓取的“外部网站”是否有结构变化? 如果它之前已经工作,现在已经不存在了,那么我的建议就是网站结构发生了变化。

答案 1 :(得分:0)

看起来问题是YQL失败了吗?我刚刚测试了它,它运行得很好。我希望他们将来能告诉我们是否发生了停电。