【问题标题】:Best practice for formatting scraped HTML格式化抓取的 HTML 的最佳实践
【发布时间】: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


【解决方案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=?",

【讨论】:

  • 我认为从长远来看这是最好的解决方案,数据将更容易处理。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多