解析网页内容,而不是源代码

时间:2014-04-02 13:53:30

标签: java android json spring parsing

我正在开发一个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>

有什么方法可以从页面的用户端而不是源代码端收集数据?

1 个答案:

答案 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();
});