我想从网站获取数据,我可以从代码获取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”,这可能吗?
答案 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=
和;
对将其包围。那么它将已经是一个变量,无需解析。