从脚本代码获取数据

时间:2018-07-28 20:38:00

标签: javascript php

我想从网站获取数据,我可以从代码获取url数据吗?

示例代码:

<script type="application/json" id="store">
{
    "url":{"host":"localhost"},

    "resources":
    {
        "xxfff":
        {
            "stream":
            {
                "streamId":"","duration":212714,"videos":
                [
                    {
                        "url":"www.test.com"
                    },
                    {
                        "url":"www.site.net"
                    }
                ]
            }
        }
    },
}
</script>

我只想从脚本代码中获取“ www.site.net”,这可能吗?

2 个答案:

答案 0 :(得分:0)

这是绝对可能的。为了进行演示,我将向您展示如何首先创建这样的元素,然后如何检索数据。如果您是手动将代码放入script标签中,建议先将其字符串化。

let src = document.createElement('script');

src.setAttribute('id', 'store');

let json = {
    url : {
        host : "localhost"
    },
    resources : {
        xxfff : {
            stream : {
                streamId : "",
                duration : 212714,
                videos : [
                    {
                        url : "www.test.com"
                    },
                    {
                        url : "www.site.net"
                    }
                ]
            }
        }
    }
};

json = JSON.stringify(json);

src.innerText = json;

const body = document.getElementsByTagName('body')[0];

const footer = document.getElementById('footer');

body.insertBefore(src, footer);

// Now you have created the element, 
// so you reverse the process to get your data

src = document.getElementById('store');

json = src.innerText;

json = JSON.parse(json);

let sites = json.resources.xxfff.stream.videos;

sites.map(site => console.log(site.url));

答案 1 :(得分:0)

如果您的意思是您的脚本标签在网页中的某个位置,则可以使用innerHTML(在此代码段的第一行中)将其作为其他标签读取:

var json=document.getElementById("store").innerHTML;
var data=JSON.parse(json);
var videos=data.resources.xxfff.stream.videos;
var table=document.getElementById("tbl");
videos.forEach(function(urlObj){
  var td=document.createElement("td");
  td.innerHTML=urlObj.url;
  var tr=document.createElement("tr");
  tr.appendChild(td);
  table.appendChild(tr);
});
<script type="application/json" id="store">
{
    "url":{"host":"localhost"},

    "resources":
    {
        "xxfff":
        {
            "stream":
            {
                "streamId":"","duration":212714,"videos":
                [
                    {
                        "url":"www.test.com"
                    },
                    {
                        "url":"www.site.net"
                    }
                ]
            }
        }
    }
}
</script>
<table border="1" id="tbl"></table>

在旁注中,您的原始帖子中有一个多余的逗号(紧接在最后一个大括号之前),使整个事情无效。我删除了它,只是希望它只是一些复制粘贴问题,也许您有更多字段希望将帖子缩短。

此外,如果您立即在页面中生成此数据,则可以将其设为“普通”脚本,并用简单的var data=;对将其包围。那么它将已经是一个变量,无需解析。