格式化抓取HTML的最佳做法

问题描述 投票:2回答:1

我继承了一些代码,这些代码使用YQL查询从外部站点获取所有HTML。 然后将数据过滤,然后输出到容器。 YQL查询不是返回XML,而是返回HTML,我曾尝试将格式更改为JSON,但是没有运气。 也许我搞砸了语法。

这是YQL查询:

$.getJSON("http://query.yahooapis.com/v1/public/yql?" +
                "q=select%20*%20from%20html%20where%20url%3D%22" +
                encodeURIComponent(url) +
                "%22&format=JSON&callback=?",

然后将此数据传递到此过滤器函数(这不是完整的代码段)

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(/<p>5\) \{ return; }.* \} \}; <\/p>/, '');
        data = data.replace(/<body[^>]*>/g, '');
        data = data.replace(/<hr[^>]*>/g, '');
        data = data.replace(/<img[^>]*>/g, '');
        data = data.replace(/<table[^>]*>/g, '<table>');

        return data;
}

我觉得必须有更好的方法将返回的HTML数据放入某种模板或某种东西中,我对jQuery非常陌生,对您的帮助非常感谢!

javascript jquery html yql
1个回答
1
投票

您希望将它们作为JSON抓取,以便在jQuery中更轻松地处理。 您只需要确保将大写JSON更改为小写json即可从API获取JSON输出。

$.getJSON("http://query.yahooapis.com/v1/public/yql?" +
                "q=select%20*%20from%20html%20where%20url%3D%22" +
                encodeURIComponent(url) +
                "%22&format=json&callback=?",
© www.soinside.com 2019 - 2024. All rights reserved.