如何使用JSoup获取动态数据?

时间:2017-12-01 23:55:16

标签: android jsoup

我是android的初学者,我正在尝试创建一个应用程序,从一个从web服务器托管的html文件获取值,该文件从arduino的传感器获取数据。但JSoup只获取第一个值,我不知道如何获得更改的值。

这是MainAcivity.java代码:

Public class MainActivity extends AppCompatActivity {
final String TAG = this.getClass().getSimpleName();
private AnimationDrawable creepyAnimation;
private ImageView creepyImage;
private TextView result;
RequestQueue requestQueue;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    creepyImage = (ImageView) findViewById(R.id.creepy);
    creepyImage.setBackgroundResource(R.drawable.animation);
    creepyAnimation = (AnimationDrawable) creepyImage.getBackground();
    requestQueue = Volley.newRequestQueue(this);
    result = (TextView) findViewById(R.id.textView);
    getWebSite();



}
private void getWebSite(){

    new  Thread(new Runnable() {
        @Override
        public void run() {
            final StringBuilder  builder = new StringBuilder();
            try {
                Document doc = (Document) Jsoup.connect("http://munhoz-unifei.000webhostapp.com/").get();
                Element valor1 = doc.getElementById("sala");
                Element valor2 = doc.getElementById("quarto");

                builder.append(valor1.attr("sala")).append("xxx: ").append(valor1.text()).append("\n");
                builder.append(valor2.attr("quarto")).append("lalala: ").append(valor2.text()).append("\n");

               /*
                for (Element element : valor){
                    builder.append(element.attr("sala"))
                            .append("\n").append("text: ").append(element.text());


                }
               */
            }catch (IOException e){
                builder.append("ERROR: ").append(e.getMessage()).append("\n");
            }
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    result.setText(builder.toString());


                }
            });
        }
    }).start();



}

}

我只想在应用程序上更改值,因为它在网站上发生了变化。有人可以给我一个暗示或如何做这项工作的例子吗?

1 个答案:

答案 0 :(得分:0)

Jsoup只能解析或处理服务器发送的html。 客户端上的javascript生成的DOM的任何部分都无法通过Jsoup进行解析。

您可以尝试使用selenium Web自动化来获取浏览器呈现的html。