使用Jsoup在TextView中显示单元格表格数据

问题描述:

我想在滑雪度假区的过去24小时内在TextView中显示Snow。我使用了CSS路径并尝试了其他方式,但没有任何反应,TextView不显示任何内容。使用Jsoup在TextView中显示单元格表格数据

的网页:http://www.arizonasnowbowl.com/resort/snow_report.php

的CSS路径:#container的> div.right> table.interior> TBODY> TR:第n个孩子(2)> td.infoalt

private class Description extends AsyncTask<Void, Void, Void> { 

    String desc; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     mProgressDialog = new ProgressDialog(Snowreport.this); 
     mProgressDialog.setTitle("Snow Report"); 
     mProgressDialog.setMessage("Loading..."); 
     mProgressDialog.setIndeterminate(false); 
     mProgressDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      // Connect to the web site 
      Document document = Jsoup.connect(url).get(); 
      Elements elms = document.select("td.infoalt"); 
      for(Element e:elms) 
       if(e.className().trim().equals("infoalt")) 
       //^^^<--trim is required as, 
       // their can be leading and trailing space 
       { 

        TextView txtdesc = (TextView) findViewById(R.id.snowp24); 
        txtdesc.setText((CharSequence) e); 


       } 



      mProgressDialog.dismiss(); 

      } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

     return null; 
    } 

代码:

Element div = doc.getElementById("contentinterior"); 
Elements tables = div.getElementsByTag("table"); 
Element table = tables.get(1); 

String mSnow = table.getElementsByTag("tr").get(1).getElementsByTag("td").get(1).text(); 

你对于选择参数可能有错误的String。通过在Chrome浏览器中右击,轻松完成网页的“检查元素”,即可找到用作Document.select()参数的正确选择。

下面的代码可能会产生更好的结果给你:

final Elements tableElements = response.parse() 
        .getElementsByClass("info") 
        .select("td"); 

for (Element element : tableElements) { 

    String string = element.getElementsByClass("infoalt").text().trim() 

    Log.d("Jsoup", string); 

} 

好运和快乐编码!

+0

谢谢!!!!我收到消息“无法解析符号响应” – 2015-02-08 14:48:24

+0

您需要在上面的代码之前添加一个Jsoup响应。最终Connection.Response响应= Jsoup.connect(mUrl).method(Connection.Method.POST).timeout(10000).execute(); – 2015-02-08 16:53:55