【发布时间】:2014-05-08 13:51:55
【问题描述】:
我继承了一些使用 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 很不熟悉,非常感谢任何帮助!
【问题讨论】:
-
这很奇怪......我一直从该服务收到 JSON,但我已经多年没有使用它了。
-
我只是将 HTML 放到一个不可见的 DOV (
$("#invisible").html(data)) 中,然后使用普通的 jQuery 选择器搜索和删除/清理任何内容。
标签: javascript jquery html yql