我正在开发一个Android项目,我从网络流中收集数据并在应用程序中使用它。另一位成员正在项目的网络侧工作,将我使用的数据推送到网页供我收集。
数据采用JSON格式,我编写了一个解析器,可根据需要解析数据。麻烦的是,当我连接到我想要的URL时,我无法从中获取JSON数据。
网页的用户界面显示我需要的JSON,但它不在源代码中。当我抓住网页时,我得到的是没有数据的源代码 这是我连接到的网址:
http://ec2-54-194-27-150.eu-west-1.compute.amazonaws.com:8080/eirwig-spring-mvc/tweeter-single
这里展示了我需要的内容:
{ "id": "451355222041182208",
"text": "And @Andrewgobrien_ !",
"user": "darraghosulliv4",
"profileImageUrl": "http://pbs.twimg.com/profile_images/441638045100834816/8xZggJsT_normal.jpeg",
"con": "Ireland",
"lat": 51.86972925,
"lng": -8.42925046,
"countries": {"United Kingdom":2442,"Ireland":8401}, "tweetCount": 10843 }
这里是网址的源代码:
<!DOCTYPE html>
<html>
<body>
<h1>Latest Tweet :</h1>
<div id="Tweet"></div>
<script>
if (typeof (EventSource) !== "undefined") {
var source = new EventSource( "/eirwig-spring-mvc/TwitterIreland");
source.onmessage = function( event) {
document.getElementById("Tweet").innerHTML = event.data + "<br><br>";
};
} else { document .getElementById("Tweet").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script>
</body>
</html>
有什么方法可以从页面的用户端而不是源代码端收集数据?
答案 0 :(得分:0)
最简单的方法是使用代码来获取消息流:
var source = new EventSource( "/eirwig-spring-mvc/TwitterIreland");
source.onmessage = function( event) {
... do the processing here ...
};
要查询HTML,您可以尝试无头浏览器,例如PhantomJS。这将允许在2秒后解析页面内容,当时某些推文已经可用:
var page = require('webpage').create();
page.open('http://google.com', function () {
setTimeout(function() {
console.log(page.content);
}, 2000);
phantom.exit();
});