我是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();
}
}
我只想在应用程序上更改值,因为它在网站上发生了变化。有人可以给我一个暗示或如何做这项工作的例子吗?
答案 0 :(得分:0)
Jsoup只能解析或处理服务器发送的html。
客户端上的javascript生成的DOM
的任何部分都无法通过Jsoup
进行解析。
您可以尝试使用selenium Web自动化来获取浏览器呈现的html。