只想拉JSON Class而不是所有数据

时间:2012-02-08 04:03:51

标签: javascript jquery json ajax yql

尝试仅使用$.getJSON和YQL从具有唯一名称的类中提取文本。现在它可以提取所有数据并删除标签。任何人都知道这是否可以实现?

  function filterData(data){
    // filter all the nasties out
    // no body tags
    data = data.replace(/<?\/body[^>]*>/g,'');
    // no linebreaks
    data = data.replace(/[\r|\n]+/g,'');
    // no comments
    data = data.replace(/<--[\S\s]*?-->/g,'');
    // no noscript blocks
    data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g,'');
    // no script blocks
    data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g,'');
    // no self closing scripts
    data = data.replace(/<script.*\/>/,'');

    // the below doesn't work of course, but if I could use jQuery I would do as follows:
    data = $(data).find('.count').text();
    return data;
  }

以下是它提取的JSON的一部分:

"div": [
             {
              "id": "store-page-rating",
              "div": [
               {
                "id": "store-six-month-rating",
                "div": {
                 "style": "float:left;",
                 "span": {
                  "class": "rating",
                  "img": {
                   "alt": "Rating 8.68/10",
                   "class": "stars fourhalf",
                   "src": "http://images4.resellerratings.com/CDN-1328669559/static/images/blankstar.gif",
                   "style": "width: 80px; height: 16px;",
                   "title": "Rating 8.68/10"
                  },
                  "span": [
                   {
                    "class": "count",
                    "content": "27"
                   },

如何在课程“count”上显示“27”而不是域上的所有数据?

2 个答案:

答案 0 :(得分:0)

我认为您在此处没有多少选择,yql为您提供代理,以查询不在您的域上的资源。您可以创建自己的服务器端代理,可以过滤结果并以json格式返回所需的输出。

答案 1 :(得分:0)

我必须做的并且不知道的是在YQL语句结束时使用XPATH。

    select content from html where url="http://www.resellerratings.com/store/Burkett_Restaurant_Equipment_Supplies"
 and xpath="//span[@class='count']"

See here