跨域读取Twitter微博的代码,是这样写的博文
优采云 发布时间: 2021-05-21 21:18跨域读取Twitter微博的代码,是这样写的博文
我最近才刚开始学习JavaScript,我在教程中看到了有关跨域阅读Twitter微博的代码,其编写方式如下
window.onload = init;
function init() {
var interval = setInterval(handleRefresh, 3000);
handleRefresh();
}
function handleRefresh() {
console.log("here");
var url = "http://gumball.wickedlysmart.com" +
"?callback=updateSales" + //利用callback回调updateSales
//"&lastreporttime=" + lastReportTime +
"&random=" + (new Date()).getTime();
var newScriptElement = document.createElement("script");
newScriptElement.setAttribute("src", url);
newScriptElement.setAttribute("id", "jsonp");
var oldScriptElement = document.getElementById("jsonp");
var head = document.getElementsByTagName("head")[0];
if (oldScriptElement == null) {
head.appendChild(newScriptElement);
}
else {
head.replaceChild(newScriptElement, oldScriptElement);
}
}
function updateSales(jsonp_sales) {
var salesDiv = document.getElementById("sales");
for (var i = 0; i < jsonp_sales.length; i++) {
var sale = jsonp_sales[i];
var div = document.createElement("div");
div.setAttribute("class", "saleItem");
div.innerHTML = jsonp_sale.name + " sold " + jsonp_sale.sales + " gumballs";
//salesDiv.appendChild(div);
if (salesDiv.childElementCount == 0) {
salesDiv.appendChild(div);
}
else {
salesDiv.insertBefore(div, salesDiv.firstChild);
}
}
if (sales.length > 0) {
lastReportTime = jsonp_[jsonp_sales.length-1].time;
}
}
所以我想当然我会尝试更改为新浪微博的API,当然您必须先申请它
更换后,我得到了此链接(新浪微博的API接口,现在仅允许读取我的微博帐户的内容,并且只能读取5个微博=-=以后我会努力学习,我自己,让我们抓取数据...)
var url = "https://api.weibo.com/2/statuses/user_timeline.json?uid=你的ID可以从自己微博链接地址查,是一串数字&access_token=这里是token&callback=updateSales" ;
我尝试了一下,发现没有成功,所以我使用Firefox进行调试,发现jsonp_sales可能有问题,如下所示
展开,找到
换句话说,博客文章存储在jsonp_sales.data.statuses [i] .text中,因此请修改代码
function updateSales(jsonp_sales) {
var salesDiv = document.getElementById("sales");
var length=jsonp_sales.data.statuses.length;
for (var i = 0; i < length; i++) {
var div = document.createElement("div");
div.setAttribute("class", "saleItem");
div.innerHTML = jsonp_sales.data.statuses[i].text;
salesDiv.appendChild(div);
if (salesDiv.childElementCount == 0) {
salesDiv.appendChild(div);
}
else {
salesDiv.insertBefore(div, salesDiv.firstChild);
}
}
}
最终成功,以下是在网页上阅读的原创博客文章,尚未处理
从开始学习JavaScript以来,我发现Firefox的调试工具大有帮助。我的技能有限,我仍然需要继续学习
我希望它对所有人都有帮助